在 Amazon QuickSight 中使用等级感知计算
适用于:企业版和标准版 |
通过等级感知计算(LAC),您可以指定要计算窗口函数或聚合函数的粒度等级。LAC 函数有两种类型:等级感知计算 – 聚合(LAC-A)函数和等级感知计算 – 窗口(LAC-W)函数。
等级感知计算 – 聚合(LAC-A)函数
通过 LAC-A 函数,您可以指定在哪个等级对计算进行分组。通过向现有聚合函数(例如 sum() , max()
, count()
)添加参数,您可以定义聚合所需的任何分组依据等级。添加的等级可以是任何维度,其独立于添加到视觉对象的维度。例如:
sum(measure,[group_field_A])
要使用 LAC-A 函数,请在计算编辑器中直接键入这些函数,方法是将预期的聚合等级添加为括号中的第二个参数。以下是用于比较的聚合函数和 LAC-A 函数的示例。
-
聚合函数:
sum({sales})
-
LAC-A 函数:
sum({sales}, [{Country},{Product}])
LAC-A 结果是用方括号 [
]
中的指定级别计算的,可用作聚合函数的操作数。聚合函数的分组依据等级为视觉对象等级,分组依据字段添加到视觉对象的字段井中。
除了在方括号 [ ]
中创建静态 LAC 组密钥外,您还可以通过在方括号中放置参数 $visualDimensions
来使其动态适应视觉对象分组依据字段。这是系统提供的参数,与用户定义的参数截然不同。[$visualDimensions]
参数表示添加到当前视觉对象中分组依据字段井中的字段。以下示例说明如何将组密钥动态添加到视觉对象维度,或将组密钥从视觉对象维度中移除
-
带有动态添加组密钥的 LAC-A:
sum({sales}, [${visualDimensions},{Country},{Products}])
在计算视觉对象等级聚合之前,它会计算按
country
、products
以及分组依据字段井中的任何其他字段分组的销售总额。 -
带有动态移除组密钥的 LAC-A:
sum({sales}, [${visualDimensions},!{Country},!{Products}])
在计算视觉对象等级聚合之前,它会计算按视觉对象分组依据字段井中的字段(
country
和product
除外)分组的销售总额。
您可以在 LAC 表达式中指定添加的组密钥或删除的组密钥,但不能同时指定两者。
以下聚合函数支持 LAC-A 函数:
LAC-A 示例
您可以使用 LAC-A 函数执行以下操作:
-
运行独立于与视觉对象中的等级的计算。例如,如果您进行以下计算,则仅汇总国家/地区等级的销售数量,但不汇总视觉对象中其他维度(区域或产品)的销售数量。
sum({Sales},[{Country}])
-
对不在视觉对象中的维度运行计算。例如,如果您使用以下函数,则可以按区域计算各个国家/地区的平均销售总额。
sum({Sales},[{Country}])
尽管国家/地区不包含在视觉对象中,但 LAC-A 函数首先汇总国家/地区等级的销售额,然后通过视觉对象等级计算生成每个区域的平均销售额。如果未使用 LAC-A 函数来指定登记,则按每个区域的最低粒度等级(数据集的基本等级)计算平均销售额(显示在销售额列中)。
-
将 LAC-A 与其他聚合函数和 LAC-W 函数结合使用。有两种方法可以将 LAC-A 函数与其他函数嵌套。
-
创建计算时,可以编写嵌套语法。例如,LAC-A 函数可以与 LAC-W 函数嵌套,以计算每种产品平均价格的各国家/地区的总销售额:
sum(avgOver({Sales},[{Product}],PRE_AGG),[{Country}])
-
将 LAC-A 函数添加到视觉对象时,可以将计算与您在字段井中选择的视觉对象等级聚合函数进一步嵌套。有关更改视觉对象中字段聚合的更多信息,请参阅 使用字段井在字段上更改或添加聚合。
-
LAC-A 限制
以下限制适用于 LAC-A 函数:
-
所有累加性和非累加性聚合函数都支持 LAC-A 函数,例如
sum()
、count()
和percentile()
。以“if”结尾的条件聚合函数(例如sumif()
和countif()
)和以“periodToDate”开头的周期聚合函数(例如periodToDateSum()
和periodToDateMax()
)不支持 LAC-A 函数。 -
表和数据透视表中的 LAC-A 函数目前不支持行级和列级总计。在图表中添加行级或列级总计时,总数将显示为空白。其他非 LAC 维度不受影响。
-
目前不支持嵌套的 LAC-A 函数。支持与常规聚合函数和 LAC-W 函数嵌套的 LAC-A 函数的有限功能。
例如,有效函数如下所示:
-
Aggregation(LAC-A())
。例如:max(sum({sales}, [{country}]))
-
LAC-A(LAC-W())
。例如:sum(sumOver({Sales},[{Product}],PRE_AGG), [{Country}])
以下函数无效:
-
LAC-A(Aggregation())
。例如:sum(max({sales}), [{country}])
-
LAC-A(LAC-A())
。例如:sum(max({sales}, [{country}]),[category])
-
LAC-W(LAC-A())
。例如:sumOver(sum({Sales},[{Product}]),[{Country}],PRE_AGG)
-
等级感知计算 – 窗口(LAC-A)函数
通过 LAC-W 函数,您可以指定用于计算的窗口或分区。LAC-W 函数是一组可以在预筛选条件或预聚合等级运行的窗口函数,例如 sumover()
、(maxover)
、denseRank
。例如:sumOver(measure,[partition_field_A],pre_agg)
。
LAC-W 函数以前称为等级感知聚合(LAA)。
LAC-W 函数可以帮助您回答以下类型的问题:
-
我有多少客户只下了 1 个采购订单? 或 11 个? 或 50 个? 我们希望视觉对象使用计数作为维度而不是视觉对象中的度量。
-
对于终身支出超过 10 万美元的客户,每个细分市场的总销售额是多少? 该视觉对象应只显示细分市场和每个细分市场的总销售额。
-
每个行业对整个公司利润的贡献(占总利润的百分比)是多少? 我们希望能够筛选视觉对象以显示一些行业,以及它们如何为所展示行业的总销售额做出贡献。但是,我们还希望看到每个行业占整个公司总销售额的百分比(包括筛选出的行业)。
-
与行业平均值相比,每个类别的总销售额是多少? 行业平均值应包括所有类别,即使在筛选后也是如此。
-
我的客户是如何分组到累积支出范围的? 我们想使用分组作为维度而不是指标。
对于更复杂的问题,您可以在 QuickSight 到达设置的评估过程中的特定点之前注入计算或筛选条件。要直接影响您的结果,您可以将计算级别关键字添加到表计算。有关 QuickSight 如何评估查询的更多信息,请参阅 Amazon QuickSight 中的评估顺序。
LAC-W 函数支持以下计算等级:
-
PRE_FILTER
– 在从分析中应用筛选条件之前,QuickSight 会评估预筛选条件计算。然后,将应用在这些预筛选计算上配置的所有筛选器。 -
PRE_AGG
– 在计算显示等级的聚合之前,QuickSight 会执行预聚合计算。然后,将应用在这些预聚合计算上配置的所有筛选器。此工作发生在应用顶部和底部 N 个筛选器之前。
您可以将 PRE_FILTER
或 PRE_AGG
关键字用作以下表计算函数中的参数。在指定计算级别时,可在函数中使用未聚合的度量。例如,您可以使用 countOver({ORDER ID}, [{Customer ID}], PRE_AGG)
。通过使用 PRE_AGG
,您可以指定 countOver
在预聚合级别执行。
默认情况下,每个函数的第一个参数都必须是聚合的度量。如果您使用 PRE_FILTER
或 PRE_AGG
,则对第一个参数使用非聚合度量。
对于 LAC-W 函数,视觉对象聚合默认为 MIN
以消除重复项。要更改聚合,请打开字段的上下文菜单(右键单击),然后选择另一个不同聚合。
有关何时以及如何在实际场景中使用 LAC-W 函数的示例,请参阅 AWS 大数据博客中的以下文章:Create advanced insights using Level Aware Aggregations in Amazon QuickSight