<< Click to Display Table of Contents >> 选择正确的计算类型复制链接 |
为分析选择需要使用的计算类型并不总是一件容易的事。尝试做出决定时,可以考虑以下问题和示例。
1.基本计算还是动态计算
如果回答为“是”:您可以使用表计算。
如果回答为“否”:使用基本计算。
➢示例:
假设有以下两个组件。左侧的组件是一个条形图,其中显示每个省份的总销售额。右侧的组件也显示每个省份的销售额,但销售额未聚合。
将如何为其中的每个组件计算销售额的第 90 个百分位?
左侧的条形图已通过SUM进行聚合。因此,此视图中没有足够的详细信息来使用动态计算。需要使用基本计算的聚合函数进行计算,通过以下公式为此示例中的每个国家/地区计算销售额的第 90 个百分位:
pthPercentile(col['销售额'], 90)
但是,右侧的点图包括每个销售订单的数据值。将会显示更大的分布和离群值。视图中有足够的详细信息来使用动态计算。
可以通过使用分布区间(相当于一个动态计算)来计算每个国家/地区销售额的第 90 个百分位。
两个计算都能得到相同值,但根据可视化项中的详细级别(数据量),从每个计算中收集的细节数据会有所不同。
2.基本计算还是多粒度表达式(LOD)计算
如果组件上没有您需要的所有数据,则需要将计算传递到数据集。这意味着,您必须使用基本计算或LOD表达式。
如果对问题 1 的回答为“否”,请询问自己以下问题:
问题 2:您的问题粒度是否与组件粒度或数据集粒度匹配?
如果回答为“是”:使用基本计算。
如果回答为“否”:使用多粒度表达式(LOD)。
➢示例:
假设有以下组件,显示每个省份所有订单销售额的第 90 个百分位。
组件上的维度粒度为【省份】。但是在粒度级别为产品种类的情况下,如果想要知道每个省份销售额的第 90 个百分位是什么,则可以使用以下LOD表达式:
include(col['产品种类']::Sum(col['销售额']))
将此列绑定到标签上,聚合函数选成Pth百分位,P值输入90。则结果如下:
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管道语句计算。