aggregate_table

用法

explore: explore_name {
  aggregate_table: table_name {

    query:  {
      dimensions: [dimension1, dimension2, ... ]
      measures: [measure1, measure2, ... ]
      sorts: [field1: asc, field2: desc, ... ]
      filters: [field1: "value1", field2: "value2", ... ]
      timezone: timezone
    }

    materialization:  {
      ...
    }
  }

  ...

}
层次结构
aggregate_table
默认值

接受
汇总表格的名称、用于定义表的 query 子参数,以及用于定义表的 materialization 子参数,用于定义表的 持久性策略

特殊规则

定义

aggregate_table 参数用于创建汇总表,以最大限度地减少数据库中大型表所需的查询数量。

Looker 使用 汇总感知 逻辑在数据库中查找最小、最有效的可用汇总表格,从而运行查询,同时仍保持正确性。(如需了解汇总表及其创建策略的概览,请参阅汇总感知文档页面。)

对于数据库中非常大的表,您可以创建较小的汇总表,其中包含按各种属性组合分组的数据。这些汇总表充当汇总表或摘要表,Looker 可以在查询时尽可能使用它们来替代原始大型表。

创建汇总表后,您可以在探索中运行查询,以便查看 Looker 使用了哪些汇总表。如需了解详情,请参阅确定查询使用哪个汇总表格部分,该部分位于汇总感知文档页面上。

如需了解汇总表未被使用的常见原因,请参阅汇总感知文档页面上的问题排查部分。

在 LookML 中定义汇总表格

每个 aggregate_table 参数都必须有一个在给定的 explore 中唯一的名称。

aggregate_table 参数具有 querymaterialization 子参数。

query

query 参数用于定义汇总表格的查询,包括要使用的维度和度量。query 参数包含以下子参数:

参数名称 说明 示例
dimensions 探索中要包含在汇总表格中的维度的英文逗号分隔列表。dimensions 字段使用以下格式:

dimensions: [dimension1, dimension2, ...]

此列表中的每个维度都必须在查询的探索的视图文件中定义为 dimension。如果您想在探索查询中包含定义为 filter 字段的字段,可以将其添加到汇总表的查询中的 filters 列表。
dimensions:

  [orders.created_month, orders.country]
measures 探索中要包含在汇总表格中的度量的逗号分隔列表。measures 字段使用以下格式:

measures: [measure1, measure2, ...]

如需了解汇总感知支持的度量类型,请参阅度量类型因素部分,该部分位于汇总感知文档页面上。
measures:

  [orders.count]
filters (可选)向 query 添加过滤条件。过滤条件会添加到生成汇总表格的 SQL 的 WHERE 子句中。

filters 字段使用以下格式:

filters: [field1: "value1", field2: "value2", ...]

如需了解过滤条件如何阻止汇总表格被使用,请参阅过滤条件因素部分,具体请参阅汇总感知文档页面。
filters: [orders.country: "United States", orders.state: "California"]
sorts (可选)为 query 指定排序字段和排序方向(升序或降序)。

sorts 字段使用以下格式:

sorts: [field1: asc|desc, field2: asc|desc, ...]
[orders.country: asc, orders.state: desc]
timezone query 设置时区。如果未指定时区,汇总表格将不会执行任何时区转换,而是使用数据库时区

如需了解如何设置时区,以便将汇总表格用作查询来源,请参阅时区因素部分,该部分位于汇总感知文档页面上。

当您在 IDE 中输入 timezone 参数时,IDE 会自动建议时区值。IDE 还会“快速帮助”面板中显示支持的时区值列表。
timezone: America/Los_Angeles

materialization

materialization 参数用于指定汇总表格的持久性策略,以及 SQL 方言可能支持的其他选项,例如分发、分区、索引和聚簇。

汇总表格必须在数据库中持久化,才能实现汇总感知。汇总表格的 materialization 参数必须具有以下子参数之一,以指定持久性策略:

此外,根据 SQL 方言的不同,汇总表格可能支持以下 materialization 子参数:

如需创建 增量 汇总表格,请使用以下 materialization 子参数:

datagroup_trigger

使用 datagroup_trigger 参数 根据模型文件中定义的现有 数据组 触发 汇总表格 的重新生成:


explore: event {
  aggregate_table: monthly_orders {
    materialization: {
      datagroup_trigger: order_datagroup
    }
    query: {
      ...
    }
  }
  ...
}

sql_trigger_value

使用 sql_trigger_value 参数根据您提供的 SQL 语句触发汇总表格的重新生成。如果 SQL 语句的结果与之前的值不同,则会重新生成表。以下 sql_trigger_value 语句会在日期更改时触发重新生成:

explore: event {
  aggregate_table: monthly_orders {
    materialization: {
      sql_trigger_value: SELECT CURDATE() ;;
    }
    query: {
      ...
    }
  }
  ...
}

