転送でのランタイム パラメータの使用

Cloud Storage 転送または Amazon S3 転送を設定する場合、URI と宛先テーブルの両方のパラメータ化が可能で、日付順に整理されたバケットからデータを読み込めます。このようなパラメータは、クエリ パラメータと区別するために「_runtime parameters_」と呼ばれます。

転送でランタイム パラメータを使用すると、次のことができます。

  • 宛先テーブルをどのように分割するかを指定する
  • 特定の日付に一致するファイルを取得する

使用可能なランタイム パラメータ

Cloud Storage 転送または Amazon S3 転送を設定する場合、ランタイム パラメータを使用して、宛先テーブルをどのように分割するかを指定できます。

パラメータ テンプレートの種類
run_time フォーマットされたタイムスタンプ スケジュールごとに UTC 時間で設定されます。定期的にスケジュールされた転送の場合、run_time は実行予定時刻を表します。たとえば、転送が「24 時間ごと」に設定されている場合、実際の実行時間が多少異なる場合でも、連続する 2 つのクエリ間の run_time 差はちょうど 24 時間になります。

TransferRun.runTime をご覧ください。
run_date 日付文字列 %Y%m%d」形式の run_time パラメータの日付。たとえば、「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」と同等です。

詳しくは datetime エレメントのフォーマット設定をご覧ください。

使用上の注意:
  • run_time、offset、time 形式の間に空白文字は使用できません。
  • 文字列にリテラル中かっこを含めるには、‘\{‘ and ‘\}’ としてエスケープできます。
  • time_format に “YYYY|MM|DD” などのリテラル引用符や縦線を含めるには、‘\”’‘\|’ のフォーマット文字列でエスケープできます。

パラメータ テンプレートの例

以下の例は、異なる時刻形式の宛先テーブル名を指定し、実行時間をオフセットする方法を示しています。
run_time(UTC) テンプレート パラメータ 出力宛先テーブル名
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_{run_time+25h|"%Y%m%d"} mytable_20180216
2018-02-15 00:00:00 mytable_{run_time-1h|"%Y%m%d"} mytable_20180214
2018-02-15 00:00:00 mytable_{run_time+1.5h|"%Y%m%d;%H"}
または
mytable_{run_time+90m|"%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 には次の 2 つのタイプのテーブル分割があります。

  • 取り込み時間で分割されたテーブル: 取り込み時間に基づいて分割されたテーブル。Cloud Storage 転送および Amazon S3 転送の場合、取り込み時間は転送の実行時間です。
  • パーティション分割テーブル: TIMESTAMP 列または DATE 列を基準にして分割されたテーブル。

宛先テーブルが列に分割されている場合は、宛先テーブルを作成する際に分割する列を特定し、スキーマを指定します。列ベースの分割テーブルの作成については、分割テーブルの作成と使用をご覧ください。

分割の例

  • 分割なしのテーブル
    • [Destination table] - mytable
  • 取り込み時間分割テーブル
    • [Destination table] - mytable$YYYYMMDD
  • 列分割テーブル
    • [Destination table] - mytable
    • テーブルのスキーマを作成する場合は、分割する列として TIMESTAMP 列または DATE 列を指定します。

ランタイム パラメータの例

これらの例は、一般的な使用例でワイルドカード文字とパラメータを結合する方法を示しています。すべての例で、run_time2018-02-15 00:00:00(UTC)であると仮定します。

地域のタイムゾーンに基づいてデータを分割する場合は、テンプレート構文のオフセット メカニズムを使用して、UTC に対する補正時間を手動で計算する必要があります。

Cloud Storage または Amazon S3 のデータを分割されていないテーブルに転送する

この使用例は、Cloud Storage または Amazon S3 のバケットから分割されていないテーブルに新しいファイルを読み込む際に適用されます。この例では、URI でワイルドカードを使用し、アドホックの更新転送によって、作成後 1 時間以上経過した新しいファイルを転送対象にしています。

データソース 抽出元 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

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。