create_process

用量

derived_table: {
  create_process: {
    sql_step:
      CREATE TABLE ${SQL_TABLE_NAME}
      (customer_id int(11),
      lifetime_orders int(11)) ;;
    sql_step:
      INSERT INTO ${SQL_TABLE_NAME}
      (customer_id,
      lifetime_orders)
      SELECT customer_id, COUNT(*)
      AS lifetime_orders
      FROM order
      GROUP BY customer_id ;;
  }
}
階層
create_process
預設值

接受
一或多個 sql_step 子參數

定義

如果資料庫方言使用自訂資料定義語言 (DDL) 指令,您可以使用 create_process 建立永久衍生資料表 (PDT)create_process 會定義 SQL 陳述式清單,並依列出的順序執行。每個 SQL 陳述式都是使用 sql_step 子參數指定。每個 sql_step 子參數可以包含任何合法的 SQL 查詢。您可以定義多個 sql_step 子參數,系統會依指定順序逐一執行。Looker 會原封不動地發出 sql_step 子參數中的陳述式,不會進行 Looker 通常會執行的錯誤修正。

舉例來說,部分資料庫方言不支援以單一 SQL 陳述式發出的 CREATE TABLE as SELECT,而是需要個別的 SQL 陳述式。因此,您無法使用這些方言建立傳統的以 SQL 為基礎的永久衍生資料表create_process 參數提供建立 PDT 的替代方式,也就是建立依序發出的個別 SQL 陳述式清單。

您也可以使用 create_process 支援方言,例如 Google 預測性 BigQuery ML 機器學習模型。

create_process 參數表示您要為衍生資料表編寫完整的 CREATE 陳述式,包括任何索引。如要使用 create_process 為衍生資料表新增索引,請使用 sql_step 參數指定索引的 SQL。

如果是使用 create_process 定義的 PDT,則無法使用下列任何參數:

範例

如要在 MySQL 資料庫中建立 ctasless_customer_order_facts 永久衍生資料表,請完成下列兩個步驟。首先,發出由第一個 sql_step 子參數定義的 CREATE TABLE SQL 陳述式。接著,發出由第二個 sql_step 子參數定義的 INSERT INTO SQL 陳述式,其中包含 SELECT 陳述式:

view: ctasless_customer_order_facts {
  derived_table: {
    datagroup_trigger: some_datagroup
    create_process: {
      sql_step: CREATE TABLE ${SQL_TABLE_NAME} (
                         customer_id int(11),
                         lifetime_orders int(11)
                       ) ;;
      sql_step: INSERT INTO ${SQL_TABLE_NAME}(customer_id, lifetime_orders)
                        SELECT customer_id, COUNT(*) AS lifetime_orders
                         FROM order
                         GROUP BY customer_id ;;
    }
  }
}

注意事項

${SQL_TABLE_NAME} 替換運算子

您可以使用 ${SQL_TABLE_NAME} 替代運算子,替換要建立的 PDT 計算名稱,確保 SQL 陳述式會正確納入 LookML view 參數中提供的 PDT 名稱。

create_process 必須建立以 ${SQL_TABLE_NAME} 替換運算子表示的名稱的資料表,否則系統會在連線的「資料群組和永久衍生資料表:PDT 維護排程」設定中指定的每個觸發檢查間隔 (預設為五分鐘),從頭重建資料表。這可能會導致資料庫或資料倉儲出現非預期的查詢流量。

使用 sql_create 一次建立 PDT

如果資料庫方言需要自訂 DDL 指令,且您想在單一步驟中建立 PDT,可以使用 sql_create 定義要執行的完整 SQL CREATE 陳述式,並在單一步驟中建立 PDT。

create_process 定義的資料表無法用於增量 PDT

如要將以 SQL 為基礎的 PDT 做為累加 PDT,必須使用 sql 參數定義查詢。以 sql_create 參數或 create_process 參數定義的以 SQL 為基礎 PDT,無法累加建構。

這是因為 Looker 會使用 INSERT 或 MERGE 指令,為累加 PDT 建立增量。衍生資料表無法使用自訂資料定義語言 (DDL) 陳述式定義,因為 Looker 無法判斷建立準確增量所需的 DDL 陳述式。