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 以创建信息中心的汇总表。为此,请打开信息中心,从信息中心的三点状菜单中选择获取 LookML,然后选择汇总表标签页:

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

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

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

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

示例

以下示例为 event 探索创建了一个 monthly_orders 汇总表格。该汇总表格会创建每月订单数。Looker 将使用该汇总表格来处理可以利用每月粒度的订单数查询,例如查询年度、季度和每月订单数。

汇总表格使用 datagroup 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.x - 0.17.x
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 AlloyDB for PostgreSQL
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