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),也就是使用保留策略保留在資料庫中的資料表。

    如果管理員已啟用永久累加型衍生資料表 Labs 功能,且方言支援這項功能,您就可以在專案中使用永久累加型衍生資料表。永久累加型 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 指定要重建的先前時間間隔數量 (以遞增鍵的精細程度為準),以考量永久累加型衍生資料表的延遲到達資料。
    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 中的一或多個欄位,或 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+
    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 專案支援 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。

    支援永久累加型衍生資料表的資料庫方言

    如要讓 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+
    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