2021.8.23
BigQuery-SQL超入門(後編)~SQL構文の書き方~
BigQueryで分析を行う時に必須となるSQLによるデータ加工の超入門です!前編では、GCPに登録し、データ抽出からレポート作成までの流れを紹介しました。後編はカフェの売上データをBigQueryで分析するSQL構文を紹介します。
1. カフェの売上データの分析例
カフェの店長になったつもりで、以下の項目で売上データを分析します。
- 商品名だけを表示(重複を除く)
- ユーザーIDを降順に並べて3件分を表示
- 名前に[す]が含まれる商品
- 500円以上購入した人
- 商品ごとの売上金額
- 7/10 12:00~7/12 11:00の間に購入した人
- 食品,飲料,アルコールで分類した集計
- データを結合して、顧客ごとの購入金額
2. データセットとテーブルの準備
BigQueryにデータセット[store]を作り、[sales]テーブル、[customers]テーブル、[order]テーブルを作成します。テーブルの作成方法は、下記のCSVファイルを3枚作成し、BigQueryにアップロードします。詳しくは前編をご覧ください。
3. 項目ごとのデータ加工方法
商品名だけを表示(重複を除く)
A)は全ての商品名、B)は重複を除いた商品名を表示します。
ユーザーIDを降順に並べて3件分を表示
膨大なデータを抽出する際は、「LIMIT」で表示件数を指定します。BigQueryは従量課金制のため、クエリ実行前に画面内のデータ消費量を確認すると安心です。また、並び順については、降順は「DESC」、昇順は「ASC」です。昇順はデフォルトのため省略が可能です。
名前に[す]が含まれる商品
レコードを検索するには、LIKE句で「%」を付けます。「%」の位置に任意の文字列が入るため「%すいか」の場合、「すいか」で終わる文字が検索されます。任意の1文字が含まれるものを検索する場合は「_」を入力します。
500円以上購入した人
金額の絞り込みは、500円以上は「>=500」です。500円以上1,000円未満は両方を「AND」でつなぎ、「cost >= 500 AND cost < 1000」と書きます。
商品ごとの売上金額
商品ごとのグループ化は「GROUP BY」で指定します。SELECT句は、GROUP BY句で指定した列と集計関数のみを指定することができます。
7/10 12:00~7/12 11:00の間に購入した人
期間指定は「BETWEEN」で値の小さいものを先に置き、「値1<値2」の順で指定します。
食品,飲料,アルコールで分類した集計
商品を、食品、アルコール、飲料に分類して合計金額を出します。CASE文で条件分岐を作り、WHENで条件、THENで表示内容を記入します。条件を満たさないパターンもELSEで指定します。
データを結合して、顧客ごとの購入金額
データが複数テーブルに分かれている場合、テーブル同士を結合します。顧客ごとの購入金額は、「customersテーブル」と「orderテーブル」で共通する「name」をキーとして内部結合します。さらに「SUM」で合計金額を出し降順に並べています。
ここまで超基本的なSQL文を解説しました!SQLの書き方はこの通りでなく他にも方法があります。是非BigQueryで実際にクエリを書いて、データを触ってみてください。
この記事を書いた人
池田 志穂
メンバーズデータアドベンチャーのデータアナリスト。大手企業のWebデザイナー/コーダー/Webディレクターを経て、システム会社にてコンサル業務とPMに従事し、2019年メンバーズ再入社(リメンバーズ)。