LoginSignup
6
4

More than 5 years have passed since last update.

ここが変だよ BigQuery テーブルの JSON Export

Last updated at Posted at 2016-10-04

Exporting Data From Bigquery の機能を使って BigQuery のテーブルを GCS (Google Cloud Storage) に JSON Export する時の挙動をまとめておく。

書いてある仕様

ref. https://cloud.google.com/bigquery/exporting-data-from-bigquery

  • BigQuery でエクスポートできるデータはファイルごとに最大 1 GB だが、gs://my-bucket/file-name-*.json のようなワイルドカード指定すると、複数のファイルに分けてエクスポートできる。
  • (GCS に書き込むので当然) Developer Console で BigQuery API に加えて GCS API を有効にしてもらう必要あり
  • (GCS に書き込むので当然) GCS への write 権限が必要
  • 1 日あたりの制限: 1 日あたり 1,000 回のエクスポート、最大 10 TB
  • 複数ワイルドカード URI の制限: 1 回のエクスポートで 500 URI
  • csv (csv.gz), json (json.gz), または avro で出力できる
  • RECORD 型があると CSV では出力できない

ここが変だよ JSON Export

JSON でデータを Export した時に、変な点があったのでまとめておく。ドキュメントに書かれていない挙動である(仕様ではない)ため将来的に変更される可能性がある。

BigQuery Type Exported JSON Type 補足
BOOLEAN boolean 特記事項なし
INTEGER string string になる仕様... > https://code.google.com/p/google-bigquery/issues/detail?id=31
FLOAT number FLOAT型だが、小数部が0の場合は integer、小数部が0でない場合は float になる
TIMESTAMP string 小数部があるかどうかでフォーマットが異なる。小数部が0の場合は2014-09-01 14:40:41 UTC (%Y-%m-%d %H:%M:%S %z)、小数部が0でなければ 2014-09-01 14:40:41.1 UTC (%Y-%m-%d %H:%M:%S.%N %z)になる。小数部はマイクロ秒まで。Export時にフォーマットの指定などはできない。
RECORD object (hash) 特記事項なし
REPEATED (mode) array 特記事項なし
BYTE 未調査 調査してから新しく追加されたため、まだ調査してない。ToDo

おわり

出力された JSON を Hadoop にそのまま持って行って Hive や Presto で処理しようとしたり、GCSに吐き出したファイルを embulk-input-gcs で取り込もうとすると、微妙にフォーマットの違うカラムの値があったりして困る、という話でした。

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4