什么是表计算函数

表计算函数就是先拿到数据库里面的数据,然后在有数内存里面做计算。

所以他的计算值是会根据维度的变化而变化的。

举一个常见的例子:很多场景都会用到排名函数,rank()。rank函数在有数上就是一个表计算函数。

比如根据地区对销售额进行rank排序。

有数会先拿到地区和销售额这两个字段的数据,然后在有数上做rank。

这个时候获取到的排名是没有问题的。

但是如果对地区做了筛选,那么就会改变原来的排名。

原来东北是排名在第三位。筛选出东北,东北的排名就变成了1。

这个就是因为我拿到的数据只有东北这一条数据,那么有数在rank()排名的时候,就是对这一条数据进行排序,就会是1。

所以要想排名不改变,有两种方法:

1、写自定义SQL,把排名字段算出来。

2、有数支持:ROW_NUMBER() OVER(PARTITION BY 维度表达式 ORDER BY 度量表达式 [ASC|DESC])函数。新版本