derived_table

用法

view: my_view {
  derived_table: { ... }
}
层次结构
derived_table
默认值

定义

派生表可以视为数据库中的普通表。您可以创建以下任一类型的派生表:

在某些极端情况下,不允许使用 sql 参数。在这种情况下,Looker 支持以下参数来定义 PDT 的 SQL 查询:

  • create_process
  • sql_create
  • 使用 sqlcreate_processsql_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