非エンジニアのSQL学習ことはじめ
非エンジニアのSQL学習ことはじめ

非エンジニアのSQL学習ことはじめ

💡
※ この記事は、LayerX Advent Calender 2022(概念)の記事です。

これは何

  • 「来年こそはSQL書けるようになるぞ」と思ってる方に向けた、1日1時間・3か月でSQLそこそこできるようになる学習方法について書いた記事です
  • 長文がつらつら書いてある本稿ですが、要するに言いたいことは
  • 📝
    SQL最速で身につけたいなら、 ProgateのSQLコースを2~3周やる ⇒ 書籍『集中演習 SQL入門』の練習問題200問超を全部やる が勉強方法としては最適解

    ということです。

  • なのでご理解いただけた方は本稿をそっと閉じ、下記リンクにて課金! (※Progateさんや著者の木田さんからお金などは何も貰ってません、為念ですが)
  • Progate(プロゲート) | Learn to code, learn to be creative.

    Progateはオンラインでプログラミングを学べるサービスです。プログラミングを学んでWEBアプリケーションを作ろう。

    Progate(プロゲート) | Learn to code, learn to be creative.
    集中演習 SQL入門 Google BigQueryではじめるビジネスデータ分析 できるDigital Camp

    Amazonで木田和廣の集中演習 SQL入門 Google BigQueryではじめるビジネスデータ分析 できるDigital Camp。アマゾンならポイント還元本が多数。一度購入いただいた電子書籍は、KindleおよびFire端末、スマートフォンやタブレットなど、様々な端末でもお楽しみいただけます。

    集中演習 SQL入門 Google BigQueryではじめるビジネスデータ分析 できるDigital Camp

<Table Of Contents>

  • これは何
  • はじめに
  • 取り組むことになったきっかけ
  • 1. LayerXへの転職
  • 2. 運営しているECサイトのデータ基盤整備
  • 3. Universal Analytics(UA) → Google Analytics 4(GA4)への変更
  • 学習前の自分のレベル感
  • どれくらいのレベルになるのか
  • 身につけ方
  • 学習方法サマリ
  • 学習時間の目安
  • 学習教材について
  • オンライン学習
  • 書籍
  • 自分は合わなかった書籍
  • 動画
  • PlaygroundとしてのBigQuery
  • 初級編:リトマス紙としてのProgate
  • 初級:「クエリが読み解けない」を突破する
  • 中級編:関数のボキャブラリーを増やし、実践で使う
  • 中級に上がり、「Excelならこれできるのに><」ができない人へ
  • 中央値
  • 移動平均
  • 加重平均
  • ピボットテーブル
  • RFM分析
  • バスケット分析
  • 番外編:クエリの外に出る
  • データベースやSQLという言語自体の理解
  • データ基盤の理解(Data lake/DWH/Data mart)
  • GA4の特徴と仕様の理解
  • BigQueryの特徴と仕様の理解
  • やらなくていいこと
  • 環境構築
  • SELECT文以外を覚えること
  • 続けるためのメソッド
  • やらなきゃいけない状況を作る
  • 習慣化 is 正義
  • 記録を付ける
  • クエリをGitHubで管理する
  • もくもく会に参加する
  • やってみての気づき
  • 取っつきにくそうだが意外と学習コスト低い
  • 大人になってからのほうが勉強は楽
  • 結局のところ最初は量
  • RDBの理解はあったほうがベター
  • 「クエリを書けること」以外のメリット
  • 正規表現、カラム数、データ型に敏感になる
  • 指標の定義に敏感になる
  • システムの裏側をイメージしやすくなる
  • 頭のリフレッシュになる
  • おわりに
  • シェアする
  • Comment

はじめに

こんにちは!すべての経済活動をデジタル化したいLayerX伊藤です♨ (言ってみたかった)

今年も気づけばあと1ヶ月と少し。ぼちぼち忘年会の予定や、この1年の振り返り的なイベントが入ってきている方も多いのではないでしょうか。

そして年始の目標に掲げていた「今年こそSQLできるようになる!🔥」という過去の自分の宣言と、まったくできるようになっていない現状を比較して自己嫌悪に陥っているBizサイドの人も多いのではないでしょうか。

本稿はそんなあなたに向けた記事になります。

取り組むことになったきっかけ

かく言う自分も今年の春くらいまではまっっっったくSQLできませんでした(今も"できる"とは言い難い…)

前職のReproはRedashを使っていたのでダッシュボードは見ていたのですが、ソースコードには全く触らず。dmemo(データベースドキュメント管理システム)も閲覧はできましたが「ほーん😗」という感じ。

💭
🙍‍♂️< SQL? ぼくExcelもGAもそこそこ使えるから要らんやろ

くらいの気持ちでおりました。

そこに、「転職」「GA4の登場」「運営してるECのデータ基盤整備」というトリプルパンチ👊👊👊 が到来し、これはできるようにならねばヤバい、、、ということで学習を始めました。まさに必要は発明の母。

1. LayerXへの転職

まず第一の焦りはLayerX社への転職です。(ちなみに入社しましたポストはこちら)

働き始めているのは11月からなのですが内定は夏にはいただいており、「内定もらったはいいけど、激ヤバエンジニア集団のイメージがあるLayerXで自分は活躍できるのか不安だな~😧」と思っていた矢先にこんな記事が出ました。

SQLは口ほどにものを言うーRedashによるクエリ共有、監視、データ連携によるチーム効率化ー - LayerX エンジニアブログ

こんにちは。DX事業部の花村(@naomasabit)です。先日の投稿でユーザーの利用状況確認のために AWSのQuickSightを利用している と書きましたが、並行して分析ツールのRedashも利用しています。Redashの良い点としてクエリベースでの分析、監視アクション、スプレッドシートとのデータ連携が存在します。 ...

SQLは口ほどにものを言うーRedashによるクエリ共有、監視、データ連携によるチーム効率化ー - LayerX エンジニアブログ
LayerXではBizメンバーがSQLを叩くことが日常となっているため、クエリを書いてささっと共有してコミュニケーションをしています。

う…😧

そしてfukkyyさんのTweet。

共通言語的にみんなができるSQL

うう…😧

更には、LXに入るきっかけをくれた野畑君からも。

image
結構DX部(SaaS事業部)のみなさんSQL使ってる

うわああああ😧

(でもブロックチェーンは必要ないんだ良かった)

…ということで、転職によってお尻に火がついてしまいました。

2. 運営しているECサイトのデータ基盤整備

会社からのプレッシャーの次は事業からのプレッシャーです。

経緯は諸々割愛しますが、LayerX社と兼業の銭湯ぐらしという会社で、この1年半ほどサブスク型のD2C事業をやっております。

細々やるつもりだったのであまり考えずカートシステムをBASEにしたのですが、けっこうな注文数/月商が立っている今でもBASEを使い続けていて大変つらい、移管プロジェクトが絶賛進行中という現状があります。

(BASEは素晴らしいサービスなのですが、如何せんリピート通販向けではないのと今の事業のフェーズに合わず…🥲)

アクセスログやらお客様のアクティビティやらの各種データはスプレッドシートとAirtable(※RDBがシュッと作りやすいSaaS)に溜め、必要に応じてこねくり回して分析&可視化している状態。

