達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ
SQLを扱うエンジニア必携のロングセラー、10年ぶりの改訂!――SQLの正しい書き方・考え方が学べる本 開発者のためのWebマガジン「CodeZine」の人気連載を大幅加筆・修正して2008年に刊行、好評を博した『達人に学ぶSQL徹底指南書』の改訂・第2版です。 ...
https://amzn.to/3ERxWXK
本記事はWantedly 21新卒 Advent Calendar 2021の12日目の記事です!
なんとか半分まで来ました。後半戦もよろしくお願いします🙏
本記事では、入社してからデータ分析する中で先輩からいただいたフィードバックをまとめてみました。当たり前のことも多いですが、時間に追われ、焦ってしまうと意外とできないので、自戒の意味も込めてここに残しておきます。
「〇〇を集計して」と依頼された時は、なぜその集計が必要なのか理解してから、手を動かすようにしています。目的に応じてアウトプットが変わりうるからです。
例えば「プラットフォーム内のユーザ数を集計して」と言われた時に、「特定経路のユーザ流入が減っている懸念」が背景にあれば、アウトプットには「流入経路ごとのユーザ数」が必要です。
一方、「グロース施策の打ち手を決めたい」という背景があれば「セグメントごとのユーザ数」が必要でしょう。
出戻りを防ぐため、プロジェクト全体の流れから目的を推察し、集計を始める前にチームメンバーに確認してから進めると良いでしょう。
A/Bテストなど、複数の施策やモデルの比較をする場合、あらかじめ解を出せる基準を定めるようにしています。数字を見てから結論を出すと、「自分が作ったモデルや施策の方が良いだろう」というバイアスに引っ張られた解釈をしてしまうからです。
「一般的なメール開封率xx%より5%高かった場合、送信対象者はこのメールのコンセプト興味を持っていると言える」というような明確な基準を定めてから手を動すと良いでしょう。
集計方針・指標の定義・アウトプット形式を共有し、認識を揃えてから、集計するようにしています。自然言語でのやりとりでは意外と齟齬が生まれやすく、出戻りの原因になるからです。
例えばメールのクリック率の集計をする場合、一口にクリック率と言っても、"クリック回数/開封数", "クリック人数/開封数", "クリック回数/送信数", "クリック人数/送信数"のように如何ようにも定義が作れてしまいます。
集計前にアウトプット形式を定められるくらい綿密に集計方針を決めることで、出戻りを防ぐことができます。また、方針をあらかじめ考えておくことで、クエリを書く作業と明確に切り分けることができ、効率が上がるという副次的な効果も得られます。
例えば機械学習モデルを作った時、オフライン評価値で定量評価をすると思います。この時必ず、定性評価(人の目で出力のチェック)もするようにしています。人間の知覚能力は意外に高く、定量的に評価しきれない部分に対して、洞察を得ることができるからです。
アイテムを推薦するランキングモデルであれば「Top10アイテムのURLに実際にアクセスしてチェック」のように、定性評価をします。
また、定性評価をモデルの選択などの意思決定に使う場合、「誰が見返しても同じように評価できる」、「手がけたモデルに対して、バイアスが働かせない」ために以下のように基準を設けて、定量的に測るようにしています。
悪い定性評価の例
良い定性評価の例(もっといい例があったかも...)
集計クエリは、どんなファクト(=指標)とディメンション(=切り口)で集約すれば欲しい値が得られるかを考え、アウトプットに必要な中間テーブルを洗い出してから、クエリを書くようにしています。
クエリの集計ミスはほとんどがwhereやjoinで起こるため、集約に必要なkeyを揃えた中心となるテーブルを用意し、そのテーブルに各ファクトをjoinしていくと良いと思います。
集計クエリは必ずセルフレビューするようにしています。アプリケーションのコードと違い、集計クエリは間違っていてもエラーを吐き出さず、ミスに気づきにくいからです。
セルフレビューする際は以下のようにチェックをしています。
集計結果をもとにマネージャーに意思決定を依頼するときは、重要な部分に絞って共有する必要があります。その時は必要な情報を落とさないように、以下のことを心がけています。
集計結果をレポートする場合は、誰が見ても再現可能な情報を残すようにしています。検算や再度似た集計をする場合の足掛かりになるためです。具体的には、書いたクエリ、使った指標の定義をまとめています。
入社直後は「高度な技術を学んで、複雑な分析ができるようになるぞ!」とか、「分析だけじゃなくてアプリケーション開発もできるようになるぞ!」とか意気込んでいたのですが、意外と基本的な項目を押さえ、ミスなく分析をすることだけで難しいんだなと気付かされました。
簡単に身につくことではないので、日々の業務を丁寧にこなして自然にできるようにやっていきたいです💪
これまでのデータ分析・集計で参考になった記事や書籍を紹介しておきます。こちらも合わせてご覧ください🙏
SQLに関する書籍
ロジカルシンキングに関する書籍
文章の書き方
クエリに関する記事