derived_table

用法

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

定义

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

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

  • create_process
  • sql_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", ...] 指定在 Presto 中按一个或多个字段对 PDT 进行分区,或在 BigQuery 中按单个日期/时间字段对 PDT 进行分区。
    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.x - 0.17.x
    Apache Druid 0.18+
    Apache Hive 2.3+
    Apache Hive 3.1.2+
    Apache Spark 3+
    ClickHouse
    ClickHouse 26+
    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+
    Dremio 26+ with Arrow Flight SQL
    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
    MongoSQL
    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.x - 0.17.x
    Apache Druid 0.18+
    Apache Hive 2.3+
    Apache Hive 3.1.2+
    Apache Spark 3+
    ClickHouse
    ClickHouse 26+
    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+
    Dremio 26+ with Arrow Flight SQL
    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
    MongoSQL
    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.x - 0.17.x
    Apache Druid 0.18+
    Apache Hive 2.3+
    Apache Hive 3.1.2+
    Apache Spark 3+
    ClickHouse
    ClickHouse 26+
    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+
    Dremio 26+ with Arrow Flight SQL
    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
    MongoSQL
    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.x - 0.17.x
    Apache Druid 0.18+
    Apache Hive 2.3+
    Apache Hive 3.1.2+
    Apache Spark 3+
    ClickHouse
    ClickHouse 26+
    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+
    Dremio 26+ with Arrow Flight SQL
    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
    MongoSQL
    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