选择正确的计算类型

<< Click to Display Table of Contents >>

当前位置:  附录 > 计算列和计算函数 

选择正确的计算类型

复制链接

为分析选择需要使用的计算类型并不总是一件容易的事。尝试做出决定时,可以考虑以下问题和示例。

1.基本计算还是动态计算

问题 1:组件上是否已经有所有需要的数据值?

如果回答为“是”:您可以使用表计算。

如果回答为“否”:使用基本计算。

示例:

假设有以下两个组件。左侧的组件是一个条形图,其中显示每个省份的总销售额。右侧的组件也显示每个省份的销售额,但销售额未聚合。

将如何为其中的每个组件计算销售额的第 90 个百分位?

CalculateType11

左侧的条形图已通过SUM进行聚合。因此,此视图中没有足够的详细信息来使用动态计算。需要使用基本计算的聚合函数进行计算,通过以下公式为此示例中的每个国家/地区计算销售额的第 90 个百分位:

pthPercentile(col['销售额'], 90)

CalculateType10

但是,右侧的点图包括每个销售订单的数据值。将会显示更大的分布和离群值。视图中有足够的详细信息来使用动态计算。

可以通过使用分布区间(相当于一个动态计算)来计算每个国家/地区销售额的第 90 个百分位。

CalculateType9

两个计算都能得到相同值,但根据可视化项中的详细级别(数据量),从每个计算中收集的细节数据会有所不同。

2.基本计算还是多粒度表达式(LOD)计算

如果组件上没有您需要的所有数据,则需要将计算传递到数据集。这意味着,您必须使用基本计算或LOD表达式。

如果对问题 1 的回答为“否”,请询问自己以下问题:

问题 2:您的问题粒度是否与组件粒度或数据集粒度匹配?

如果回答为“是”:使用基本计算。

如果回答为“否”:使用多粒度表达式(LOD)。

示例:

假设有以下组件,显示每个省份所有订单销售额的第 90 个百分位。

CalculateType12

组件上的维度粒度为【省份】。但是在粒度级别为产品种类的情况下,如果想要知道每个省份销售额的第 90 个百分位是什么,则可以使用以下LOD表达式:

include(col['产品种类']::Sum(col['销售额']))

将此列绑定到标签上,聚合函数选成Pth百分位,P值输入90。则结果如下:

CalculateType13

LOD表达式的工作方式如下:

1)数据在“SUM(销售额)”处开始完全聚合,然后下移至“省份”详细级别:在“省份”处进行“SUM(销售额)”计算。

2)应用LOD计算,数据获得更多粒度:在“省份”+“产品种类”处进行“SUM(Sales)”计算。

3)LOD计算聚合到第90个百分位:在“省份”+“产品种类”处进行“Pth百分位90(SUM(Sales)”计算。

3.动态计算还是多粒度表达式(LOD)计算

在选择动态计算还是LOD计算时,其过程与选择动态计算还是基本计算非常相似。询问自己以下问题:

组件上是否已经有了所有需要的数据值?

如果回答为“是”,则使用动态计算。

如果回答为“否”,则询问自己:您的问题粒度是否与组件粒度或数据集粒度匹配?如果回答为“否”:使用LOD计算。

4.仅使用动态计算

某些场景下只有动态计算有效。这些场景包括:

排名

递归

移动计算

内部行计算

5.SQL语句计算和Mongo管道语句计算

当产品提供的所有基础函数满足不了计算需求时,或者产品提供的基础函数无法下推至数据库,影响直连数据库的查询性能时,且对SQL语法或Mongo管道语句语法比较熟悉时,可以选择SQL语句或Mongo管道语句计算。