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

如果您的 dialect 支持增量 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,然后选择 Aggregate Tables 标签页:

对于尚未通过汇总感知功能优化的每个图块,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+
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