由 Aileen Zheng 和 Joel Asante 发表于 2024 年 3 月 7 日,原文来自 高级(300),Amazon QuickSight,分析,商业智能,技术操作指南 永久链接 评论 在本篇文章中,我们将探讨如何利用 Amazon QuickSight 在不同维度上分析数据,获取具体且可操作的见解。QuickSight 允许用户轻松处理数据准备的复杂性,通过使用 分层计算 (LAC),如业务分析师、数据科学家和决策者,可以动态地聚合和分析在视觉层次上未展示的值。用户可以指定计算的具体粒度,并利用不同的 LAC 功能进一步分析数据集,从而减少数据预处理的时间,例如在数据去重案例中的使用。 在本文中,我们将分析 COVID19 数据集,并具体使用 QuickSight LAC 特性中的 LACA 函数,以更好地理解该病毒对美国不同地区的影响,并探讨人口群体、性别、年龄组、症状状态等之间的关系。 分层计算包括两种类型的 LAC 函数: 分层计算 聚合 (LACA) 和 分层计算 窗口 (LACW)。 LACA 函数是最新推出的函数,作为常规表达式如 count、sum、min、max 和 average的扩展。LACA 函数不需要学习新的函数;只需添加一个分组级别作为附加属性。当在指定的粒度下执行计算时,LACA 函数会在分组级别创建内部结果集,并隐式处理视觉级别的聚合。因此,当应用 sum 函数时,您不必担心重复或双重计数。以下是一个示例: sqlsum(Sales [Country]) LACW 函数是现有的窗口函数组,如 sumover()、maxover() 和 minover(),这些函数需要在函数中提供划分和计算级别。通过 LACW 函数,来自 PREAGG 和 PREFILTER 组件的结果会根据 LACW 函数的工作步骤而变化,以便用户能够利用过滤器或在原始数据级别进行操作。在这种情况下,可能会出现重复数据,因此利用 min 聚合函数解决重复性问题十分重要。以下是示例语法: sqlsumover(Sales[Country]preagg) 在选择何时使用 LACA 与 LACW 函数时,需要考虑 QuickSight 的评估顺序或不同粒度计算的顺序。根据用例,您可能在最后使用 LACA 函数进行聚合,或者使用 LACW 预聚合函数在较早阶段进行计算。欲了解更多信息,请参考 使用 Amazon QuickSight 创建高级洞见。 接下来,我们将展示如何在不同用例中使用 LACA 函数分析 COVID19 数据。 在前四个示例中,我们使用自 CDC 提供的 COVID19 案例监控公共使用数据,该数据集包括居住的县和州、性别、人口统计、报告病例的月份以及其他患者级别的数据,示例如下截图: 在本例中,我们希望更好地理解各州女性或男性的 COVID19 病例分布,相较于所有性别的总病例计数。性别列的选项包括女性、男性、缺失、NA、其他和未知。首先,我们创建一个视觉级聚合,以显示各字段在视觉层的分组,然后使用 LACA 函数分析这些分组在计算级别的情况。 在视觉级聚合中,我们选择州resstate和性别sex作为维度。同时,我们选择 casemonth 作为度量,因其不可为空,我们使用它作为计数字段count(casemonth)来计算病例实例的行数。我们还依据州对表进行排序,以查看每个性别类别的病例数量,如下图所示。以阿拉斯加州AK为例,男性和女性病例计数的分布相对接近,共有139592例与143109例。这些数据中还有18596例缺乏性别信息,标记为NA。 接下来,为了查看只按居住州分组的 COVID19 总病例计数,并展示与视觉级聚合的输出差异,我们创建新的 LACA 函数以按 resstate 分组总病例: sqlcount({casemonth}[{resstate}]) 由于 LACA 函数中的分组是固定且在函数中定义的,计算过程并不考虑视觉层的性别分组,这样得出的结果如图示所示。使用 LACA 函数,阿拉斯加总体病例数为 302397,且该值对每个性别选项保持一致。这使我们能够对比每个性别类别的病例计数和总病例数。 我们还添加了额外的计算,以找到每个性别类别病例计数占该州病例总数的比例。我们添加 sum 函数以执行除法,因为 QuickSight 不支持具有聚合和非聚合字段的自定义函数。在阿拉斯加,女性病例的百分比为4616,与病例总数相比。 sqlcount({casemonth})/ sum(count({casemonth} [{resstate}])) 当我们仅关注加利福尼亚州CA的病例时,饼图显示52的总病例属于女性,2的病例为未知。 在下一个示例中,我们首先通过将属性拖动到字段框中来查找按每个州和年龄组分组的病例总数。要找到每个年龄组的 COVID19 病例,而不论所处州,我们添加以下 LACA 函数: sqlcount({casemonth}[{agegroup}]) 我们还计算每个年龄类别在各州的病例与全国每个年龄类别的总病例数的百分比。我们再次添加 sum 函数以执行除法,因为它包含聚合和非聚合字段。 sqlcount({casemonth})/ sum(count({casemonth} [{agegroup}])) 在添加这些计算字段后,我们按照州对表进行排序,如下图所示,专注于马萨诸塞州MA、马里兰州MD和缅因州ME。整体来看,我们可以看到按年龄组分组的各州病例概况,以及各年龄组在美国的病例总数及其百分比比例。在马萨诸塞州,1849 岁患者的病例数量显示出最高的病例比例,达到 2251135614例,而全国范围内该年龄组的总病例数为 50395252例。马里兰州和缅因州表明类似趋势,尽管年龄组中最大数量的病例出现在 1849 岁,但显示的病例百分比较小。在马里兰,比例为 162817449例,在缅因则为 029144762例,这与总病例数相比。 在 COVID19 数据集中,病例分布在不同州,患者报告四种不同的症状状态,分别是:无症状、症状明显、缺失和未知。为了比较报告症状或无症状状态的病例数量,我们使用两个带有条件的嵌套 LACA 函数。 对于第一个函数,我们比较症状病例与其他症状状态下的病例数。我们使用 ifelse 语句指定当 symptomstatus 等于症状明显时,返回 casemonth 的计数字段,并按 resstate 分组。如果 symptomstatus 不等于症状明显,则返回空值。请见以下代码: sqlcount(ifelse({symptomstatus} = Symptomatic {casemonth} null) [{resstate}]) 在视觉级聚合中,我们按 resstate 和 symptomstatus 分组,并添加 casemonth 的计数量作为值,以及我们刚刚创建的 LACA 函数。当我们专注于纽约NY和新泽西州NJ的病例时,可以看到纽约记录的缺失或未知症状状态的病例数量比 2047961 例的症状病例更高。而在新泽西,报告无症状的病例数量明显较低,仅为 304 例,相较于 1317894 例的症状病例大相径庭。 要进行相同类型的无症状病例分析,我们使用第二个带条件的 LACA 函数: sqlcount(ifelse({symptomstatus} = Asymptomatic {casemonth} null) [{resstate}]) 当将这一计算应用于相同的州时,我们现在可以看到,症状、缺失或未知病例所占的比例远远高于记为无症状的纽约州病例。 在此次分析中,我们将使用平均病例报告间隔 casepositivespecimeninterval,即标本采集与确认阳性测试之间的时间以周为单位。我们将比较不同州及其各县的 COVID19 测试效率。报告间隔越低的州或县说明测试和报告过程越高效,越高的间隔可能表示潜在的延迟或效率低下。这些洞见对于公共卫生官员和政策制定者在资源和努力的方向上具有重要意义,以改善需要的测试及报告基础设施。 要比较各州按县分组的平均病例报告间隔,我们首先在视觉层面选择县rescounty、州resstate和报告间隔的平均度量casepositivespecimaninterval。然后,我们添加以下 LACA 函数,只根据州聚合结果。 sqlavg({casepositivespecimeninterval}[{resstate}]) 在我们的示例中,我们专注于佛罗里达州的指标,并以降序排列平均报告间隔,以显示报告间隔最长的县。我们可以看到佛罗里达州的平均报告间隔为 0153 周。然而,在 Taylor,平均间隔为 1003 周,为佛罗里达州各县中最高。相对而言,报告间隔最短的县是 Charlotte,值为 0016 周。我们还添加了条件格式,将报告间隔大于州平均值 0153 的县标记为红色,而小于或等于 0153 的县标记为绿色。 为了展示 LACA 函数的其他使用方式,我们使用 美国各州数据集 和 美国人口数据集,该数据集包含最新的 COVID19 总病例和死亡人数,以及各州的人口统计群体和医院化状态。我们将两个数据集结合在一起,如下图所示,展示了不同日期的累计数据。 由于数据集中包含了不同日期记录的各州病例的多重条目,我们需要确保能够获取每州准确的病例总数,而不重叠记录。 视觉级聚合 cases(Sum) 显示了重复数据,包括来自每个州的多个条目,因为 cases 字段是数据集中所有时间的累计病例。在这种情况下,我们可以使用包含最大值的 LAC 函数按州分组最大病例数。这在无需事先执行数据预处理的情况下去掉了任何重复。请见以下代码: sqlmax({cases}[{States}]) 我们在此次分析中的目标是通过评估平均病例数使用 Amazon QuickSight 的分层计算分析 COVID19 数据集
关键要点
Amazon QuickSight 的分层计算LAC 可以在不同维度上分析数据,提供具有参考性的深度洞见。我们将探索 LACA 函数 在疫情数据分析中的应用,帮助展示分地区、性别、年龄与症状状态的关联及其对 COVID19 感染率的影响。本文涵盖了多个案例,展示了如何利用 QuickSight 的高级功能实现复杂的数据分析。分层计算
数据集 1:COVID19 案例监控公共使用数据
用例 1:比较各州与性别的病例与所有性别的总病例
用例 2:分析每个州按年龄组分组的病例总数及每个年龄组的总病例
用例 3:比较不同症状状态下各州的病例
用例 4:计算各州的中位数和平均病例报告间隔
数据集 2:COVID19 美国州及人口数据
用例 5:去除案例的多重记录

用例 6:比较州际与人口病例平均数