React Native Tech Blog

supported by maricuru (旧maricuru tech blogです)

非エンジニア向けにSQL社内勉強会を開催しました

先日SQLの社内勉強会を開催しました。

今回は特に「非エンジニア」に向けて、SQLの初歩〜社内分析環境(Redash)の使い方までを勉強しました。

f:id:wasan:20190919181959j:plain

非エンジニアがSQLを書けるメリットとしては

  • 自分でスピーディーに仮説を検証できる
  • エンジニアのプロダクト開発工数を奪わない

などのメリットがあるかと思います。

SQLを叩くのはエンジニアの担当、ってことが多いかと思いますが、最近はプロデューサーやマーケターもSQLを書けるようにトレーニングしている会社が多いようです。
僕の以前勤めていたDeNAでも、イケてるプロデューサーは自分でSQLを書いて仮説を確かめていた気がします。

maricuruの分析環境

maricuruではメインの分析環境にAmplitudeを使用していました。
というか今も使っています。

Amplitudeは特にExpoを使っていると導入が簡単で、またローンチ初期は非常にスピーディーに基本的な分析ができる印象です。
ブラウザ上でSQLっぽい抽出条件をポチポチと選ぶと、グラフや表を出力できます。

ただサービスが成長してきて、より細かい分析をしたくなると生SQLを叩きたくなります。
(Amplitudeではこれが有料版でないとできず、有料版は半端なく高価)

そこでmaricuruではAmplitudeのデータをBigQueryに流し込む基盤を開発し、BiqQuery + Redashで分析できるようにしました。

f:id:wasan:20190919134707p:plain

構成はこんな感じです。
AmplitudeのExportデータだけでなく、RDBのスナップショットもBiqQueryに格納しています。

勉強会 〜基礎編〜

まずは基礎からです。

教材はこちら。
みんな大好き、新日本プロレスのIWGPチャンピオンを題材にしています。

qiita.com

参加者の中にはSQLってもの自体が初めてのメンバーも多いので

  • テーブル
  • カラム
  • レコード
    などの概念からはじめました。

続いて実際にSQLを書きながら体験してみます。
SQLを実行するにあたりプレイグラウンド的なサービスの SQL Fiddle を利用しました。

SQLを書いて実行結果を確かめるまでをブラウザ上で体験できるので、勉強にはちょうどよかったです。

f:id:wasan:20190919182427j:plain
SQL Fiddle - SQLを書くと下に実行結果が表示される

まずはSELECTWHERE などのSQLコマンドです。
今回の目的は「分析」だったので、UPDATEDELETE などのデータ操作する系は割愛しました。

あとは JOIN です。
多くのテーブルを横断して分析することになるので、JOIN の理解は必須ですね。
この辺が割と難しそうな印象でした。
が、なんとか参加者全員が課題をクリアすることができました。

実践編 〜ReDash〜

続いて実践編として、本番のデータをReDashで抽出してみました。

が、これはだいぶハードルが高かったようです。。

  • テーブルの種類が膨大でどこに欲しいデータがあるかわからない
  • WITHJOINを多用する必要がある

などが難しいポイントだったようです。

エンジニア側で

  • どのデータがどのテーブルにあるかの資料を用意する
  • コピペで使える便利なSQLを予めいくつか用意しておく

などできるともう少しスムーズに進みそうです。