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

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

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_revenuetype: 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),对其进行透视并创建其他维度 您可以根据这些数据,将您的“探索”查询和内容带到下一个维度。

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