Amazon S3 から BigQuery へデータ転送する方法をご紹介します。
AWS メインで DHW だけ BigQuery を利用したいというのが背景でして、Amazon S3 から BigQuery へデータ転送するまでの実装で参考になった情報をご紹介します。
まず、S3 から BigQuery へ CSV ファイルを転送して table へ読み込むまでのフローを動かしてみたいなら、BigQuery Data Transfer Service で AWS S3 から BigQuery に CSV データをロードしてみた | DevelopersIO の記事を参考にすれば動くところまではすぐ実装できます。
併せて、公式ドキュメント Amazon S3 転送 | BigQuery Data Transfer Service | Google Cloud も一読しておくと良いでしょう。
Amazon S3 データ転送の設定 「オンデマンド」 は、いつ実行されるか不明なのでリアルタイム性は担保できないと思っていた方が良いです。
プレフィックス マッチングまたはワイルドカード マッチングの影響Amazon S3 API では、プレフィックス マッチングはサポートされていますが、ワイルドカード マッチングはサポートされていません。プレフィックスに一致するすべての Amazon S3 ファイルは Google Cloud に転送されます。ただし、実際に BigQuery に読み込まれるのは、転送構成の Amazon S3 URI に一致するファイルのみです。
s3://your_bucket/your_folder/*
という風にワイルドカード * では S3 にあるファイルは転送されないので、
s3://your_bucket/your_folder/*.avro
のようにワイルドカードに加えて拡張子 .avro を明示的に指定する必要がありました。
[ファイル形式] で、データ形式を選択します。JSON(改行区切り)、CSV、Avro、Parquet、ORC のいずれかを選択できます。
時間単位列パーティショニング テーブルのパーティションは、テーブルの DATE、TIMESTAMP または DATETIME 列で分割できます。テーブルにデータを書き込むと、BigQuery は列の値に基づいて、自動的に正しいパーティションにデータを入力します。引用元: 時間単位列パーティショニング - パーティション分割テーブルの概要 | BigQuery | Google Cloud
以上、Amazon S3 から BigQuery へデータ転送したい、現場からお送りしました。