如何在 Looker 中对指标进行维度化

根据 SQL(以及 Looker)中的一般规则,您无法按聚合函数的结果(在 Looker 中表示为测量)对查询进行分组。您只能按未汇总的字段(在 Looker 中表示为维度)进行分组。 如果您尝试在 Looker 中汇总某个指标,则会看到以下错误

Measures with Looker aggregations (sum, average, min, max, list types) may not reference other measures.

如果您需要一种方法来将衡量指标(COUNT、SUM、AVG、MAX 等)更改为维度,以便按该维度进行分组以进行汇总(例如对 COUNT 求和或对 SUM 求平均值),按该维度进行过滤(在 WHERE 子句中,而不是在 HAVING 子句中),或在探索中对该维度进行数据透视,该怎么办?

使用派生表对衡量指标进行维度化

在 Looker 内部,此解决方案称为对衡量指标进行维度化处理。这是因为您将某个测量值重新定义为 维度。为此,您需要创建一个派生表,并在其 SQL 定义中添加要对其进行维度化处理的测量。

流程

以下示例基于电子商务数据集示例。本示例的目标是根据现有的总收入 type: sum 衡量标准创建 type: average 衡量标准。

以下步骤概述了如何生成基于 SQL 的派生表。您可以选择创建基于 LookML 的派生表(也称为原生派生表 [NDT]),作为 SQL 的替代方案。
  1. 首先,设置探索查询。 选择相应的字段,包括您要对其进行维度化处理的指标。

    在示例用例中,“探索数据”表格会按“用户状态”和“用户 ID”对总收入进行分组:

  2. 数据表中的 SQL 标签页中选择 Open in SQL Runner,以在 SQL Runner 中打开查询:

  3. 在 SQL Runner 中运行查询(点击 Run 按钮)并确认结果后,从 SQL Runner 齿轮菜单中选择 Add to Project 选项,以打开 Add to Project 弹出式窗口。此时,您需要移除派生表 SQL 中的所有行数限制子句,以确保查询中包含所有所需结果。

    您还可以从菜单中选择获取派生表 LookML,以手动将生成的 LookML 复制并粘贴到您的项目中。
  4. 添加到项目弹出式窗口中,从项目下拉菜单中选择一个项目名称,为派生表视图文件输入一个名称,然后选择添加
  5. 现在,派生表位于视图文件中,您可以创建一个汇总维度化测量的测量值。例如,您现在可以为新的总收入维度 order_items_total_revenue 创建 type: average 测量:
          dimension: order_items_total_revenue {
            type:  number
            sql: ${TABLE}.order_items.total_revenue ;;
            value_format_name: usd
          }
    
          measure: average_revenue {
            type:  average
            sql:  ${order_items_total_revenue} ;;
            value_format_name: usd
          }
        
  6. 仔细检查派生表中是否定义了主键
  7. 将新视图联接到原始探索(或创建新的探索),以便使用新字段创建查询和内容。

总结

使用 Looker 派生表对测量进行维度化可解锁新功能,并让您能够利用数据获得更多数据洞见。借助维度化衡量标准分组、在 WHERE 子句(而非 HAVING 子句)中按该维度标准过滤、按该维度标准进行数据透视,以及根据该维度标准创建其他维度等功能,您可以将探索查询和内容带入下一个维度。

如需详细了解如何创建和使用派生表,以及相关注意事项和性能优化提示,请访问派生表文档页面。