(
(CS HACK #61 で登壇したときの資料より抜粋)

カートシステムの移管を考えるにあたり「さすがにデータの集約がスプシとAirtableのままなのはまずい」と気づき、

色々な会社さんのアーキテクチャを見ていたらスタートアップはやっぱりBQを採用しているところが多かったので「銭湯ぐらしでもこれをやろう」ということでBigQueryを触り始めたらここでもSQLが…!

SQLというよりは「データ基盤にはBigQueryが良さそう → BQ使うならSQLマストやんけ😧」という順番なのですが、こちらも自分を焦らせるには充分な動機でした。

1ヶ月でデータ基盤を整え経営の解像度を変えた話
1ヶ月でデータ基盤を整え経営の解像度を変えた話
非エンジニアによるスマービーのデータ解析とプロダクト・マーケティングへの活用
非エンジニアによるスマービーのデータ解析とプロダクト・マーケティングへの活用
DELISH KITCHENの分析基盤について
DELISH KITCHENの分析基盤について
プレイドとNRIデジタル、GCPを活用したデジマやDXの支援を開始 短期間で検証プロセスを体感
プレイドとNRIデジタル、GCPを活用したデジマやDXの支援を開始 短期間で検証プロセスを体感

3. Universal Analytics(UA) → Google Analytics 4(GA4)への変更

最後は市場トレンドからのプレッシャーです(こちらは1と2ほど強いプレッシャーでも無いですが)

昨年からデジマ界隈を賑わせているHot Topicの一つが「Googleアナリティクス 4(GA4)」だということは皆さん周知の事実かと思います。

この変更も自分は「ほーん😗」という感じだったのですが、SQLよりは取っつきやすく感じたのと、Reproでも話題になっていたり前述のECサイトでもGA4設定せねばだったのでちょこちょこ調べていました。

そうしたら、アクセス分析の大家(たいか)である小川さんや後述する本の著者プリンシプル木田さんはもちろん、マーケ界隈で身近で尊敬している石渡さんなどもGA4とBQ、そしてSQLを一緒に語っているではありませんか。

幸か不幸かGA4の管理画面はめちゃくちゃ使いづらいのでGA4の使い方を新規で覚えるんだったらBQもSQLも一緒に覚えてしまおう、という結論になりました。

要するに「転職」「GA4」「データ基盤整備」の3つがほぼ同時にやってきて

💭
わからん、オワタ 😇

となっていたのが夏ころまでの自分です。

学習前の自分のレベル感

学習を始める前の自分のレベルはこんな感じです。大学の専攻やキャリアの主軸に分析がきたことは一度もない、まあティピカルな文系Biz人材というかんじ。

  • ド文系。数学は大学受験で数ⅡBまで。旧帝大レベル
    • ちなみに謎の誤解を持たれている方ちょいちょいいますが「数学できるかできないか」はSQL学習にほぼ関係ないです
  • Excelはまあできる
    • 広告運用レポート / 事業計画 / プロジェクト管理etcの実務
    • MOSのExcelエキスパートに載っているようなpivotや統計関数いくつかなどは普通にでき、業務でも経験有
  • リレーショナルデータベースへの最低限の理解はある
    • EC運用、Reproでの経験

どれくらいのレベルになるのか

ではそんな素人が1日1時間・3か月やったらどれくらいのクエリが書けるのか?

実例を挙げたほうがわかりやすそうなので、書籍『集中演習 SQL入門』の練習問題をいくつか抜粋してみます。

<問題の例>

💡
Q55. [customers]テーブルから、月曜日に生まれた、もっとも年齢の高い顧客について、顧客id(user_id)、氏名(name)、誕生日(birthday)を取得してください Q162. [sales]テーブルの[revenue]において、2017年の標準偏差(stddev_2017)と、テーブル全体の標準偏差(rev_stddev)を求めてください。ただし、データはサンプルではなく全数と考えます Q197. [web_log]テーブルで「/special/diet/」を閲覧したセッションと、閲覧していないセッションでそれぞれのCVRを取得してください。 (『集中演習 SQL入門 Google BigQueryではじめるビジネスデータ分析』より抜粋)

これくらいであれば、必要に応じてBQの関数リファレンスを見ながらにはなりますが、シュッとクエリで出せるようになります。

上記問題のうち、Q197の実際のクエリはこんな感じ。

<Q197のクエリ>

with t1 as(
  select
    concat(cid, session_count) AS session_id
    , max(if(page = "/special/diet/", 1, 0)) as view_diet_page
    , max(if(page = "/thank_you/", 1, 0)) as cv
  from sample.web_log
  group by 1
         )
,t2 as(
    select 
        if(view_diet_page = 1,true,false) as view_diet_page_session
        ,count(distinct session_id) as session
        ,sum(cv) as sum_cv
    from t1
    group by 1
    )
    
select
    view_diet_page_session
    ,sum_cv / session as cvr
from t2

<Q197の結果テーブル>

image

(with句2回使ってたりと、自分の回答がスマートな記述なのかは若干怪しい…🤔 ちなみに全ての問題の模範解答はネットに上がってます)

また、5年以上前のかなり古い記事ですが、エウレカさんのTech blog「SQLで分析を始めた人に贈る、中級者に上がるための10のTips 」とかに書いてあるものはほぼすべて理解~実践できるようになります。

まだ「SQL結構できます」などとは口が裂けても言えませんが、少なくともExcelなどと同様に

💡
・出したいデータに対して、調べながら自分で解を導ける ・自分でできない場合は、わからない箇所をおおよそ特定して他のクエラーに質問できる

というレベルにまでは到達できているかなと思います。

身につけ方

ここからは、「じゃあ実際にSQL書けるようになるためにはどう学んでいったらいいのか」について書いていきたいと思います(前置き長くてすみません…)

学習方法サマリ

  • 冒頭に書いたこととほぼ同じですが、Progateを速攻で終わらせてからの『集中演習 SQL入門』を隅から隅までやる、がオレ的最速です。
📝
< オレ的SQL最速学習方法 > ・ProgateのSQLコースを2~3周する ↓ ・書籍集中演習 SQL入門の練習ドリル230問をひたすらやる ・自社サービスにGA4 + BQの環境構築する ↓ ・練習ドリルの合間に書籍『達人に学ぶSQL徹底指南書 第2版』を読む ・データベースとかBigQuery関連の動画もちょいちょい観る

学習時間の目安

「本当に1日1時間を90日間やるだけで出来るようになるんかいな🤔」と不安な方もいるかもなので、上記学習を完了する目安を書いておきます 🗓️

  • ProgateのSQLコース:4~6日
    • SQLに関する4つのコースの完了目安時間は合計7hと書いてありますが、そんなにかからないかと
  • 書籍『集中演習 SQL入門
    • 読むのを5~7日(全8章なので1日1~2章)
    • 練習問題の230問を1日3問で70~80日(230 ÷ 3 ≒ 76.7日)
      • 後半に行くほど難易度が上がるが前半は楽勝問題ばかりなので、ならして3問/dayという感じ
  • その他の書籍や動画
    • 空き時間でちょくちょく

どうでしょう、コツコツやれば行けそうな気がしませんか?🧗

学習教材について

サブクエリ、JOIN、ウィンドウ関数など概念的に「🤔?」となるところを攻略したらあとはどれだけ色んな書き方のパターンや関数を覚えられるかのゲームになるので、

  1. 入門中の入門として一番説明がわかりやすいProgate
  2. Progateでカバーしていない概念系の説明がわかりやすく、手を動かせる問題が200問以上ある『集中演習 SQL入門
  3. 色々なクエリを書いていくにつれて追加で浮かんでくる疑問と、データベースとは何かについての理解を深めてくれる『達人に学ぶ-SQL徹底指南書

の3つがSQL初心者向け3種の神教材になるかなと思います。

3つすべてに課金(購入)しても6,500円くらい。あとは必要に応じて公式ドキュメント/Qiita/Zennなどをググればわからないところも解消できるので、個人的にはお金払うのはこの3つでよいかなと思ってます。

オンライン学習

  • Progate一択でいいかと思います
    • 比較していないのでわかりません😇 Udemyとかどうなんでしょうね
Progate(プロゲート) | Learn to code, learn to be creative.

Progateはオンラインでプログラミングを学べるサービスです。プログラミングを学んでWEBアプリケーションを作ろう。

Progate(プロゲート) | Learn to code, learn to be creative.

書籍

  • 何回言うねんという感じですが、『集中演習 SQL入門 Google BigQueryではじめるビジネスデータ分析』が最強です。
    • "演習"や"BigQuery"というワードを書いているが故に「他のSQL入門書よりも難しそう…🙁」と誤解されてしまっているのではと思うのですが、普通に各チャプターの構文解説もわかりやすいです。
    • 著者の木田さんはGAに関しても『できる逆引き Googleアナリティクス Web解析の現場で使える実践ワザ240』という素晴らしい著書があってほんと凄いなと
  • あとは読み物要素が強めですが『達人に学ぶ-SQL徹底指南書』がおすすめ
    • 同じシリーズで『達人に学ぶDB設計徹底指南書』があるのですが、こちらは「データベースとは」や「なぜテーブルは分割する必要があるのか」などDBそのものに対する理解が深まるので、読めるようであれば両方読んだ方が良いです

自分は合わなかった書籍

  • スッキリわかるSQL入門 第2版 ドリル222問付き!
    • パラ読みしかしていないですが、大半の内容はProgateでカバーしてそうと思います
    • この本が用意している「dokoQL」という環境を使ってやるのですが、これだったらProgateにも同じ環境あるなと
    • あとこれはProgateもそうですが、select 出金額 from 家計簿のようにサンプルで出てくるテーブルのカラム名が日本語なのが自分は違和感ありました… 😗
  • ソフトウェアデザイン 2017年 11 月号 [雑誌]
    • 非エンジニアが気づいたらSQL書けるようになった話@BASEで紹介されていたので買ってみましたが、本号目玉の「SQL50本ノック」は量も実践との近しさも『集中演習 SQL入門』に及ばず、買ってパラ読みしてすぐやめました🙁
    • あと(演習だけなので当然ですが)環境構築は読み手にお任せ、というのも初心者にはちょっと敷居が高いのかなと思います
  • 10年戦えるデータ分析入門
    • Gunosyテックブログなどをはじめ、よくSQL始めるための入門として紹介されていますがまだ読んでいません😇 良い本とは聞いたので、いつか読んでみる…

動画

SQL自体を動画で学ぶことは無かったのですが、データベースとBigQueryの学習に関しては本やGoogleの公式ドキュメントよりも動画でわかりやすいものがいくつかあったのでちょいちょい観てました。

  • データベースの話
    • 何本か違う人のYouTubeを観て、個人的にはこれが一番わかりやすかったです
    • データベース設計入門#1 リレーションとER図【11分でマスター!DB設計】

      データベース設計の入門講座です。リレーション(一対多/多対多/一対一)とER図について解説。【⏬もっと見る】→ ✅目次 ✅プロフィール・お仕事依頼✅関連動画✅サブチャンネル✅目次00:00 イントロ0:22 リレーションとは(一対多/多対多/一対一)2:12 ER図04:02 覚えなくて良い言葉(エンティティ...

      データベース設計入門#1 リレーションとER図【11分でマスター!DB設計】
  • BigQueryの話
    • Data Engineering Study #6「改めて学ぶ、BigQuery徹底入門」のGoogleの方の講演がめちゃくちゃわかりやすいです。
    • これ以外も Data Engineering Studyの勉強会動画は面白いので他のも観てみるとよいかと
    • [Cloud OnAir]BigQuery ML と AutoML Tables ではじめるマーケティング分析入門[2019年5月23日放送]など、Google Cloud Japanの公式動画もわかりやすいです。

動画は英語だともっといっぱいありそうです。

PlaygroundとしてのBigQuery

前述の通り、概念系の「🤔?」をひと通り理解したらあとは手を動かすのみ!なのですが、そこでとってもありがたいのがBigQuery。

icon
・環境構築など小難しい準備が必要ない ・自分で練習用として使うレベルなら無料 ・スプレッドシートやCSVなど読み込ませればそれをデータソースとしてクエリで扱える

文法に多少差異があるので自社でRedashやMetabeseがデファクトになっている場合はそちらをPlaygroundとするでも良いかなと思いますが、

本稿で推している『集中演習 SQL入門』はBigQueryを前提とした書籍になっているので特に制約がなければBQで良いかなと。

初級編:リトマス紙としてのProgate

ここからは、この学習方法を進めるにあたっての躓きポイントや所感などを書いていこうと思います。(超初級〜中級のレベル感は完全に自分の独断と偏見です)

再掲

📝
< オレ的SQL最速学習方法 > ・ProgateのSQLコースを2~3周する ↓ ・書籍集中演習 SQL入門の練習ドリル230問をひたすらやる ・自社サービスにGA4 + BQの環境構築する ↓ ・練習ドリルの合間に書籍『達人に学ぶSQL徹底指南書 第2版』を読む ・データベースとかBigQuery関連の動画もちょいちょい観る

まずは超初級編としてのProgate(プロゲート)から。

Progate(プロゲート) | Learn to code, learn to be creative.

Progateはオンラインでプログラミングを学べるサービスです。プログラミングを学んでWEBアプリケーションを作ろう。

Progate(プロゲート) | Learn to code, learn to be creative.

Progateに関しては、「そもそも自分はクエラーとして適性があるのか」を測るリトマス試験紙としてとりあえずやってみるのが良いと思います。

おそらくSQLのコースI~IIIまでひと通りやってみたときに躓くのは

  • whereとhavingの使い分け
  • distinct
  • サブクエリ
  • JOIN

あたりだと思いますが、1周目はともかく2~3周やってみても分からなかったら教材としてのProgateがどうこうという話ではなくおそらく根本的に向いていないので、

「自分は向いていないんだな」と諦めたほうが良いかなと思います。人生、諦めも肝心 😇

逆にここで「楽し~!」となったりSQLZOOとか他サイトの問題をProgate側で書いてみたりする気持ちがあれば、このあともやり切れる可能性が高いです。

初級:「クエリが読み解けない」を突破する

Progateが終わったら、神教材その2にして90日間の学習のほとんどを費やすことになる集中演習 SQL入門に入っていきます。

ちなみにProgateで学ぶことはこの書籍もすべてカバーしているので、いきなりこの書籍から始めてもいいと思います 📔

Progateやってからすぐに会社のエンジニアが書いているクエリの写経などで学ぼうとすると爆死するので、この書籍の各チャプターで下記の構文を覚えていきます 📝

  • if文とcase式 (条件分岐)
    • 色んな所に出てきますが、Excelのif文と基本変わらないです。
  • JOINの色んなパターン
    • ProgateではJOINとLEFT JOINだけしか出てこないのですがSELF JOIN や CROSS JOIN も覚えましょう。
    • あとテーブル結合には onではなくusingも多く使うので覚えましょう。
  • UNION
    • 横につなぐJOINに対して縦につなぐUNION。
    • ベン図で覚えるのが良きです🌜
    • (「
      (「Sql Intersect」より)
  • サブクエリ
    • Progateでも出てくるが本当に色んなパターンがあるので、この書籍で手を動かして学ぶ。自分もここが未だに一番苦手…
  • with句(仮想テーブル)
    • 複雑なクエリを綺麗にしてくれる便利なwith。サブクエリで入れ子にするものの多くはwith句のほうが見やすくなるケースが多いです。
    • 自分も結構with句に逃げがちなのですが、BigQueryについては一時テーブルのほうがいいらしいです。慣れなきゃ…😧
  • window関数
    • OLAP関数とか分析関数とか色んな名前があってややこしいのと書き方が特殊なので慣れないうちは難しく感じますが、慣れてしまうと便利です。
    • OVERはwindow関数を使いますよーというサインです。
    • 移動平均やnth_valueなど、このあたりから単純なデータ抽出やクロス集計の域を超えてくるので「Excelより便利だわ~い」となります。
  • (BigQueryを使う場合) UNNEST
    • BigQueryでGA4のデータを扱うなら避けて通れないUNNEST。
    • これも学習開始後にしばらく経って「結構クエリ書けるじゃんオレ😎」と調子乗ったタイミングでGA4のテーブル見ると何もわからず爆死するので、なぜこういうテーブル構造なのかというところも含め勉強しましょう。
    • BigQuery 活用術: UNNEST 関数

      Firebase Analytics で UNNEST 関数を使い BigQuery を活用する方法をご紹介します。

      BigQuery 活用術: UNNEST 関数
      Googleアナリティクス4のBigQueryエクスポート仕様 | marketechlabo

      GA4のBigQueryエクスポートの仕様とデータの扱い方を説明する。GA4のログはネストされたレコードなど特殊な形式になっており、そのままでは扱いにくいのでいくつかテクニックがある。 GA4の管理画面で設定するが、手順はこちらの記事を参照。 GA4のBigQueryエクスポート設定で指定したプロジェクト ...

      Googleアナリティクス4のBigQueryエクスポート仕様 | marketechlabo

ここまでひと通り終えると、関数単位でわからない(知らない)ところはまだまだ沢山出てきますが、他の人が書いたクエリを読んで「何がどうなってんだこの書き方??🤔🤔」と文法から理解不能になることはまずなくなるはずです。

英語学習でいうと、時制や仮定法、SVOCなど5文型をひと通り覚えてあとは単語やイディオムの蓄積を増やしていく段階と同じ感じ?(適当)

中級編:関数のボキャブラリーを増やし、実践で使う

書籍『集中演習 SQL入門』の各チャプターを1周したら上記で挙げた文法はひと通り修了するので、あとは100本、いや、230本ノックです⚾

📝
書籍『集中演習 SQL入門』の練習ドリル230問をひたすらやる

練習問題に取り組む過程で、

  • 数値変換系の関数
    • 四捨五入したり変換(cast)したり
  • 日時変換系の関数
    • タイムゾーン直したりクオーターごとにまとめたり
  • 文字列変換系の関数
    • 文字列つなげたり数えたり抜き出したり
  • 正規表現
    • urlのパラメータとったり👆より柔軟に文字列置換したり

など実務で当たり前に出てくる関数を何度も書くことになるので、最初はBQの関数リファレンスを何度も見ながらになって時間かかると思いますが、繰り返しやって自分の血肉にしましょう🍖🔥

また、この段階まできていて、実務で沢山クエリを書く機会がある方は無理に230問すべてをやる必要は無いと思います。

BigQuery、Redash、Metabeseなどなど各々に用意された環境で頑張りましょう〜

中級に上がり、「Excelならこれできるのに><」ができない人へ

  • ある程度書けるようになっても、「これExcelでやったら秒なのに😕」というのが出てくると思います。改めてExcelって色んな関数や分析機能が標準実装されていて凄いツールだな~と
  • そんな方のために、逆引き的によく使いそうなものを書いておきます。
    • クエリは該当の箇所の抜粋で全文ではないのでご留意ください。

中央値

  • MEDIAN関数あると思うじゃないですか?無いんですよ🙄
  • 覚えにくいかもですがPERCENTILE_CONT関数を使えばできます。
    • 0.5のところは可変なので0.25などにすれば四分位数もとれます。
    • --男女別の年齢の平均値と中央値
      if(gender = 1,"男性","女性") as gender
      ,avg(
          datetime_diff("2021-12-31",birthday,year)) over(
              partition by gender
          ) as avg_age
      ,percentile_cont(
          datetime_diff("2021-12-31",birthday,year),0.5) over(
              partition by gender
          ) as median_age

移動平均

  • 前述のwindow関数avg を使えば簡単にできます。
  • --前後1ヶ月を含めた移動平均
    avg(sum_rev) over(
    	order by year_month
    	rows between 1 preceding and 1 following
    	) as moving_avg_rev  

加重平均

  • Excelだと「SUMPRODUCT関数」使って一発で出せるやつですね。前職入社当初、加重平均を知らなくて算術平均で出したら上司にボコされた淡い思い出。
  • sum内で"重み×数量"を掛けて数量で割ればスッと出ますね。
  • --価格×数量の加重平均
    select
        avg(revenue) as average
        ,sum(revenue*quantity)/sum(quantity) as weighted_average
    from sample.sales`

ピボットテーブル

  • いわゆる「縦持ち」を「横持ち」にするってやつですね。これもExcelだとよーく使いますが、Bigqueryでも今年の5月にPIVOT関数が出ました。
  • 書籍『集中演習 SQL入門』刊行時点では無かった関数なので、Googleの公式ブログなど見て書き方を覚えましょう。
  • BigQuery のユーザー フレンドリーな SQL とともに快適な夏を | Google Cloud Blog

    ※この投稿は米国時間 2021 年 5 月 25 日に、Google Cloud blog に投稿されたものの抄訳です。夏をすぐそこに迎え、熱気が高まってきています。しかし今月、BigQuery が、ユーザー フレンドリーな SQL のリリースとともに、冷たい飲み物でいっぱいのクーラー ボックスのような快適さ

    BigQuery のユーザー フレンドリーな SQL とともに快適な夏を | Google Cloud Blog
    BigQueryでpivotとunpivotするやつ2 - Qiita

    だいぶ前に、pivot, unipivotのBigQueryの記事を書きました https://qiita.com/taniyam/items/aa235248859499f1bfbb この時は公式対応されておらず、スマートにクエリを書くことが難しく、複雑なクエリになりがちでした。 しかし、とうとう公式でpivot, unpivotが来たので紹介したいと思います。 https://cloud.google.com/bigquery/docs/release-notes#May_10_2021 (ほぼ、公式ドキュメントに添います。) 私が試したメモとしてこの文章を残します。 pivotとは 縦長テーブルのフィールドをカラムに置き換えて 横長テーブルを作ることです。 unpivotはその逆。 ただし、pivotは集計を伴う場合があり、pivot処理は不可逆的になる場合があります。 縦長テーブル 横長テーブル 二つのテーブルは行数や列数こそ違いますが、表している情報としては同じです。 ただ、quarterがQ3までしか入っていない時にQ4を追加する場合を考えると 縦長で保持する方が行を追加するだけで済み対応が楽です。 カラムを追加するのはスキーマの変更を伴い重たい作業になってしまいます。 一方で、 横長 の方がquarter,productごとの比較が見やすいです。 以下の縦長テーブルを横長テーブルに変換したいと思います。 作ったテーブルに対して、以下のクエリを発行すると横長テーブルになります。(試したい場合は上のクエリをWITH句にして下のクエリと連結した方が見やすいかも) ここで、新しく追加されたPIVOT Operatorが出てきて、結果は となります。PIVOTの中で指定されていない productがユニークになり出力されいるのがわかります。 つまり、PIVOTの前のFROMで必要なカラムだけに絞っておくことが重要です。 PIVOTの使い方は公式に以下のようにあります。 集計関数を記述し、 input_columnで展開したカラムのフィールドになります。 エイリアスをつけることで、複数指定することもできます。 その場合、自動生成されるカラム名は「エイリアス名_ pivot_column 」となります。 PIVOT Operatorの前のFROM句で指定しているテーブルの aggregate_function_call, input_columnで指定され なかった残りのカラムがキー(ユニーク)になり、行で出力されます。 余ったカラムと input_column をキーにGROUP BYするイメージですね。 縦横変換したいカラムを指定します。 式が使えるので空中でカラムを作ったり、型を変換したりできます。 STRING型以外の型もある程度使えるようです。 input_columnで横展開し新しく作るカラムを指定します。 ここで指定した集合と input_columnで指定した値が一致したものが集計されます。 input_columnがSTRING型でBigQueryの仕様でカラム名にできない文字列の場合(日本語など)はエイリアスをつけることで別名にできます。 また、 input_column がSTRING型以外の場合も暗黙的にカラム名が生成されたりします。詳しくは公式ドキュメント参照。 ちなみに 定数限定で式が使えません!! みたいなことを書きたくなりますが、できません。残念。 query parameterも使えないそうです。 先ほどのテーブルを少し改造して profit のカラムを追加しました。 上のテーブルを下のクエリでpivotする 展開したカラム名が自動的に作られています。 このように aggregate_function_call ではエイリアスをつければ複数指定することもできます。 pivotテーブルは出力用途でフラットな表にすることを考えるとSTRUCTにしたいモチベーションも特にないような気がしますが、結果をSTRUCTでまとめたいならこう書けばいいでしょうか。 ( SUMにはなっていないしQ1~Q4が配列になるため、その後の処理がQ1~Q4に対してUNNESTが必要なり大変そう。 SUMになっていない問題は前段のクエリであらかじめ SUMしておき、 product, quarter でユニークにしとけば大丈夫そう。) おまけで input_columnがSTRINGではないパターンを試しました。 (このpivot操作で得られる表自体に特に意味はありません) 数字のままだとカラム名にできないため、暗黙的に「_」がついています。 また、 eight ...

    BigQueryでpivotとunpivotするやつ2 - Qiita

RFM分析

  • Recency(直近いつ)、Frequency(頻度)、Monetary(購入金額) の3次元でセグメント作るやつです。
  • それぞれOLAP関数で下記を使い、出したテーブルに対してデシルで使ったntile()を使えば割とすぐ出せます。
    • Rは first_value() (ないしlast_value())
    • Fはcount()
    • Mはsum()
    • with t1 as(
          select distinct *
          from (
              select 
                  user_id
                  ,first_value(date_time) over(
                      partition by user_id
                      order by date_time desc 
                  ) as last_purchased_date_by_users
                  ,count(distinct order_id) over(
                      partition by user_id
                  ) as num_of_order_by_users
                  ,sum(revenue) over(
                      partition by user_id
                  ) as rev_by_users
              from sales_record_table
              )
      		)
      select
          user_id
          ,last_purchased_date_by_users
          ,ntile(5) over(
              order by last_purchased_date_by_users desc
          ) as Recency
          ,num_of_order_by_users
          ,ntile(5) over(
              order by num_of_order_by_users desc 
          ) as Frequency
          ,rev_by_users
          ,ntile(5) over(
              order by rev_by_users desc 
          ) as Monetary
      from t1
      顧客分析の手法(デシル分析、RFM分析) | データ分析基礎知識

      データマイニングの大きな目的は、購買予測です。どの顧客が買ってくれそうかを予測し、効率的にその顧客にアプローチすることが求められます。そのためには、顧客を何らかの基準で絞り込んで抽出する必要があります。ここでご紹介する手法は、顧客が何を買ったかという情報がなくても機能するものです。 特定顧客の抽出 ■属性による絞り込み ...

      顧客分析の手法(デシル分析、RFM分析) | データ分析基礎知識

バスケット分析

  • 「ビールを買っている人はオムツも一緒に買っている」みたいなやつです。『集中演習 SQL入門』でもp208に少しだけ出てきます。
  • 慣れないと概念的にやや「🤔?」かもですが、同じテーブルを分身させて結合する自己結合(self join)するとできます
-- もっとも多くのuserに買われている商品idの組み合わせを出す
with t1 as(
    select
        sales_1.user_id
        ,sales_1.product_id
        ,sales_2.product_id as product_id_2
        ,concat(sales_1.product_id,"-",sales_2.product_id) as prod_combi
    from sample.sales` as sales_1
    inner join sample.sales`as sales_2
    on sales_1.user_id = sales_2.user_id
    and sales_1.product_id < sales_2.product_id
    order by 1
)
select
    prod_combi
    ,count(distinct user_id) as users
from t1
group by 1
order by 2 desc
トレジャーデータで実践:バスケット分析(頭の体操編)

バスケット分析(併売分析)は,アウトプットイメージやその分析の有用性についてはマーケティング業界の誰もが周知しているのに反して,実際にそれを実践できている所はそれ程多くはありません。 マーケット バスケット分析の使用 - Tableau また、実践できているにしても上の Tableau ...

トレジャーデータで実践:バスケット分析(頭の体操編)

番外編:クエリの外に出る

  • 番外編として、クエリ230本ノック以外にもやるといいことをつらつら書いてみます。
  • 本パートに関してはもっといい方法や「これもやっとく/読んどくと良いよ」というのが沢山ありそうなので、ご存知の方はぜひ教えてください🙏

データベースやSQLという言語自体の理解

  • 50~100本くらいクエリ書いたあとで、『達人に学ぶSQL徹底指南書』『達人に学ぶDB設計徹底指南書』の2冊を読んでみましょう。
  • それでも全体の5~6割くらいしか理解できないかとは思いますが(自分はそうだった)、
    • データベースというものがそもそもなんなのか
    • なぜウィンドウ関数はonじゃなくてoverなのか
    • RDB近現代史
    • データベースのパフォーマンスを決める要因
    • といった、今までの学習でふわっと理解していた概念や素朴な疑問を書いてくれているので、読むとより多面的な理解につながります。

  • 2冊とも普通に読み物として面白いので、クエリ書くのに疲れた合間にちょくちょく読み進めるのがいいかと思います。
  • あとこの2冊に書いていないが概念系で重要そうなものでいうと「行指向データベース」「列指向データベース」があるので、オプトさんの各種データベースの特徴とパフォーマンス比較のスライドなど読んでキャッチアップすべしです。

データ基盤の理解(Data lake/DWH/Data mart)

  • SQLが書けなくても、デジマ界隈の方々は「データレイク」「データウェアハウス」「データマート」について一定の理解はあるかと思います。
  • SQLやBQを触った状態で改めて「この3つの違いは何ぞや」というのを学ぶと、理解が深まります。
  • ググれば色々出てきますが、「Data Engineering Study #1」でゆずたそさん(@yuzutas0)がとってもわかりやすく話しているので、まずはこれを観るだけでも十分かもです。
9分くらいからゆずたそさんの講演
講演資料 事業を成長させるデータ基盤を作るには
  • 書籍だとUNCOVER TRUTHさんが出している『ユーザー起点マーケティング実践ガイド』もCDP(Customer Data Platform)観点でlake,ware house,martについて書いているのでお勧めです。
  • ユーザー起点マーケティング実践ガイド

    Amazonで小畑 陽一, 菊池 達也, 仁藤 玄, 小川 卓, 野口 竜司, 藤原 尚也のユーザー起点マーケティング実践ガイド。アマゾンならポイント還元本が多数。小畑 陽一, 菊池 達也, 仁藤 玄, 小川 卓, 野口 竜司, 藤原 尚也作品ほか、お急ぎ便対象商品は当日お届けも可能。またユーザー起点マーケティング実践ガイドもアマゾン配送商品なら通常配送無料。

    ユーザー起点マーケティング実践ガイド
  • あとゆずたそさんの書籍もいいらしいです(まだ読んでない)
  • データマネジメントが30分でわかる本

    Amazonでゆずたそ, はせりょ, ゆずたそのデータマネジメントが30分でわかる本。アマゾンならポイント還元本が多数。一度購入いただいた電子書籍は、KindleおよびFire端末、スマートフォンやタブレットなど、様々な端末でもお楽しみいただけます。

    データマネジメントが30分でわかる本
  • 他にこのあたりの記事もおすすめです。
    • BIツールとDWHの役割分担
    • BIツールとDWHの役割分担

      計算リソースの必要なjoin系の処理をマート側で実施し、分析要件に応じて変わりやすいクロス集計をBIツール側で実施するのが良いと思っています。 分担のイメージは以下のようになります。 この分担を考えるモチベーションは主に二つあると考えています。 一つは性能で、昨今のBIツールはとても高機能ですが、結合等の処理を多用したレポートを作ると、どうしても重たいレポートになりやすいです。 ...

      BIツールとDWHの役割分担
    • 分析者から見た使いにくいデータ基盤の話
    • 分析者から見た使いにくいデータ基盤の話

      リクルートテクノロジーズのアドベントカレンダーの 12/25 の分です。 https://adventar.org/calendars/3063 要するにデータが潤沢なデータレイクと、秩序だったデータウェアハウスがほしいという話をします。データマートは分析者も必要に応じて作ればいいので、なくても問題ないです。データレイク、データウェアハウス、データマートについては本記事で解説します。 ...

      分析者から見た使いにくいデータ基盤の話
    • データ基盤にありがちな「何を使って作ればよいか?」という問いに対する処方箋を用意してみました.
    • データ基盤にありがちな「何を使って作ればよいか?」という問いに対する処方箋を用意してみました. - Lean Baseball

      ちょっと昔まではデータ基盤の管理人・アーキテクト, 現在は思いっきりクラウドアーキを扱うコンサルタントになったマンです. 私自身の経験・スキル・このブログに書いているコンテンツの関係で, 「データ基盤って何を使って作ればいいの?」的なHow(もしくはWhere)の相談. 「Googleのビッグクエリーってやつがいいと聞いたけど何ができるの?」的な個別のサービスに対するご相談 ...

      データ基盤にありがちな「何を使って作ればよいか?」という問いに対する処方箋を用意してみました. - Lean Baseball

GA4の特徴と仕様の理解

  • UNNESTの話もちろっとしましたが、実務でSQLを扱う際のデータソースがGA4やFirebaseの方は多いかと思います。
  • データ分析界隈の方もいろいろ苦戦されているように、GA→BQにイベントの送られるタイミングやワイルドカード(_table_suffix)など結構クセが強いのと、情報が日々アップデートされていくので公式Docを追う + 界隈の方々の発言を追う、でキャッチアップ頑張るべしです。
    • GA4のpage_viewイベントはスクリプト読み込み後5秒後に動く?など知らなきゃわからん仕様がいっぱいあります
  • Firebaseも吐き出されるログの形式はGA4と同じのようですが、自分がほぼ触っていないので割愛します。

BigQueryの特徴と仕様の理解

  • BigQueryも普通にクエリ書いてる分には「便利だな~」くらいにしか思いませんが、歴史を紐解くとDWHとしても他と比べて異質な存在であることや、よくエンジニアが「BQは"速い"」と言っている意味がわかってきます(本当に何となくですが…)
  • BQも概要についてはData Engineering Study #6「改めて学ぶ、BigQuery徹底入門」のGoogleの方の講演がわかりやすいです。
  • Data Engineering Study #6「改めて学ぶ、BigQuery徹底入門」

    ▍イベント概要https://forkwell.connpass.com/event/197949/▍参加案内 ・基調講演の間は、ClubHouse に副音声会場を設けます  https://www.joinclubhouse.com/event/my45Ep9O ・質疑応答用 Slido URL🙋‍♂️  h...

    Data Engineering Study #6「改めて学ぶ、BigQuery徹底入門」
  • 他にこのあたりの記事もおすすめです。
    • [初心者向け] Google BigQueryの基礎を理解してGoogle Cloud Consoleから触ってみた
    • [初心者向け] Google BigQueryの基礎を理解してGoogle Cloud Consoleから触ってみた | DevelopersIO

      当エントリは 『クラスメソッド BigQuery Advent Calendar 2020』 1日目のエントリです。 本アドベントカレンダーでは、本日(12/01)〜12/25までの間、弊社DA(データアナリィクス)事業本部のメンバーがBigQueryに関連するブログを公開していきます。 まず1本目ということで、BigQuery初心者向けの超入門ブログとしてまとめていきたいと思います。 ...

      [初心者向け] Google BigQueryの基礎を理解してGoogle Cloud Consoleから触ってみた | DevelopersIO
    • グーグルのBigQuery、高速処理の仕組みは「カラム型データストア」と「ツリー構造」。解説文書が公開
    • グーグルのBigQuery、高速処理の仕組みは「カラム型データストア」と「ツリー構造」。解説文書が公開

      SQLのクエリに対応し、3億件を超えるデータに対してインデックスを使わないフルスキャン検索で10秒以内に結果を出す。グーグルのBigQueryは大規模なクエリを超高速で実行する能力を提供するサービスです。その内部を解説する文書「 An Inside Look at Google BigQuery 」(PDF)を公開しました。 ...

      グーグルのBigQuery、高速処理の仕組みは「カラム型データストア」と「ツリー構造」。解説文書が公開
  • あとこちらも情報が日々アップデートされていくので公式Docを追う + 界隈の方々の発言を追う、でキャッチアップ頑張るべしです。
  • BQに関しては書籍も色々ありそうですが、読めていないですm(__)m

やらなくていいこと

環境構築

  • 環境構築はまずBizサイドが行うことは無いので、やらなくていいでしょう。これが要らないのがBigQuery(以下略

SELECT文以外を覚えること

  • SQLには4大命令というのがあり、「SELECT、UPDATE、DELETE、INSERT」のうちこれまで扱ったのはSELECTのみです。
  • ProgateのSQLコースでもデータの追加・更新・削除を学ぶパートはあるのでサラっとやってみるのは全然アリですが、構文は一周したくらいだとすぐ忘れるので個人的にはやらなくていいかな〜と思います。
image

続けるためのメソッド

急に自己啓発本感あふれるパートですが、今後もどんどん新しいことを学ぶ必要に駆られるであろう将来の自分に向けた備忘録として続けるためのコツを書いてみます。

やらなきゃいけない状況を作る

  • きっかけのパートで書いた通り、自分は完全にこれでした。追い込まれないと頑張れないタイプ😇 環境を変えるのが手っ取り早いですね~。
  • 逆に、本稿の通り3か月位である程度できるようにはなるので、今できなくても何とかなっている人は無理にやらなくても良いのでは、と思います🐶

習慣化 is 正義

  • 何においてもそうですが、習慣化は本当に正義だなと思いました。自分の場合はコロナ禍で朝型にシフトしたのも要因として大きいです。モデルナワクチンの副反応で死んだ1日を除いて、毎日ほぼ欠かさずに続けられました。
  • 幸い『集中演習 SQL入門』は多様な練習問題が沢山あるので、「朝の6時半~7時半で1日3問やる」という超シンプルな原則だけ作ってそれに従っていれば自ずとレベルが上がっていくという風にできたのが良かったです。
  • もちろん時間通りに取り組めなかった日もありますが、どんなに眠くても忙しくても最低限
  • select hoge fuga
    from customer_table
    limit 100

    くらいの超簡単なクエリは書いてBQのコンソールを開かない日をゼロにする。「1日休むと取り戻すのに3日かかる」というのは迷信といわれてますが自分は一定正しいと思います。

記録を付ける

  • このあたりは完全に学習スタイルの話ですが、自分はゴールまでどれくらいのペースで行けばいいのか、あとどれくらいなのかなど見えているほうがモチベーションが続きやすいので「問題の完了予定日」と「実際に終わった日」などを書いてちまちま進めていました。
    • フルマラソンのペースメーカーみたいなイメージです🏃
image

クエリをGitHubで管理する

  • これは未だにどういう方法が良いのかサッパリわかっていないのですが、230問のクエリを全てBQに保存するのもアレなのと、
  • BQ上では複数のクエリ間をCmd+Fで検索できなくて「このQ180の問題、Q95あたりでも似たクエリを書いたような…」というときにパッと検索できないので、一つのファイルにバーッと解いていったクエリを書いてファイル上でCmd+Fし、差分を一人プルリクエストしてます。
image

もくもく会に参加する

  • 自分は試しに1週間ほど参加してみて特に集団学習効果が無くてもできそうだったのでやってないですが、こういう朝活/夜活のDiscordが何個かあります。
【朝活・新宿・もくもく会】

朝活・アウトプットのためのもくもく会です。 ### 毎週土曜日に開催しています。 休日怠けてしまうのを防止するために毎週土曜日に新宿に集まり、 朝から強制的にアウトプットすることを目的に作成しました。 ※詳細情報は各イベントを参照ください。 ### 本イベントはこんな方に向いています。 * 「エンジニア・デザイナーの方(目指してる方OK)」 * 「朝にブログを書きたい方」 * 「ポートフォリオ作成をしてる方」 * 「家だと怠けてしまうので」

【朝活・新宿・もくもく会】
  • Studyplusとかもあるので独りだと続けられなさそうという人は入ってみてもいいかもです。
学習総合サイト Studyplus(スタディプラス)

Studyplus(スタディプラス)は学習する人が集まる総合プラットフォームです。あなたもStudyplusを使って学習内容を可視化しませんか?学習管理の他にも勉強に役立つ情報が満載です。

学習総合サイト Studyplus(スタディプラス)

やってみての気づき

まだ3~4か月ほどですが、やってみての気づきなどを書いてみます。

取っつきにくそうだが意外と学習コスト低い

  • プログラミングと混同されて「非エンジニアには難しいのでは…」という謎の誤解があるような気がしますが、データベース操作言語なのでExcelなど使っている人であればぜんぜん取っつきづらくないうえに、学習コスト低いです。
  • 資格試験と比べるのもアレですが、
  • 📝
    TOEIC 800点を取るために必要なのが225時間~ https://www.rarejob.com/englishlab/column/20161029/簿記二級を取るために必要なのが250時間~ https://www.u-can.co.jp/course/data/in_html/61/column/column01.html

    らしいです。本稿が示す3か月で1日1時間ちょっとのSQL学習は合計100時間位なので、上記2つの資格を取る半分以下の学習コストとなります。

    もちろん暗記物の要素が強い資格試験とSQL学習を一概には比べられませんが、参考までに🙏

大人になってからのほうが勉強は楽

  • 本稿をお読みになっている人で「ExcelもGoogleフォームも一度も触ったことがない」という人はおそらくいないと思います。GA触ったことが無い人も少ないでしょう。
  • ということは今までの業務で何かしらデータベース的なものを扱ったことがあり、SQL学習の過程で「BQのこの関数はExcelのこの関数と一緒だな」「アンケートフォームの選択式と自由記述はデータ型の指定をしていたのか」など普段の業務とのメタ認知を効かせることができると思います。
  • 自分自身もそうでしたが、そうするとまっさらな状態から学ぶよりもずっと理解の深まりが早いです。経験は糧になりますね 💪
  • ご家族や仕事の兼ね合いなどで時間の捻出が大変な方も多いと思いますが、まあそれは何においてもそうなのでやると決めたならやるしかないですね🦌

結局のところ最初は量

  • 新しいことのキャッチアップ全般に言えることですが、最初はつべこべ言わず量をやるのが正解だなと改めて思いました。
  • 本稿もお勧めの学習方法などを挙げさせていただいてますが、結局は演習の230問をやりきれるかどうかが分かれ目なので、とりあえず騙されたと思ってやってみてください。

RDBの理解はあったほうがベター

  • 本稿の前のパートでも書いてますが、リレーショナルデータベース(RDB)の理解が浅い方はSQL学習にあたって一緒に勉強しておくのが吉です◎
  • 特に練習問題の整えられたテーブルを使ったselect文だけしかやらないと、実務で「このテーブルはどうやって作られているのか「テーブル間を繋げる(JOIN)には何を外部キーとしたら良いのか」というところに思いをはせることが出来ないかと思います。
  • なのでインプットとして学習教材のパートで挙げたような動画や書籍『達人に学ぶDB設計 徹底指南書』を読んだり、Googleフォーム + Airtableとかで簡易なRDBを自分でシュッと作ってみるのもおすすめです。
  • 若干気合いは必要ですが、EC運営などスモールビジネスやるのも激おすすめです!SQL、RDBに限らず色々気づきを得ます。特にB2B畑の方などはB2C新鮮で楽しいと思います💐

「クエリを書けること」以外のメリット

最後に、データベース言語としてのSQLを学ぶことによることによる副次的なメリットを書いてみたいと思います。

正規表現、カラム数、データ型に敏感になる

  • 「Excelやアンケートフォームなどを業務で使っていればメタ認知を効かせることができる」と書きましたが、逆もまた然りです。
  • SQLを学習することによって、今まで文字列で書いていた日付を日付型に変換しようという気になったり、人によってアンケートフォームの姓名を分ける人(2カラム)とフルネームの記入欄を設ける人(1カラム)がいることにイライラしたりすることがあると思います。
  • そういうところに気が回るようになれば、たとえSQLを使わなくても業務にきっと良い影響があるかと👍

指標の定義に敏感になる

  • 特にGAを普段触っている方は、BQを経由してGoogleデータポータルなどでkpiを可視化する過程で
  • 📝
    ・「チャネル別セッション」とはどういうログをgroup byして出している指標なのか? ・「GA4は管理画面から直帰率が無くなった!」と騒がれているが、ログ1行の page_viewか session_startのイベントを集計すれば普通に出せね? 😗

    などなど、今までGoogleアナリティクスでぼんやり見ていた指標がどういうロジックで管理画面に表れているかがわかるようになります 📊

  • GA4のGUI上でポチポチやるのも便利ですが、GA4はイベントやらパラメータやらプロパティやら初見で分かりづらく感じるものもあると思うので、より理解を深める意味でもBQに吐き出されるログから見るのお勧めです。

システムの裏側をイメージしやすくなる

  • これもクエリ書いてるだけだと身に付きにくいかもしれませんが、自分でER図を書いたりAirtable触ったりすると「なるほど、こういうビジネスモデルのサービスだとこういうテーブル構造が必要なんだ」というのがぼんやりわかってきます。
  • HubSpotしかりSmartHRしかり、SaaSなんて特にRDBのかたまりなので、考え方として身に付くと何かと役に立ちます。
  • 財務分析やられてる方やSalesforceアドミンの方などは、このあたりの思考が実務で自然と身についている勝手なイメージです。

頭のリフレッシュになる

春先にやっていた『大豆田とわ子と三人の元夫』観ましたか?最高のドラマでしたね…

というのはさておき、劇中では主人公のとわ子(松たか子)が夜な夜な数学の問題集を解くシーンが描かれていました。

観ていたころは特に気に留めていなかったのですが、当該シーンの考察を読んで「自分がSQL学習に感じていた効果もこれだ!」と膝を打ちました。

細かいですが、該当のシーンで問題が解けたときに、とわ子が、モヤモヤが晴れたようにハッと目を見開くような瞬間がありました。 つまり、解決策が見えない問題に悩んでいるときに、数学の問題という「論理的に1つの解を導き出せるタスク」に取り組むことで、頭をリフレッシュしているのではないかとも読み取れます。 (『『大豆田とわ子と三人の元夫』に見る!参考書・問題集が「演出」するとわ子のキャラクター』より抜粋)

特にBizサイドの日々の業務や意思決定は「100%正しい」ことが無いものも多く、何らかのトレードオフや交渉が少なからず発生します。

そんな白か黒かで語れない問題に脳が疲弊してしまったときに15分でもSQL書くと、ものすごく頭がスッキリします。すぐできるリフレッシュ方法としておすすめです。

おわりに

だいぶ長くなってしまいましたが、1日1時間を3ヶ月継続でどれくらいの知識が身につくか、クエラーとしてどれくらいのレベル感になるか、クエリが書ける以外のメリットは何か、などをなるべく網羅的に書いてみました。

というわけで、LayerXはラーニングアニマルにとってはとっても良い環境です!

SQLはほんの一例で、他にも身につけなければいけないこと転がりまくりで楽しいです~ 🐼

ちなみに今はSQLよりデザインツールの「Figma」を覚えなければいけなくなったので頑張ってますです…

マーケやセールスはじめ積極的に募集しているので、興味がある方は一度お話しましょう。

LayerX 採用情報

📌 CEO Message / LayerX Company Deck / 3つの事業 / ワークスタイル / 採用ポジション / メンバーと話す / Q&A 「四半世紀以上変わらない1000兆円マーケットに挑む」 LayerXが取り組む事業は1000兆円を超える『お金の移転』が関わるマーケットです。 この四半世紀、非効率でアナログな業務プロセスを続けてきたお金や価値の移転。 全ての人の「働く」に関わるこの課題を、私たちは私たちらしく「圧倒的に使いやすいプロダクトを提供すること」で解決していきます。働いている時間にワクワクを感じる。その源泉はプロダクトの使いやすさ、UXと信じています。 一つ一つは小さな改善でも積み重ねれば大きなものとなる。 向き合うマーケットは「働く人すべて」。多くの仲間・同志と力をあわせて、経済活動のデジタル化に風穴を開けていきたいです。 みなさんの可能性を信じています。私やメンバーとカジュアル面談をしましょう。 代表取締役CEO 福島 良典 LayerX Company Deck は、外部記事や資料内の各ページを相互回遊できるように数多くリンクが貼られています。ご興味のあるところからお読みいただけたら嬉しいです。 https://www.figma.com/embed?embed_host=notion&url=https%3A%2F%2Fwww.figma.com%2Fproto%2FEM16Fd90mA4aUvcIGMmBif%2FLayerX-Company-Deck%3Fpage-id%3D0%3A1%26node-id%3D15%3A4996%26viewport%3D241%2C48%2C0.05%26scaling%3Dcontain%26starting-point-node-id%3D15%3A4996%26hide-ui%3D1 LayerXは、3つの事業を行なっています。 企業活動における業務プロセスのデジタル化を推進するサービスを開発・提供 👉 詳細はこちら アセットマネジメント事業を合弁会社にて展開。法人及び個人向けのサービスを開発・提供予定 👉 詳細はこちら

LayerX 採用情報

SQL学習に詰まったら『大豆田とわ子』観ましょう。めちゃくちゃ面白いです。「人生とは」という感じがします。

大豆田とわ子と三人の元夫

Amazon.co.jp: 大豆田とわ子と三人の元夫 : 松たか子, 岡田将生, 角田晃広, 松田龍平, 瀧悠輔, 中江和仁, 池田千尋, 佐野亜裕美, 坂元裕二: Prime Video

大豆田とわ子と三人の元夫

それでは今年もあと少しですが、頑張っていきましょう 💪

シェアする

icon
Twitterでシェアする
icon
Facebookでシェアする

Comment