BigQuery
AWSでいうとRedshiftに近い?
サーバレス、フルマネージドのエンタープライズデータウェアハウス
※前提条件
SQLについて詳しくないので、とりあえず触ってみた要素が強いです
データセットの作成
# bq mk <データセットID>
bq mk gcpstudybq01
Dataset 'gcpstudybq:gcpstudybq01' successfully created.
データセットの確認
# bq ls
bq ls
datasetId
--------------
gcpstudybq01
作成したデータセットが表示されている
データセットの詳細表示
# bq show <データセットID>
bq show gcpstudybq01
Dataset gcpstudybq:gcpstudybq01
Last modified ACLs Labels Type Max time travel (Hours)
----------------- ------------------------- -------- --------- -------------------------
14 Feb 16:43:30 Owners: DEFAULT 168
projectOwners,
mail@gmail.com
Writers:
projectWriters
Readers:
projectReaders
テーブルの作成、およびスキーマの定義
# bq mk -t <データセットID>.<テーブルID> <スキーマ>
bq mk -t gcpstudybq01.table2 firstname:string,lastname:string,age:integer
Table 'gcpstudybq:gcpstudybq01.table2' successfully created.
作成したテーブルの確認
# bq ls <データセットID>
bq ls gcpstudybq01
tableId Type Labels Time Partitioning Clustered Fields
--------- ------- -------- ------------------- ------------------
table1 TABLE
table2 TABLE
table2の詳細確認
# bq show <データセットID>.<テーブルID>
bq show gcpstudybq01.table2
Table gcpstudybq:gcpstudybq01.table2
Last modified Schema Total Rows Total Bytes Expiration Time Partitioning Clustered Fields Total Logical Bytes Total Physical Bytes Labels
----------------- ---------------------- ------------ ------------- ----------------- ------------------- ------------------ --------------------- ---------------------- --------
17 Feb 07:56:49 |- firstname: string 0 0 18 Apr 07:56:49 0
|- lastname: string
|- age: integer
データのインポート
# bq load <データセットID>.<テーブルID> <ローカルファイルのパス> [<スキーマ>]
# 今回はスキーマ定義済みのため<スキーマ>は入力しない
bq load gcpstudybq01.table2 nohara_family.csv
Upload complete.
Waiting on bqjob_r2c54640de50a3229_000001865c7554bc_1 ... (1s) Current status: DONE
nohara_family.csv
hiroshi,nohara,35
misae,nohara,29
shinnosuke,nohara,5
himawari,nohara,0
インポートしたデータの確認
# bq head <データセットID>.<テーブルID>
bq head gcpstudybq01.table2
+------------+----------+-----+
| firstname | lastname | age |
+------------+----------+-----+
| hiroshi | nohara | 35 |
| misae | nohara | 29 |
| shinnosuke | nohara | 5 |
| himawari | nohara | 0 |
+------------+----------+-----+
クエリの実行
# bq query <SQL文>
bq query "select * from gcpstudybq01.table2"
+------------+----------+-----+
| firstname | lastname | age |
+------------+----------+-----+
| hiroshi | nohara | 35 |
| misae | nohara | 29 |
| shinnosuke | nohara | 5 |
| himawari | nohara | 0 |
+------------+----------+-----+
後片付け
テーブルの削除
# bq rm <データセットID>.<テーブルID>
bq rm gcpstudybq01.table2
rm: remove table 'gcpstudybq:gcpstudybq01.table2'? (y/N) y
# テーブルの削除確認
# bq ls <データセットID>
bq ls gcpstudybq01
tableId Type Labels Time Partitioning Clustered Fields
--------- ------- -------- ------------------- ------------------
table1 TABLE
# table2が削除されているのでOK
データセットの削除
# bq rm <データセットID>
bq rm gcpstudybq01
rm: remove dataset 'gcpstudybq:gcpstudybq01'? (y/N) y
BigQuery error in rm operation: Dataset gcpstudybq:gcpstudybq01 is still in use
# まだ使用中です とのエラーが出たのでtable1も削除する
bq rm gcpstudybq01.table1
rm: remove table 'gcpstudybq:gcpstudybq01.table1'? (y/N) y
bq rm gcpstudybq01
rm: remove dataset 'gcpstudybq:gcpstudybq01'? (y/N) y