在移轉作業中使用執行階段參數

設定 Cloud Storage 或 Amazon S3 移轉時,URI 和目的地資料表皆可參數化,可讓您從依日期整理的值區來載入資料。這些參數稱為 _runtime parameters_,以便和查詢參數做區別。

在移轉作業中使用執行階段參數,即可達成以下事項:

  • 指定將目的地資料表加以分區的方式
  • 擷取符合特定日期的檔案

可用的執行階段參數

設定 Cloud Storage 或 Amazon S3 移轉作業時,您可以使用執行階段參數,指定目的地資料表的分區方式。

參數 範本類型
run_time 格式化的時間戳記 採用世界標準時間,依排程而定。run_time 用以表示定期移轉作業的預定執行時間。舉例來說,如果移轉作業設為「每 24 小時」執行一次,就算實際執行時間可能略有不同,但兩次連續查詢之間的 run_time 差異都會是 24 小時整。

請參閱 TransferRun.runTime
run_date 日期字串 run_time 參數的日期格式如下:%Y%m%d;例如「20180101」。這個格式相容於依擷取時間分區的資料表。

範本系統

透過範本語法,Cloud Storage 和 Amazon S3 移轉作業支援在目的地資料表名稱中使用執行階段參數。

參數範本語法

範本語法支援基本字串範本和時區設定。參數會以下列格式參照:

  • {run_date}
  • {run_time[+\-offset]|"time_format"}
參數 目的
run_date 這個參數會由格式為 YYYYMMDD 的日期取代。
run_time 這個參數支援下列屬性:


offset
時區設定會依小時 (h)、分鐘 (m)、秒鐘 (s) 的順序表示。
不支援天 (d)。
可使用小數,例如:1.5h

time_format
格式設定字串。最常見的格式參數是年 (%Y)、月 (%m)、日 (%d)。
就分區資料表而言,YYYYMMDD 是必要的後置字串,相當於「%Y%m%d」。

進一步瞭解日期時間元素的格式設定

使用須知:
  • run_time、時區設定和時間格式之間不得有空格字元。
  • 如果字串要包含大括號,可以採用逸出符號:‘\{‘ and ‘\}’
  • 如果 time_format 要包含引號或分隔號,例如 “YYYY|MM|DD”,可以在格式字串採用逸出符號:‘\”’‘\|’

參數範本範例

以下範例說明如何以不同的時間格式指定目的地資料表名稱,以及如何設定執行時間時區。
run_time (世界標準時間) 範本參數 輸出目的地資料表名稱
2018-02-15 00:00:00 mytable mytable
2018-02-15 00:00:00 mytable_{run_time|"%Y%m%d"} mytable_20180215
2018-02-15 00:00:00 mytable_+25h{run_time|"%Y%m%d"} mytable_20180216
2018-02-15 00:00:00 mytable_-1h{run_time|"%Y%m%d"} mytable_20180214
2018-02-15 00:00:00 mytable_+1.5h{run_time|"%Y%m%d;%H"}

mytable_+90m{run_time|"%Y%m%d;%H"}
mytable_2018021501
2018-02-15 00:00:00 {run_time+97s|"%Y%m%d"}_mytable_{run_time|"%H%M%s"} 20180215_mytable_000137

分區選項

Cloud Storage 和 Amazon S3 移轉作業可寫入分區或非分區的目的地資料表。BigQuery 中的資料表分區有兩種類型:

  • 依擷取時間分區的資料表:根據擷取時間分區的資料表。Cloud Storage 和 Amazon S3 移轉作業的擷取時間即是移轉作業的執行時間。
  • 分區資料表:依據 TIMESTAMPDATE 資料欄分區的資料表。

如果目的地資料表是依資料欄分區,請在建立目的地資料表和指定結構定義時,設定用來分區的資料欄。如要瞭解如何建立以資料欄分區的資料表,請參閱建立和使用分區資料表

分區範例

執行階段參數範例

以下範例會示範如何結合萬用字元和參數來處理各種常見用途。所有範例中的 run_time 都假定為 2018-02-15 00:00:00 (世界標準時間)。

如果您將資料分區時,是以當地時區為準,則需要使用範例語法中的時區機制,手動計算當地時區與世界標準時間的時差。

將 Cloud Storage 或 Amazon S3 資料移轉至非分區資料表

此使用案例適用於將新檔案從 Cloud Storage 或 Amazon S3 值區載入非分區資料表時。此範例會在 URI 中使用萬用字元,並使用個案式查詢來重新整理移轉作業,以獲取至少存在一個小時的新檔案。

資料來源 來源 URI 目的地資料表名稱
Cloud Storage gs://bucket/*.csv mytable
Amazon S3 s3://bucket/*.csv mytable

將包含所有資料的快照載入依擷取時間分區的資料表

在這種情況下,指定的 URI 內所有資料均會移轉至以今日日期分區的資料表。在重新整理移轉作業中,此設定會擷取最近一次載入作業完成後新增的檔案,並將檔案加入特定的分區。

資料來源 來源 URI 已參數化目的地資料表 已評估目的地資料表
Cloud Storage gs://bucket/*.csv mytable${run_time|"%Y%m%d"} my_table$20180215
Amazon S3 s3://bucket/*.csv mytable${run_time|"%Y%m%d"} my_table$20180215

將特定日期的資料載入依擷取時間分區的資料表

此使用案例會將今天的資料移轉至以今日日期分區的資料表。如果重新整理移轉作業會擷取符合特定日期的新增檔案,並將資料載入至對應的分區,則同樣適用這個使用案例。

資料來源 參數化 URI 已參數化目的地資料表 已評估 URI 已評估目的地資料表
Cloud Storage gs://bucket/events-{run_time|"%Y%m%d"}/*.csv mytable${run_time|"%Y%m%d"} gs://bucket/events-20180215/*.csv my_table$20180215
Amazon S3 s3://bucket/events-{run_time|"%Y%m%d"}/*.csv mytable${run_time|"%Y%m%d"} s3://bucket/events-20180215/*.csv my_table$20180215

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