亚马逊AWS官方博客

在 Amazon QuickSight 中使用表计算进行高级分析

原文链接:https://aws.amazon.com/blogs/big-data/advanced-analytics-with-table-calculations-in-amazon-quicksight/

Amazon QuickSight 最近推出了表计算功能,让您能够对数据执行复杂的计算,以获得有意义的见解。在本博文中,我们将一起来看几个对样本销售数据集应用表计算的示例,以便您根据自己的需求开始使用这一新功能。

单击此处可获取示例中所用样本数据集。

表计算是什么?

在 Amazon QuickSight 中使用表计算可以获得时段到时段的趋势指标。您还可以在创建计算时指定特定的时间段,来计算该时段内的指标,或针对某固定时间窗口的计算进行基准比对。您也可以将所有这些任务在自定义的粒度级别去执行。例如,您可以计算行业内销售额的同比增长,或某个特定行业在某个州内的贡献百分比。您还可以计算一年内的累计月销售额、某个行业的销售额在某个州的排名等。

您可以使用一组函数来计算这些指标,包括 runningSum、percentOfTotal 和 percentDifference,以及若干基础分区函数。在此情况下可以使用的基础分区函数包括 sum、avg、count、distinct_count、rank 和 denseRank,以及可用于计算分区的最小值和最大值的 minOver 和 maxOver。

分区函数

在应用这些计算之前,请先查看下面对分区函数的简要介绍。通过分区,您可以指定包含计算的时段的维度。也就是说,分区帮助定义执行计算的窗口。

例如,我们来计算下各个细分市场中每个行业的平均销售额。先在图表中添加行业、细分市场和销售额。向表中添加正则计算字段 avg(sales),得出行业中每个细分市场的平均值,而不是每个行业的平均值。为实现此目的,创建一个使用 avgOver 计算的计算字段。

avgOver(aggregated measure, [partition by attribute, ...])

 

此处的“aggregated measure 聚合度量”是指当度量按图表中的维度分组时对其执行的计算。此计算需在每个行业分区中应用平均值之前先执行。

Average by industry = avgOver(sum(sales), [industry])

 

类似地,您可以分别使用 sumOver、minOver、maxOver 和 countOver 函数来计算销售总额、最低销售额、最大销售额以及每个行业内细分行业的数量。

基准和实际销售额

我们来看一下另一个使用案例,看看在某个州内,在与该州的平均销售额进行基准比较时每个行业的表现。

为此,向表图表中添加州、行业和销售额,并按州排列。要计算基准值,请创建一个计算字段,并按 State 维度对 avgOver 函数分区。

avgOver(aggregated measure, [partition by attribute, ...])

State average = avgOver(sum(Sales), [ship_state])

加入我们已将州、行业和销售额添加到表中,则 sum(sales) 会计算州内某个行业的总销售额。要通过基准值确定此值的方差,只需创建另一个计算字段。

Actual vs. benchmark = sum(sales) – State average

 

与前面的计算一样,您可以使用 percentOfTotal 计算得出行业内的销售额与州内的总销售额相比的百分比。

运行总和、差值和百分比差值

我们可以通过以下几个使用案例说明几个其他函数。

使用案例 1:作为销售分析师,我想创建一份报告,按月显示每个行业从每个日历年开始到结束的累计销售额。

为了按行业计算累计月销售额,我需要表格图表中表示的行业、日期和销售额。添加日期字段后,我将聚合更改为月份(如下所示)。

我使用 runningSum 函数为分析添加了一个新的计算字段。runningSum 函数使用如下语法。

runningSum(aggregated measure, [sort attribute ASC/DESC, ...], [partition by attribute, ...]

此处的“aggregated measure”是指当按图表中包含的维度进行分组时我们想要的聚合。“sort attribute”是指在执行运行总和之前我们需要排序的属性。如前所述,按属性分区指定维度的每个值中包含运行总和的维度。

在此使用案例中,我们要度量的聚合度量是 sum(sales),按日期排序并按行业和年份划分。插入这些属性,我们得到以下公式。

runningSum(sum(sales),[Date ASC],[industry, truncDate("YYYY",Date)])

 

排序字段和分区列表中的方括号是必需的。然后我们将此计算字段添加到图表中,并对行业进行排序。如果没有年份分区,runningSum 将计算从 2016 年到 2017 年底所有月份的累计总和。

您还可以使用折线图和其他图表类型表示累计月销售额。在折线图中,线的斜率表示该行业在一年内的增长率。例如,科技行业 2016 年的增长似乎较缓慢,但在 2017 年则迅速增长。

您还可以使用组合图表表示总销售额和累计销售额,并按行业筛选。

使用案例 2:接下来我们来计算一个日历年内每个行业的月销售额增长百分比。我们可以使用 percentDifference 函数来实现这一目的。此函数计算某个指标与前一个或后一个指标相比的百分比差值,按指定维度集进行排序和分区。

percentDifference(aggregated measure, [sort attribute ASC/DESC, ...], -1 or 1, [partition by attribute, ...])

在此公式中,值 -1 或 1 表示是否应分别计算前一个值或后一个值的差值。插入必填字段,得出以下公式。

percentDifference(sum(sales),[Date ASC],-1,[industry, truncDate("YYYY",Date)])

如果您只想得到差值,请使用差值函数。

difference(aggregated measure, [sort attribute ASC/DESC, ...], lookup index -1 or 1, [partition by attribute, ...])

 

可用性

表计算功能在所有支持的 AWS 区域里针对标准版和企业版均已推出。有关更多信息,请参阅 Amazon QuickSight 文档

 

本篇作者

Sahitya Pandiri

Amazon Web Services 的技术项目经理。Sahitya 有5年以上产品/项目管理经验,并在零售、医疗保健和分析领域构建了多款产品。她喜欢解决问题,并利用技术来简化流程。