Slide 1

Slide 1 text

BigQueryでSQL入門 2020/07/05 GCPUG女子会 #9

Slide 2

Slide 2 text

Hello! たかひらめぐみ と申します ・駆け出しデータ系コンサルタント ・前職ではデータエンジニア?整備人? ・GCP 特にBigQuery大好き ※本資料はあくまで個人の見解であり、所属組織の公式的な見解ではありません @megumi_takahira 2

Slide 3

Slide 3 text

突然ですが・・・ この中でBigQuery 使ったことある方 コメントで挙手 ノシ してください

Slide 4

Slide 4 text

申し訳ありません。今日の私の話は BQ使った事ある方には簡単すぎて きっとつまらないので twitterハッシュタグ   #GCPUGjoshi  #BQへの愛を叫ぶ で愛を叫んでお待ちください!

Slide 5

Slide 5 text

このお話の対象者  ・BigQueryって聞いた事あるかも  ・SQLいっこもわからん  ※非エンジニアの人でもOK! 簡単なハンズオンを用意しています 一緒にやっても、資料をみながら後で やってみても良いので ぜひ一度触ってみてください!

Slide 6

Slide 6 text

BigQuery 概要(ざっくりと) ・フルマネージドサービス ・標準SQLでビッグデータにアクセスできる ・ものすごくはやい

Slide 7

Slide 7 text

BigQuery 概要(ざっくりと) ・基本は従量課金 課金対象:   データのスキャン量   ストレージ  ※ネットワークやCPUの使用量に関しては課金されない  ※プレビューとメタ情報に関しては課金されない 詳細は公式ドキュメントを参照 https://cloud.google.com/bigquery/pricing

Slide 8

Slide 8 text

BigQuery 概要(ざっくりと) ・BigQuery サンドボックス   サンドボックスを使用すると   クレジット カード情報を入力することなく、   Cloud Console でウェブ UI を使用できます。 環境構築・課金設定なしではじめられる  ↓ これからSQLを勉強する場合にピッタリ!

Slide 9

Slide 9 text

HANDSON 9

Slide 10

Slide 10 text

Cloud Consoleを開き、利用規約に同意 https://console.cloud.google.com/?hl=ja

Slide 11

Slide 11 text

ナビゲーション ペインで [BigQuery] をクリック

Slide 12

Slide 12 text

プロジェクトを作成する

Slide 13

Slide 13 text

プロジェクト名を入力して[作成]をクリック 任意のプロジェクト名(デフォル トのままでもOK)

Slide 14

Slide 14 text

完了!

Slide 15

Slide 15 text

再びナビゲーション ペインで [BigQuery] をクリック

Slide 16

Slide 16 text

BigQueryのコンソールが無事開けました

Slide 17

Slide 17 text

以下よりCSVをダウンロード pageviews_20200704_050000_over10requests.csv https://bit.ly/3dZ28Cj

Slide 18

Slide 18 text

データセットを作成

Slide 19

Slide 19 text

データセットIDを入力して(なんでもOK) [データセットを作成]をクリック

Slide 20

Slide 20 text

プロジェクトIDの左に出てきた▶をクリックし 表示されたデータセット名(先ほど作成した)をクリック

Slide 21

Slide 21 text

テーブルの作成 をクリック ウィンドウの幅によっては、右記 のような「+」ボタンのみで表示 されている事があるので注意

Slide 22

Slide 22 text

テーブルの作成元のプルダウンから[アップロード]を選択し、 [参照]をクリックして、先ほどローカルにダウンロードした CSVファイル(pageviews_20200704_050000_over10requests.csv)を指定する アップロードするファイルを選択すると ファイル形式は自動で認識される

Slide 23

Slide 23 text

テーブル名を入力(なんでもOK)

Slide 24

Slide 24 text

自動検出 スキーマと入力パラメータ をチェック

Slide 25

Slide 25 text

[テーブル作成]をクリック

Slide 26

Slide 26 text

