利用多数据集主题在 Amazon Quick 中构建跨数据集的统一语义层
Amazon Quick Sight 推出多数据集主题(公开预览),允许用户在一个主题中添加最多 12 个数据集并定义关系,AI 聊天机器人可自动遍历关系生成跨数据集查询,实现统一语义层,简化分析。
Amazon Quick 是一项 AI 驱动的统一智能服务,连接结构化数据和 unstructured 企业内容,使团队能够在一个地方进行探索、分析和行动。Amazon Quick Sight 是 Amazon Quick 中的商业智能(BI)功能,提供交互式仪表板、自然语言查询、像素级完美报告、机器学习(ML)驱动的洞察以及嵌入式分析。Quick 中的主题充当语义层,业务用户可以用自然语言提问并直接从数据中获得答案。
此前,组织通过创建丰富的数据集并将其与主题一对一关联来建模语义层。此外,当 Quick Sight 作者构建分析时,一个可视化只能来源于一个数据集。Quick Sight 将数据集表示为单一扁平表。如果客户的数据源包含多个表,Quick Sight 要求客户通过将源表连接成 Quick Sight 数据准备中的单个表来定义数据集。这种单一非规范化表的方法最初旨在通过避免运行时连接来提供更好的性能。对于简单数据集(在 Quick Sight 早期阶段占大多数用例)效果良好。如今,我们正在发展这一模型。借助多数据集主题(公开预览),您现在可以在单个主题中添加最多 12 个数据集,并定义它们之间的关系。Quick 聊天机器人会在回答问题时自动遍历这些关系。AI 引擎解释用户意图,识别哪些数据集包含相关列,根据您定义的关系构建适当的 SQL 连接,并返回统一答案。您的数据保持规范化,治理保持集中化,业务用户无需了解底层架构即可获得更丰富的答案。同一多数据集主题可用于构建分析或使用聊天机器人回答问题。
多数据集主题的工作原理
Quick 中的主题是原始数据和业务用户之间的语义层。它封装了元数据、业务规则、关系和上下文,AI 驱动的自然语言查询(NLQ)引擎利用这些信息来解释自然语言问题并将其转换为精确的分析查询。
借助多数据集主题,这个语义层现在通过明确定义的关系跨越多个数据集。架构包括四个层:
- 数据源:您的规范化数据集从支持的源连接到 Quick Sight。在私有预览期间,多数据集主题支持 SPICE(超级快速、并行、内存计算引擎)数据集。公开预览扩展了对 Amazon Redshift、Amazon Athena、Amazon S3 Tables、Snowflake 和 Databricks 的 Direct Query 支持。目前,您不能在同一主题中混合 SPICE 和 Direct Query 数据集。
- 带有或不带目录的数据集丰富:每个数据集独立地通过语义元数据进行丰富,从而提高 NLQ 准确性。丰富包括列描述(解释每个字段代表的含义)、同义词(业务用户可能使用的替代术语)、语义类型(城市、州、货币、日期)、计算字段和字段排除。NLQ 引擎使用这些元数据将自然语言术语映射到正确的列。您现在可以在 Quick 中创建丰富的数据集,或使用 AWS Glue 和 Databricks Unity Catalog 的目录导入。例如,当用户询问“员工人数”时,引擎将定义的同义词匹配到相应的列。
- 多数据集主题:主题作为统一容器,将数据集结合在一起。它包含数据集(预览中最多 12 个)、关系(数据集对之间定义的连接键)、自定义指令(指导 AI 解释领域特定术语的持久自然语言规则)以及权限(所有者可修改,查看者只能提问和使用)。
- 消费:业务用户通过多个界面与主题互动。聊天界面允许用户用自然语言提问,NLQ 引擎解析问题、识别相关列、构建带有适当连接的 SQL 并返回答案。分析工作表允许作者使用主题中多个数据集的字段构建可视化。跨数据集计算可以创建结合不同数据集度量和维度的计算字段。
聊天如何处理跨数据集问题
当业务用户提出跨越多个数据集的自然语言问题时,NLQ 引擎将执行以下步骤:
- 意图解析:引擎通过匹配列名、描述和同义词来识别哪些列映射到用户的术语。它确定哪些数据集包含相关的度量和维度。
- 关系遍历:使用定义的连接键,引擎确定识别数据集之间的最短连接路径。它遵循关系图将事实表连接到必要的维度表。
- SQL 生成:引擎构建带有适当 JOIN 子句、聚合和 GROUP BY 的 SQL 查询。
- 结果呈现:答案以可视化或表格形式返回,并附有生成的 SQL 供检查。
此过程透明,用户可以查看生成的 SQL 以验证使用了正确的数据集和连接。丰富元数据和自定义指令越详细,引擎解释模糊问题的准确性就越高。
工作示例:按客户细分和门店区域显示总销售额
考虑问题:“按客户细分和门店区域显示总销售额。”
步骤 1 – 意图解析:引擎映射“总销售额” → SUM(SALES_FACT.SALE_AMOUNT),“客户细分” → CUSTOMER_DIM.SEGMENT(通过同义词“细分”匹配),“门店区域” → STORE_DIM.REGION(通过同义词“区域”匹配)。
步骤 2 – 关系遍历:引擎识别回答此问题需要三个数据集:SALES_FACT、CUSTOMER_DIM 和 STORE_DIM。使用定义的关系:SALES_FACT.CUSTOMER_ID → CUSTOMER_DIM.CUSTOMER_ID;SALES_FACT.STORE_ID → STORE_DIM.STORE_ID。它构建了一条通过 SALES_FACT 作为中心的两跳连接路径。
步骤 3 – SQL 生成:引擎产生:SELECT c.SEGMENT AS customer_segment, s.REGION AS store_region, SUM(f.SALE_AMOUNT) AS total_sales FROM SALES_FACT f JOIN CUSTOMER_DIM c ON f.CUSTOMER_ID = c.CUSTOMER_ID JOIN STORE_DIM s ON f.STORE_ID = s.STORE_ID GROUP BY c.SEGMENT, s.REGION ORDER BY total_sales DESC。
步骤 4 – 结果呈现:答案以可视化或表格形式呈现,用户可以使用解释功能检查生成的 SQL。
功能可用性
多数据集主题正在逐步推出。下表总结了 Quick Sight BI 可视化构建的功能可用性。对于在 Quick 聊天机器人中使用主题,没有此类限制。
解决方案概述
在本演练中,我们为 AnyCompany 的零售分析场景构建一个多数据集主题。该场景使用五个数据集,建模为星型模式。数据集包括:SALES_FACT(交易级销售数据)、RETURN_FACT(产品退货记录)、CUSTOMER_DIM(客户属性)、PRODUCT_DIM(产品目录)、STORE_DIM(门店位置)。
前提条件:拥有启用 Amazon Quick Enterprise Edition 的 AWS 账户,具有作者或管理员角色,代表星型模式的数据集(事实表和维度表)加载到 SPICE 或可通过受支持的 Direct Query 源访问,具有创建主题和管理数据集的权限,熟悉基本数据建模概念。
创建并丰富每个数据集
丰富化弥合了技术列名与业务用户实际谈论数据之间的差距。通过添加描述、同义词和语义类型,您教会 NLQ 引擎您组织的词汇。这项投资会在用户提出的每个问题上得到回报。它是使多数据集主题准确而不仅仅是功能性的基础。
对于每个数据集:从 Quick 控制台左侧窗格中,在 Quick Sight 下选择“数据”,选择一个数据集并选择“编辑”,选择“输出”选项卡,为每个列添加描述、同义词和语义类型。排除内部或未使用的字段,如代理键、审计时间戳和 ETL 标志。选择“保存并发布”。示例丰富化表格展示了 STORE_DIM 数据集的列描述、同义词和语义类型。
创建包含多个数据集的主题
丰富数据集后,创建一个主题将它们组合成单个语义层。从 Quick 控制台左侧窗格中,在 Quick Sight 下选择“数据”,导航到“主题”选项卡并选择“创建主题”。输入主题名称和描述,选择“添加数据集”,选择所有相关数据集。定义关系:上传 JSON 文件指定数据集之间的连接键。添加自定义指令处理领域特定术语。设置权限。然后保存主题。
使用主题进行聊天和分析
创建主题后,业务用户可以通过聊天或分析使用它。在聊天中,用户可以直接提问,引擎会返回基于多个数据集的答案。在分析中,作者可以构建使用主题中多个数据集字段的可视化。跨数据集计算允许创建跨数据集的度量。
总之,多数据集主题通过将多个数据集统一在一个语义层下,简化了跨数据集的分析,使业务用户能够以自然语言获得更丰富的洞察,同时保持数据的规范化和治理的集中化。