persist_for

汇总表也支持 persist_for 参数。不过,persist_for 策略可能无法为汇总感知提供最佳性能。这是因为,当用户运行依赖于 persist_for 表的查询时,Looker 会根据 persist_for 设置检查表的时长。如果表时长超过 persist_for 设置,则会在运行查询之前重新生成表。如果时长小于 persist_for 设置,则会使用现有表。因此,除非用户在 persist_for 时间内运行查询,否则必须先重建汇总表格,然后才能将其用于汇总感知。

explore: event {
  aggregate_table: monthly_orders {
    materialization: {
      persist_for: "90 minutes"
    }
    query: {
      ...
    }
  }
  ...
}

除非您了解限制并具有 persist_for 实现的特定用例,否则最好使用 datagroup_triggersql_trigger_value 作为汇总表的持久性策略。

cluster_keys

借助 cluster_keys 参数,您可以向 BigQuery 或 Snowflake 上的 分区表添加聚簇列。聚簇会根据聚簇列中的值对分区中的数据进行排序,并以最佳大小的存储块组织聚簇列。

如需了解详情,请参阅 cluster_keys 参数文档页面。

distribution

借助 distribution 参数,您可以指定要向其应用分发键的汇总表格中的列。distribution 仅适用于 Redshift 和 Aster 数据库。对于其他 SQL 方言(例如 MySQL 和 Postgres),请改用 indexes

如需了解详情,请参阅 distribution 参数文档页面。

distribution_style

借助 distribution_style 参数,您可以指定如何将汇总表格的查询分发到 Redshift 数据库中的节点:

  • distribution_style: all 表示所有行都完全复制到每个节点。
  • distribution_style: even 指定均匀分发,以便以轮循方式将行分发到不同的节点。

如需了解详情,请参阅 distribution_style 参数文档页面。

indexes

借助 indexes 参数,您可以将索引应用于汇总表格的列。

如需了解详情,请参阅 indexes 参数文档页面。

partition_keys

partition_keys 参数用于定义汇总表格将按其分区的列数组。partition_keys 支持能够对列进行分区的数据库方言。当运行按分区列过滤的查询时,数据库将仅扫描包含过滤数据的分区,而不是扫描整个表。partition_keys 仅受 Presto 和 BigQuery 方言支持。

如需了解详情,请参阅 partition_keys 参数文档页面。

publish_as_db_view

借助 publish_as_db_view 参数,您可以标记汇总表格以在 Looker 外部进行查询。对于 publish_as_db_view 设置为 yes 的汇总表格,Looker 会在数据库中为汇总表格创建稳定的数据库视图。稳定的数据库视图是在数据库本身上创建的,因此可以在 Looker 外部进行查询。

如需了解详情,请参阅 publish_as_db_view 参数文档页面。

sortkeys

借助 sortkeys 参数,您可以指定要向其应用常规排序键的汇总表格的一列或多列。

如需了解详情,请参阅 sortkeys 参数文档页面。

increment_key

如果您的 方言支持增量 PDT,您可以在项目中创建 增量 PDT。增量 PDT 是一种 永久性派生表 (PDT),Looker 通过向表中添加最新数据来构建它,而不是完全重建表。如需了解详情,请参阅增量 PDT文档页面。

汇总表是一种 PDT,可以通过添加 increment_key 参数以增量方式构建。increment_key 参数用于指定应查询最新数据并将其附加到汇总表格的时间增量。

如需了解详情,请参阅 increment_key 参数文档页面。

increment_offset

increment_offset 参数用于定义在向汇总表格附加数据时将重建的先前时间段数(以增量键的粒度为单位)。对于增量 PDT 和汇总表,increment_offset 参数是可选的。

如需了解详情,请参阅 increment_offset 参数文档页面。

从探索获取汇总表格 LookML

作为快捷方式,Looker 开发者可以使用探索查询来创建汇总表格,然后将 LookML 复制到 LookML 项目中:

  1. 在探索中,选择要包含在汇总表格中的所有字段和过滤条件。
  2. 点击运行 以获取结果。
  3. 从探索的齿轮菜单中选择 Get LookML 。此选项仅适用于 Looker 开发者。
  4. 点击汇总表 标签页。
  5. Looker 会提供探索 优化 的 LookML,该优化会将汇总表格添加到探索中。复制 LookML 并将其粘贴到关联的模型文件中,该文件在探索优化之前的注释中指明。如果探索是在单独的探索文件中定义的,而不是在模型文件中定义的,您可以将优化添加到探索的文件中,而不是模型文件中。这两个位置都可以。

