
前回までのまとめ
前回、bqコマンドが使えるようセットアップを行いました。今回はbqコマンドを使ってデータセット・スキーマを作成していきたいと思います。
データセットとは
データセットとはなんでしょうか。こちらに書かれていました。RDBでいうデータベースのようなものと思っておけばよさそうです。
データセットの操作
データセットの作成
こちらにあるように、bq mkコマンドを利用します。
1 2
| $ bq mk test Dataset 'project_id:test' successfully created.
|
無事作成できました。Webコンソールでも確認できます。
データセットの削除
削除にはbq rmコマンドを利用します。
1 2
| $ bq rm test rm: remove dataset 'project_id:test'? (y/N) y
|
yを入力することで削除できます。確認しなくてもよい場合は-fオプションを指定します。
メッセージは特に表示されませんが削除されています。
テーブルが存在する場合は-rオプションを指定することで、テーブルごと削除できます。
テーブルを作成するため、スキーマを記載したJSONファイルを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13
| $ cat t1.json [ { "name": "id", "type": "INT64", "mode": "REQUIRED" }, { "name": "name", "type": "STRING", "mode": "REQUIRED" } ]
|
JSONファイルからテーブルを作成してみます。
1 2 3 4 5
| $ bq mk --table project_id:test.t1 ./t1.json Table 'project_id:test.t1' successfully created. $ $ bq show --schema test.t1 [{"name":"id","type":"INTEGER","mode":"REQUIRED"},{"name":"name","type":"STRING","mode":"REQUIRED"}]
|
無事作成できました。
では、テーブルが存在するデータセットを削除してみます。
1 2 3
| $ bq rm test rm: remove dataset 'project_id:test'? (y/N) y BigQuery error in rm operation: Dataset project_id:test is still in use
|
テーブルがあると削除できないようです。-rオプションを指定してみます。
1 2 3
| $ bq rm -r test rm: remove dataset 'project_id:test'? (y/N) y $
|
削除できました。本来であれば、テーブルを削除後、データセットを削除すべきです。テーブルの削除はテーブル名を指定して行います。
1 2
| $ bq rm test.t1 rm: remove table 'project_id:test.t1'? (y/N) y
|
テーブルを削除すればデータセットも削除できます。
1 2 3
| $ bq rm test rm: remove dataset 'project_id:test'? (y/N) y $
|
テーブルの操作
データセットのところで、テーブルについてもいくつか記載しました。ここでまとめます。
JSONファイルによるテーブルの作成
テーブルの作成を行うにはJSONファイルでスキーマを定義してbqコマンドで作成するのが一番楽そうです。
1 2 3 4
| $ bq mk test Dataset 'project_id:test' successfully created. $ bq mk --table test.t1 t1.json Table 'project_id:test.t1' successfully created.
|
スキーマの確認
bq showでスキーマなど確認できます。
1 2 3 4 5 6 7
| $ bq show test.t1 Table project_id:test.t1
Last modified Schema Total Rows Total Bytes Expiration Time Partitioning Clustered Fields Labels ----------------- ---------------------------- ------------ ------------- ------------ ------------------- ------------------ -------- 28 Oct 21:49:31 |- id: integer (required) 0 0 |- name: string (required)
|
スキーマのみ確認したい場合は--schemaオプションを指定します。
1 2
| $ bq show --schema test.t1 [{"name":"id","type":"INTEGER","mode":"REQUIRED"},{"name":"name","type":"STRING","mode":"REQUIRED"}]
|
既存のスキーマから新しいスキーマを作るときに参考にできそうですね。
まとめ
前回インストールしたbqコマンドでデータセット、テーブルの基本的さ操作を行なってみました。次はCloud Functionsに挑戦してみようと思います。