本文說明如何在資料表定義檔中設定其他資料表設定。使用 Dataform 核心,您可以定義 pre_operations
和 post_operations
,在建立資料表之前或之後執行 SQL 陳述式。您也可以覆寫資料表設定 (例如 database
或 schema
),並停用資料表建立作業。
事前準備
必要的角色
如要取得設定其他表格設定所需的權限,請要求管理員授予您工作區的 Dataform 編輯者 (roles/dataform.editor
) 身分與存取權管理角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。
覆寫資料表設定
您可以覆寫所選資料表的結構定義、資料庫和名稱。
根據預設,資料表會遵循您在 workflow_settings.yaml
中設定的結構定義和資料庫設定。資料表名稱與資料表定義 SQLX 檔案的名稱相同。
如要覆寫所選資料表的結構定義和名稱,請按照下列步驟操作:
前往開發工作區。
在「檔案」窗格中,展開
definitions/
。開啟 SQLX 資料表定義檔。
在
config
區塊中,輸入下列程式碼片段:{ schema: "OVERRIDDEN_SCHEMA", database: "OVERRIDDEN_DATABASE", name: "OVERRIDDEN_NAME" }
更改下列內容:
OVERRIDDEN_SCHEMA
:要在其中建立資料表的 BigQuery 資料集OVERRIDDEN_DATABASE
:您要在其中建立資料表的 BigQuery 專案 IDOVERRIDDEN_NAME
:資料表名稱,與 SQLX 資料表定義檔名不同
選用:按一下「格式」。
使用覆寫的資料表名稱參照資料表
- 如要參照具有覆寫資料表名稱的資料表,請在
ref
函式中,輸入name: ""
中設定的覆寫資料表名稱。
下列程式碼範例會參照名稱已覆寫為 overridden_name
的資料表:
SELECT * FROM ${ref("overridden_name")}
定義要在建立資料表前執行的 SQL 陳述式
您可以設定 Dataform,在 BigQuery 中建立所選資料表之前,先執行一或多個 SQL 陳述式。如要在 Dataform 建立所選資料表前執行 SQL 陳述式,請將陳述式新增至資料表定義 SQLX 檔案的 pre_operations
區塊。
如要建立自訂 SQL 陳述式,在 Dataform 建立特定資料表前執行,請按照下列步驟操作:
前往開發工作區。
在「檔案」窗格中,展開
definitions/
。開啟 SQLX 資料表定義檔。
在
config
區塊外,輸入pre_operations { ... }
。在
pre_operations { ... }
內加入 SQL 陳述式。選用:如要新增多個陳述式,請以
---
分隔。選用:按一下「格式」。
下列程式碼範例顯示 pre_operations
陳述式,可建立可在 select 陳述式中使用的暫時函式:
pre_operations {
CREATE TEMP FUNCTION AddFourAndDivide(x INT64, y INT64)
RETURNS FLOAT64
AS ((x + 4) / y);
}
定義要在建立資料表後執行的 SQL 陳述式
您可以設定 Dataform,在 BigQuery 中建立所選資料表後,執行一或多個 SQL 陳述式。如要在 Dataform 建立所選資料表後執行 SQL 陳述式,請將陳述式新增至資料表定義 SQLX 檔案的 post_operations
區塊。您可以在 post_operations
區塊中新增多個 SQL 陳述式。
如要建立自訂 SQL 陳述式,在 Dataform 建立特定資料表後執行,請按照下列步驟操作:
前往開發工作區。
在「檔案」窗格中,展開
definitions/
。開啟 SQLX 資料表定義檔。
在
config
區塊外,輸入post_operations { ... }
。在
post_operations { ... }
內加入 SQL 陳述式。選用:按一下「格式」。
下列程式碼範例顯示 post_operations
陳述式,可授予群組存取所建立資料表的權限:
post_operations {
GRANT `roles/bigquery.dataViewer`
ON
TABLE ${self()}
TO "group:allusers@example.com", "user:otheruser@example.com"
}
停用資料表建立功能
如要停止讓 Dataform 在 BigQuery 中建立所選資料表,可以在 SQLX 資料表定義檔案中停用該資料表。Dataform 會將已停用的資料表保留在依附元件圖表中,但不會編譯及建立該資料表。舉例來說,如果資料表發生錯誤,但您不想在修正問題時導致整個工作流程失敗,這項功能就非常實用。
如要停用資料表,請按照下列步驟操作:
前往開發工作區。
在「檔案」窗格中,展開
definitions/
。選取 SQLX 資料表定義檔。
在檔案的
config
區塊中,輸入disabled: true
。選用:按一下「格式」。
下列程式碼範例顯示已停用的表格:
config {
type: "table",
disabled: true
}
select * from ${ref("source_data")}
後續步驟
如要瞭解如何在
workflow_settings.yaml
中設定 Dataform,請參閱「設定 Dataform 工作流程設定」。如要瞭解如何使用斷言測試資料表資料,請參閱「使用斷言測試資料表」。
如要瞭解如何透過 include 重複使用程式碼,請參閱「 透過 include 在單一存放區中重複使用程式碼」。
如要瞭解如何手動觸發執行作業,請參閱「觸發執行作業」。