Cloud LoggingからBigQueryにプロジェクトをまたいでエクスポートするときにパーティション分割テーブルを使う方法


TL;DR

gcloud alpha logging sinks createコマンドの --use-partition-tables オプションを使えば良い。

やりたいこと

Cloud Loggingのログルーターを用いて、ログ指標をBigQueryにエクスポートするシンクを作成したい。
かつ、エクスポート先のBigQueryはシンクを作成するプロジェクトとは別である。

参考ドキュメント:

GCPコンソールでは設定できない(2020-04-13現在)

シンクとエクスポート先のBigQueryが同一プロジェクトであれば、GCPコンソール操作でパーティション分割するか否かを選択できるが、別プロジェクトの場合はシンクのエクスポート先を入力する形となり、パーティション分割の有無を選択できない。
この場合、すべて日付別シャーディングテーブル( _YYYYMMDD suffix付きのテーブル)となる。

どうするか

冒頭の通り。

コマンド例:

gcloud alpha logging sinks create $SINK_NAME \
  bigquery.googleapis.com/projects/$EXPORT_PROJECT_ID/datasets/$DATASET \
  --project $SINK_PROJECT \
  --log-filter='<<SOME LOG FILTERS>>' \
  --use-partitioned-tables

補遺

LogSink.destinationの仕様から、GCPコンソール上で「エクスポート先」の指定だけでパーティション分割の有無を指定することはできないと考えられる。