如果您需要修改汇总表格 LookML,可以使用本页面上的在 LookML 中定义汇总表格部分中所述的参数进行修改。您可以重命名汇总表格,而不会更改其对原始探索查询的适用性。不过,对汇总表的任何其他更改都可能会影响 Looker 将汇总表用于探索查询的能力。如需了解有关优化汇总表的提示,以确保它们用于汇总感知,请参阅汇总感知文档页面的设计汇总表部分。

从信息中心获取汇总表格 LookML

Looker 开发者还可以选择获取信息中心上所有模块的汇总表格 LookML,然后将 LookML 复制到 LookML 项目中。

创建汇总表可以大幅提高信息中心的性能,尤其是对于查询大型数据集的图块。

如果您具有 develop 权限,则可以获取 LookML 以便为信息中心创建汇总表,方法是打开信息中心,从信息中心的三点状菜单中选择 Get LookML ,然后选择汇总表 标签页:

对于尚未通过汇总感知优化的每个模块,Looker 会提供探索 优化 的 LookML,该优化会将汇总表格添加到探索中。如果信息中心包含来自同一探索的多个图块,Looker 会将所有汇总表放在单个探索优化中。为了减少生成的汇总表格的数量,Looker 会确定生成的汇总表格是否可用于多个模块,如果可以,则会删除可用于较少模块的任何冗余汇总表格。

将每个探索优化复制并粘贴到关联的模型文件中,该文件在探索优化之前的注释中指明。如果探索是在单独的探索文件中定义的,而不是在模型文件中定义的,您可以将优化添加到探索文件中,而不是模型文件中。这两个位置都可以。

如果信息中心过滤条件应用于图块,Looker 会将过滤条件的维度添加到图块的汇总表格中,以便汇总表格可用于图块。这是因为,只有当查询的过滤条件引用在汇总表格中可用作维度的字段时,汇总表格才能用于查询。如需了解详情,请参阅汇总感知文档页面。

如果您需要修改汇总表格 LookML,可以使用本页面上的在 LookML 中定义汇总表格部分中所述的参数进行修改。您可以重命名汇总表格,而不会更改其对原始信息中心模块的适用性,但对汇总表格的任何其他更改都可能会影响 Looker 将汇总表格用于信息中心的能力。如需了解有关优化汇总表的提示,以确保它们用于汇总感知,请参阅汇总感知文档页面的设计汇总表部分。

示例

以下示例为 event 探索创建 monthly_orders 汇总表格。汇总表格会创建每月订单数。Looker 会将汇总表格用于可采用每月粒度的订单数查询,例如年度、季度和每月订单数查询。

汇总表格使用 数据组 orders_datagroup 设置了持久性。此外,汇总表还使用 publish_as_db_view: yes 定义,这意味着 Looker 会在数据库中为汇总表创建稳定的数据库视图。

汇总表格定义如下所示:

explore: event {
  aggregate_table: monthly_orders {
    materialization: {
      datagroup_trigger: orders_datagroup
      publish_as_db_view: yes
    }
    query: {
      dimensions: [orders.created_month]
      measures: [orders.count]
      filters: [orders.created_date: "1 year", orders.status: "fulfilled"]
      timezone: America/Los_Angeles
    }
  }
}

注意事项

如需了解有关策略性创建汇总表的提示,请参阅汇总感知 文档页面的设计汇总表部分:

汇总感知的方言支持

使用汇总感知的能力取决于 Looker 连接使用的数据库方言。在最新版本的 Looker 中,以下方言支持汇总感知:

方言 是否支持?
Actian Avalanche
Amazon Athena
Amazon Aurora MySQL
Amazon Redshift
Amazon Redshift 2.1+
Amazon Redshift Serverless 2.1+
Apache Druid
Apache Druid 0.13+
Apache Druid 0.18+
Apache Hive 2.3+
Apache Hive 3.1.2+
Apache Spark 3+
ClickHouse
Cloudera Impala 3.1+
Cloudera Impala 3.1+ with Native Driver
Cloudera Impala with Native Driver
DataVirtuality
Databricks
Denodo 7
Denodo 8 & 9
Dremio
Dremio 11+
Exasol
Google BigQuery Legacy SQL
Google BigQuery Standard SQL
Google Cloud PostgreSQL
Google Cloud SQL
Google Spanner
Greenplum
HyperSQL
IBM Netezza
MariaDB
Microsoft Azure PostgreSQL
Microsoft Azure SQL Database
Microsoft Azure Synapse Analytics
Microsoft SQL Server 2008+
Microsoft SQL Server 2012+
Microsoft SQL Server 2016
Microsoft SQL Server 2017+
MongoBI
MySQL
MySQL 8.0.12+
Oracle
Oracle ADWC
PostgreSQL 9.5+
PostgreSQL pre-9.5
PrestoDB
PrestoSQL
SAP HANA
SAP HANA 2+
SingleStore
SingleStore 7+
Snowflake
Teradata
Trino
Vector
Vertica