BigQueryのデータマートからスキーマ情報をデータ型と同時に取得する

Pythonで作ったデータセットをBigQueryに上げる際に、デフォルトだとデータ型が合わない問題が発生した。

INTやFLOATで数値計算させたいのに、そのままだとSTRINGの文字情報になってしまうため、スキーマの情報を設定する必要がある。

Pythonでスキーマを指定する場合、数個だけのカラムなら手打ちでもなんとかなるんだけど、数十数百となると、ちとキツイ。

そこで、BigQueryの既存のデータマートを参考にして、カラム名とデータ型を同時に取得したのでメモ。

image

BigQueryの従来のUIではなく、ベータ版の新UIから作業する。

GCPのページから、画像のボタンをクリックして、Cloud Shellのコンソールを起動する。

image

コンソール画面に、以下のクエリを入力すると、対象テーブルのカラム名とデータ型を取得することができる。

bq show [プロジェクトID]:[データセット名].[テーブル名]

コンソール起動時の位置には、初めの位置がプロジェクトになっている場合があるので注意する。

その場合には、プロジェクトIDは飛ばして以下のクエリでいける。

bq show [データセット名].[テーブル名]

デフォルトだとテキスト形式で返ってくるが、オプションでJSON形式でも取得可能。

bq show --schema --format=prettyjson [データセット名].[テーブル名] > [ファイル名]