非エンジニアでもBigQueryでデータ分析できる!SQL入門!

Data analysis

せっかくBigQueryにデータを貯めているのに、SQLがハードルでデータ抽出できないってことはありませんか?毎回エンジニアにデータ抽出を依頼するのは面倒だし…ということで非エンジニアでもできるSQL入門記事です。

目次

はじめに

BigQueryは従量課金でクエリを実行するたびにクエリのデータ量に応じた課金がされます。なのでうっかりビッグデータにクエリ実行して○○円かかってしまった!とならないように、キャプチャ赤枠の想定データ量を確認してからクエリ実行するようにしましょう。($6.00 / TBなので1GB程度のクエリであれば全然問題ないと思います。) 画像1 あとDELETE、UPDATE、INSERTは行わないようにしましょう。 DMLといわれるデータ操作言語です。これだけ気をつければ、どれだけクエリ実行してもテーブルのデータが更新されたり、消えちゃったということにはなりません。

SQLでテーブルからデータを抽出する

ではSQLでテーブルからデータを抽出しましょう テーブルは基本的には行×列のマトリクスです。Excelやスプレッドシートと同じです。 画像3 上記の売上管理テーブルから黄色にハイライトした、9/3のBB子さんの売上を抽出します。 SELECT句 抽出する列を指定します。アスタリスク(*)は全列指定のワイルドカードです。名前と売上だけ抽出する場合は、SELECT Customer_name, Salesです。 他にも* except(Customer_number)でCustomer_number以外の列を抽出ということもできます。 FROM句 抽出するテーブルを指定します。 WHERE句 抽出する行を指定する条件式です。Excelやスプレッドシートで言うところのフィルター機能にあたります。AND条件とOR条件が設定可能で、例えばWHERE Sales >= 8000 と書けば、Salesが8000以上の行を抽出します。 ※覚えておきたいSQLの実行順序 さて、SELECT、FROM 、WHEREの各ステートメントの意味は分かったと思いますが、ここで覚えておいて欲しいのが各ステートメントの実行順序です。FROM→WHERE→SELECTの順で実行されます。抽出するテーブルを指定して、抽出する行を条件式でフィルタリングして、抽出する列を指定するという流れです。

集計に必須!GROUP BYとORDER BY

次に集計に必須なGROUP BYとORDER BYです。 GROUP BY 画像3 AA太郎さんの総売上を知りたい… そういう時は複数行をまとめて、SUM(合計)やCOUNT(カウント)できるGROUP BY句の出番です。 GROUP BY句 GROUP BY Customer_numberでCustomer_numberでグループ化しています。グループ化とは、同一値の行を1行にまとめちゃいましょう!というステートメントです。 GROUP BY句はWHERE句の後に実行されると決まっているので、このSQLの実行順序はFROM→WHERE→GROUP BY→SELECTですね。 抽出するテーブルを指定して、抽出する行を条件式でフィルタリングして、顧客Noでグループ化して、抽出する列を指定するという流れです。 SELECT句にSUM(Sales)と書いているのは、グループ化して1つにまとめた行のSalesを合計するという意味です。 ORDER BY句 Excelやスプレッドシートでいうところのソート機能です。 ORDER BY Customer_number ASC でCustomer_number順に昇順ソート ORDER BY Customer_number DESC でCustomer_number順に降順ソート、 ASC、DESCはascending(昇順)、descending(降順)の略です。

まとめ

いかがでしょうか、SELECT、FROM、WHERE、GROUP BY、ORDER BYの5つのステートメントだけでもExcelやスプレッドシートで表を操作するのと同じかそれ以上にデータ抽出を楽に行えることがわかっていただけたと思います!あとはユニークな行を抽出するSELECT DISTINCTや複数テーブルを結合するJOIN句を覚えれば、かなり自由度高くデータ分析ができます。
CTA
  • URLをコピーしました!
  • URLをコピーしました!
この記事を書いた人
目次