用量
view: my_view {
derived_table: { ... }
}
|
階層
derived_table |
預設值
無
|
定義
衍生資料表可視為資料庫中的一般資料表。您可以建立下列任一類型的衍生資料表:
- 使用
explore_source參數定義的原生衍生資料表 - 以 SQL 為基礎的衍生資料表:使用您透過
sql參數定義的原始 SQL 查詢
在某些極端情況下,系統不允許使用
sql參數。在這種情況下,Looker 支援下列參數,可用於定義永久衍生資料表的 SQL 查詢:create_processsql_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 |