用法
view: my_view {
derived_table: { ... }
}
|
层次结构
derived_table |
默认值
无
|
定义
派生表可以视为数据库中的普通表。您可以创建以下任一类型的派生表:
- 使用
explore_source参数定义的原生派生表 - 使用原始 SQL 查询的基于 SQL 的派生表,您可以使用
sql参数来定义该派生表
在某些极端情况下,不允许使用
sql参数。在这种情况下,Looker 支持以下参数来定义 PDT 的 SQL 查询:create_processsql_create使用
sql、create_process或sql_create参数时,在所有这些情况下,您都是使用 SQL 查询来定义派生表,因此这些都被视为基于 SQL 的派生表。
derived_table 参数用于开始 LookML 的一个部分,您可以在其中定义派生表的计算方式、应使用的索引或键以及应何时重新生成派生表。
派生表可以是临时派生表,当用户请求派生表中的数据时,系统会临时计算这些表;也可以是永久性派生表 (PDT),这些表会使用持久性策略持久保存在数据库中。
如果管理员已启用增量 PDT 实验性功能,并且您的方言支持增量 PDT,您就可以在项目中使用了。增量 PDT 是一种通过将最新数据附加到表来以增量方式构建的 PDT,而不是重建整个表。如需详细了解增量 PDT,请参阅增量 PDT 文档页面。
如需详细了解派生表,请参阅 Looker 中的派生表文档页面。
派生表子形参
本部分列出了派生表子参数。
| 参数 | 说明 |
|---|---|
cluster_keys: ["column_name", "column_name", ...] |
指定在 BigQuery 和 Snowflake 中按一个或多个字段对 PDT 进行聚类。 |
create_process: { sql_step:SQL query ;; } |
指定在需要自定义 DDL 命令的数据库方言上创建 PDT 的有序步骤序列。 |
datagroup_trigger: datagroup_name |
指定用于 PDT 重建政策的数据组。 |
distribution: "column_name" |
设置在 Redshift 或 Aster 中构建的 PDT 的分布键。 |
distribution_style: all | even |
设置在 Redshift 中构建的 PDT 的分发样式。 |
explore_source: explore_name { # Desired subparameters (described on explore_source page) } |
指定基于“探索”的原生派生表。 |
increment_key: "column_name" |
指定应查询最新数据并将其附加到增量 PDT 的时间增量。 |
increment_offset: N |
指定要重建的之前时间段(以增量键粒度)的数量,以考虑增量 PDT 的延迟到达数据。 |
indexes: ["column_name", "column_name", ...] |
设置在传统数据库(例如 MySQL、Postgres)中构建的 PDT 的索引或 Redshift 中的交错排序键。 |
interval_trigger: "N (seconds | minutes | hours)" |
为 PDT 指定重建时间表。 |
materialized_view: yes | no |
在数据库中为派生表创建具体化视图。 |
partition_keys: ["column_name", "column_name", ...] |
指定 PDT 按 Presto 中的一个或多个字段或 BigQuery 中的单个日期/时间字段进行分区。 |
persist_for: "N (seconds | minutes | hours)" |
设置 PDT 在重新生成之前的最长使用期限。 |
publish_as_db_view: yes | no |
为 PDT 创建稳定的数据库视图,以便在 Looker 外部查询该表。 |
sortkeys: ["column_name", "column_name", ...] |
设置在 Redshift 中构建的 PDT 的排序键。 |
sql: SQL query ;; |
声明派生表的 SQL 查询。 |
sql_create: { SQL query ;; } |
定义一个 SQL CREATE 语句,用于在需要自定义 DDL 命令的数据库方言上创建 PDT。 |
sql_trigger_value: SQL query ;; |
指定导致重新生成 PDT 的条件。 |
table_compression: GZIP | SNAPPY |
指定要在 Amazon Athena 中用于 PDT 的表压缩。 |
table_format: PARQUET | ORC | AVRO | JSON | TEXTFILE |
指定要在 Amazon Athena 中用于 PDT 的表格式。 |
示例
使用 explore_source 参数创建 customer_order_facts 原生派生表:
view: customer_order_facts {
derived_table: {
explore_source: order {
column: customer_id { field: order.customer_id }
column: lifetime_orders { field: order.count }
column: lifetime_spend { field: order.total_spend }
}
}
}
使用 sql 参数创建 customer_order_facts 派生表:
view: customer_order_facts {
derived_table: {
sql:
SELECT
customer_id,
COUNT(*) AS lifetime_orders,
SUM(total) AS lifetime_spend
FROM
order
GROUP BY
customer_id ;;
}
}
注意事项
避免过度使用派生表来创建纯 SQL 解决方案
尤其精通 SQL 的用户经常使用派生表来解决复杂的 SQL 查询问题,然后将结果呈现给用户。虽然有时这样做是必要的,但也会错过 LookML 的模块化、可重用特性,并让用户只能以僵化的方式探索数据。
我们的一般建议是,考虑 SQL 查询的根本目的,然后将该逻辑转换为 LookML,而不是将现有查询复制并粘贴到派生表中。如果您需要帮助来创建不依赖于派生表的分析,Looker 支持分析师可以为您提供最佳实践方面的帮助。
派生表支持的数据库方言
临时派生表支持的数据库方言
为了让 Looker 支持 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 |
PDT 支持的数据库方言
为了让 Looker 支持 Looker 项目中的 PDT,您的数据库方言也必须支持 PDT。
为了支持任何类型的 PDT(基于 LookML 或基于 SQL),方言必须支持写入数据库,以及其他要求。某些只读数据库配置不允许持久性正常运行(最常见的是 Postgres 热交换副本数据库)。在这些情况下,您可以改用临时派生表。
下表显示了 Looker 最新版本中支持永久性基于 SQL 的派生表的方言:
| 方言 | 是否支持? |
|---|---|
| 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 |
为了支持持久性原生派生表(具有基于 LookML 的查询),方言还必须支持 CREATE TABLE DDL 函数。以下列出了在最新版 Looker 中支持永久性原生(基于 LookML)派生表的方言:
| 方言 | 是否支持? |
|---|---|
| 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 |
使用 OAuth 的 Snowflake 连接不支持 PDT。
增量 PDT 支持的数据库方言
为了让 Looker 支持 Looker 项目中的增量 PDT,您的数据库方言必须支持数据定义语言 (DDL) 命令,以便删除和插入行。
下表显示了 Looker 最新版本中哪些方言支持增量 PDT:
| 方言 | 是否支持? |
|---|---|
| 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 |