Amazon QuickSight 多数据集关系的数据建模模式
本文深入探讨Amazon QuickSight多数据集关系支持的七种数据建模模式,包括星型模式、雪花模式、星系/星座模式、角色扮演维度、不同粒度事实表、独立刷新计划和运行时行级安全。每种模式均提供表结构、适用场景、实现步骤和SQL查询示例,并讨论高级场景的变通方法和当前限制。
在本文中,我们将从概念转向模式,详细解析Amazon QuickSight多数据集关系支持的数据建模方案。如果您尚未阅读本系列第1部分,建议先了解基础概念和决策框架。
所有多数据集关系目前使用内连接,仅匹配键的行出现在查询结果中,因此数据模型需相应设计。
支持的七种模式
场景1:简单星型模式 这是最常用且推荐的模式。一个中心事实表与多个维度表关联。例如,SALES_FACT事实表通过外键关联CUSTOMER_DIM、PRODUCT_DIM、TIME_DIM和STORE_DIM维度表。适用于按客户细分和区域的销售总额、按月产品类别的收入趋势等分析。所有连接为单跳(事实到维度),无需链式连接。
场景2:雪花模式 雪花模式通过将维度表规范化为多级链来扩展星型。例如,CUSTOMER_DIM关联GEOGRAPHY子维度,再关联REGION子维度。适合按地理层级(国家→州→城市)的销售分析。多跳连接增加了复杂性,建议除非维度非常大,否则应将雪花链预连接为扁平维度。
场景3:星系/星座模式 多个事实表共享公共的维度表(一致维度)。例如,SALES_FACT和RETURNS_FACT共享PRODUCT_DIM和CUSTOMER_DIM,同时各自有专用维度。适用于跨流程分析,比如比较销售与退货,或分析哪些促销导致最多退货。一致维度必须在两个事实表中使用相同的粒度和键。
场景4:角色扮演维度 同一维度表被同一个事实表多次引用,每次扮演不同角色。例如,ORDERS_FACT使用DATE_DIM分别作为订单日期、发货日期和交货日期。在QuickSight中,基于同一物理表创建三个独立数据集,通过表别名在SQL中区分角色。常用于季节性需求分析或运输延迟分析。
场景5:不同粒度的事实表 多个事实表具有不同粒度,但共享维度。例如,DAILY_SALES_FACT(每日每店每产品)与MONTHLY_FORECAST_FACT(每月每店每产品)共享STORE_DIM和PRODUCT_DIM。QuickSight运行时连接自动将细粒度事实聚合到粗粒度后再连接,无需手动预聚合。适用于实际值与预测值的月度比较。
场景6:独立刷新计划 多数据集主题中每个数据集可独立设置刷新计划。高频交易事实表可每小时刷新,缓慢变化的维度可每日或每周刷新,参考表可按月刷新。利用增量刷新降低成本,并单独监控每个数据集的SPICE容量。
场景7:运行时行级安全 多数据集关系在运行时连接中执行行级安全规则,每个数据集独立控制。用户跨多个数据集查询时,仅能看到授权数据。适用于区域销售经理查看本区域数据、部门级访问控制或多租户分析等场景。
总结
本文详细介绍了QuickSight多数据集关系支持的七种数据建模模式,每种模式都提供了表结构、用例、实施步骤和SQL示例。通过合理运用这些模式,用户可以构建灵活高效的分析模型。当前限制包括仅支持内连接,以及某些高级场景需要额外建模步骤。