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