sql_create

用量

derived_table: customer_order_facts {
  sql_create: {
      SQL statement ;;
  }
}
階層
sql_create
預設值

接受
SQL 陳述式

定義

sql_create 可啟用自訂資料定義語言 (DDL) 指令,用於建構永久衍生資料表 (PDT)sql_create會照常發布報表,不會進行 Looker 的一般錯誤檢查。唯一條件是陳述式必須建立並執行 PDT。舉例來說,您可以建立支援 Google BigQuery ML 機器學習模型的 PDT。

如果使用 sql_create 定義 PDT,則無法使用下列任一參數:

  • indexes
  • cluster_keys
  • distribution
  • distribution_style
  • partition_keys
  • sortkeys
  • 範例

    為預測未來購買可能性的 BigQuery ML 查詢建立 PDT:

    view: future_purchase_model {
      derived_table: {
        datagroup_trigger: bqml_datagroup
        sql_create:
          CREATE OR REPLACE MODEL ${SQL_TABLE_NAME}
          OPTIONS(model_type='logistic_reg'
            , labels=['will_purchase_in_future']
            , min_rel_progress = 0.005
            , max_iterations = 40
            ) AS
          SELECT
             * EXCEPT(fullVisitorId, visitId)
          FROM ${training_input.SQL_TABLE_NAME};;
      }
    }
    

    注意事項

    ${SQL_TABLE_NAME} 替換運算子

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

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

    使用 create_process 分多個步驟建立 PDT

    如果資料庫方言需要自訂 DDL 指令,且您想發出多個指令來建立 PDT,可以使用 create_process 依特定順序發出多個自訂 DDL 指令。

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

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

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