derived_table

用量

view: my_view {
  derived_table: { ... }
}
階層
derived_table
預設值
無

定義

衍生資料表可視為資料庫中的一般資料表。您可以建立下列任一類型的衍生資料表:

在某些極端情況下,系統不允許使用 sql 參數。在這種情況下,Looker 支援下列參數,可用於定義永久衍生資料表的 SQL 查詢:

  • create_process
  • sql_create
  • 無論使用 sql、create_process 或 sql_create 參數,您都是使用 SQL 查詢定義衍生資料表,因此這些都屬於以 SQL 為基礎的衍生資料表。

    derived_table 參數會開啟 LookML 的一個區段,您可以在其中定義衍生資料表的計算方式、應使用的索引或鍵,以及重新產生的時機。

    衍生資料表可以是暫時性衍生資料表,在使用者要求資料時臨時計算,也可以是永久衍生資料表 (PDT),使用保留策略保留在資料庫中。

    如果方言支援,您可以在專案中使用增量 PDT。永久累加型衍生資料表 (PDT) 是指透過將新資料附加至資料表,逐步建構而成的 PDT,而非重新建構整個資料表。如要進一步瞭解永久累加型衍生資料表,請參閱永久累加型衍生資料表說明文件頁面。

    如要進一步瞭解衍生資料表,請參閱「Looker 中的衍生資料表」說明文件頁面。

    衍生資料表子參數

    本節列出衍生資料表子參數。

    參數 說明
    cluster_keys: ["column_name", "column_name", ...] 指定 PDT 應依 BigQuery 和 Snowflake 中的一或多個欄位分群。
    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" 指定時間增量,系統會查詢該時間範圍內的新資料,並附加至永久累加型衍生資料表。
    increment_offset: N 指定要重建多少個先前的時間範圍 (以增量鍵精細程度為準),以納入累加型 PDT 的延遲資料。
    indexes: ["column_name", "column_name", ...] 設定傳統資料庫 (例如 MySQL、Postgres) 中建構的 PDT 索引,或 Redshift 中的交錯排序鍵。
    interval_trigger: "N (seconds | minutes | hours)" 指定 PDT 的重建排程。
    materialized_view: yes | no 在資料庫中為衍生資料表建立 materialized view。
    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.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 專案中的永久累加型衍生資料表,資料庫方言必須支援資料定義語言 (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