BigQuery Data Transfer Service
について書きます。
Introduction
https://cloud.google.com/bigquery-transfer/docs/transfer-service-overview
BigQueryに外部からデータを取り込むために使う。現時点では、BigQueryから取り出すためには使えない。
- Cloud Storage
- Google Ad Manager
- Google Ads
- Google Play
- Search Ads 360
- YouTube Channel reports
- YouTube Content Owner reports
- S3
- Teradata
- Redshift
などから移行できる。
how to guids
https://cloud.google.com/bigquery-transfer/docs/locations
から覚えておきたいところを抜粋。
- GCSから移行するときは、リージョンを合わせる。
- Pub/SubとEmailで通知を設定できる。
- GCSとデータセットコピー以外ではバックフィルできる。代わりにこの2つではリフレッシュできる。
S3
- データタイプ
- CSV
- JSON
- Avro
- Parquet
- ORC
- 圧縮形式、AvroやParquetはデータブロックの圧縮はサポートしても、ファイルの圧縮はサポートしない
- Snappy
- GZip (CSVとJSONはこれのみ)
- LZO
- Zlib (ORC)
- LZ4 (ORC)
- URIにワイルドカードが使える
- テーブルパーティション (ingestion time) とカラムパーティション (timestamp or date) が使える
- スケジュール実行できる
GCS
- S3と同じ
- スケジュール実行の最小間隔は1時間
Ad Manager
- スケジュール: 8時間
- リフレッシュウィンドウ: 過去2日
- 最大バックフィル: 60日
Ads
- スケジュール: デイリー
- リフレッシュウィンドウ: 7日、最大30日
- 最大バックフィル: 無制限
Play
- スケジュール: デイリー
- リフレッシュウィンドウ: 7日
- 最大バックフィル: 無制限
YouTube Channel
- スケジュール: デイリー
- リフレッシュウィンドウ: 1日
- 最大バックフィル: 30日
Redshift
- Redshift -> S3 -> BigQueryの順にデータを移動する
- 費用の点からS3のライフサイクルポリシーの利用を推奨
- migration queueを使って、リソースを分離することも検討
- ロードのクオータがジョブあたりテーブルあたり15TBまでなので、Redshiftのデータサイズに注意
- VPC内のRedshiftとVPC内のBigQueryでも移行できる
- RedshiftとBQの通信はプライベートだが、S3とGCSとの間はパブリックになりうる
Teradata
- Teradata -> Extract -> GCS -> BigQueryの順でデータが移動する
- Extraction methods with ...
- JDBC driver with FastExport: Avro をローカルに出力する
- Teradata Parallel Transporter: バッチにしてなんやかんやする、こっちが推奨らしい
- Automatic scheme conversion or custome scheme file (JSON)
- ワンタイムのオンデマンドトランスファーと、周期的なインクリメンタルトランスファーがある
- GCSのデータは自動では消されないので注意
- 抽出したデータは暗号化されていないため注意
現場からは以上です。