ジョブが作成された数秒後、左下に「テーブル名」が作成されました と表示されたらテーブル作成完了 このメッセージ(とリンク)結構すぐに 消えてしまいますが慌てなくて大丈夫です

Slide 27

Slide 27 text

データセット名の左に出てきた▶をクリックし 表示されたテーブル名(先ほど作成した)をクリック

Slide 28

Slide 28 text

クエリを実行する前に、メタデータ(テーブルについての説明等) をみていきます

Slide 29

Slide 29 text

メタデータだけでも結構いろんな事がわかります

Slide 30

Slide 30 text

いよいよSQLを書きます! [テーブルをクエリ]をクリック ウィンドウの幅によっては、右記 のような「 」ボタンのみで表示 されている事があるので注意

Slide 31

Slide 31 text

SELECT と FROMの間に * (アスタリスク、前後にスペースが必要) を追記してドライランを確認 さきほど作成した [プロジェクト名].[データセット名].[テーブル名] を使った基本のSELECT句が自動生成されている ここに * (アスタリスク前後スペース)を追記 USの場合$5.00 per TBなのでこのクエリの課金は $0.00003(サンドボックスの場合は無料)

Slide 32

Slide 32 text

実行!

Slide 33

Slide 33 text

結果が表示される

Slide 34

Slide 34 text

SELECT*で確認したい内容はたいていプレビューで確認できる (ちなみに LIMIT は表示行数を減らすだけでスキャン量削減には効果なし) 大きめのテーブルを検索する際には、必要な項目(列)のみ指定する事を推奨 Limit1000 を消してもスキャン量は 変化しない事を確認してみてください

Slide 35

Slide 35 text

SQLの基本 SELECT:  どの項目(列)のデータを検索するか FROM:  どのテーブルから検索するか WHERE:  どのような条件で行を検索するか 今さらだけど

Slide 36

Slide 36 text

先ほどクエリを実行した画面で、再度テーブル名→スキーマを参照

Slide 37

Slide 37 text

先ほどの*を消し、スキーマのフィールド名[title][requests]クリック 末尾に WHERE wiki = 'ja' を追記 *を消す 末尾に WHERE wiki = 'ja' を追記 フィールド名をクリックすると 自動で必要な部分に,(カンマ)を つけて入力してくれる

Slide 38

Slide 38 text

構文を確認して、実行 SELECT: どの項目(列)のデータを検索するか FROM: どの表から検索するか WHERE: どのような条件で行を検索するか

Slide 39

Slide 39 text

結果が表示される

Slide 40

Slide 40 text

SQLの基本 ORDER BY:  特定のカラムの値に応じて行を並び変える ※昇順、降順について  未指定またはASC→昇順  DESC→降順 今さらだけど

Slide 41

Slide 41 text

末尾にORDER BY句を追加して実行 末尾に ORDER BY requests DESC を追記

Slide 42

Slide 42 text

結果が表示される

Slide 43

Slide 43 text

SQLの基本 GROUP BY: SELECT文において特定の列の値が等しい行ごとに表 をグループ化する。SUMやCOUNTなどの、集計関数 を使用する場合は指定が必要。 今さらだけど

Slide 44

Slide 44 text

以下のようにSQLを変更して実行 SELECT句を wiki, SUM(requests) に変更 GROUP BY wiki を追記 ORDER BY句を SUM(requests) に変更

Slide 45

Slide 45 text

結果が表示される

Slide 46

Slide 46 text

本日使用したデータについて Query the Wikipedia dataset in BigQuery: https://codelabs.developers.google.com/codelabs/cloud-bigquery-wikipe dia/index.html 上記のチュートリアルを参考にして、最近のデータ(2020/7/4 050000) を取得し、ローカルからアップロード可能な10MB以内になるように requestsが10件以上のデータに絞ったものです。 Cloud Shellを使用したりと、本日のハンズオンより少しレベルアップする 内容になっているので、ぜひチャレンジしてみてください。

Slide 47

Slide 47 text

Thanks! 47  @megumi_takahira