SQLレベル表
SQLのレベル表がなかったので作った
以外にもデータ分析のためのSQLのレベル表はあまり存在しておらず、なので「どんな仕事をするにはどのぐらいのことが出来る必要があるのか」とか「どのぐらいのことをするにはどれぐらいのことを知っていればいいのか」といったことが特に初心者は困ったりすることが多いだろうと思うので自分なりに考えてみた。
ただ、あまり細かくしてもわかりづらいので、違いの大きそうな大まかに3つの段階に分けた。
なお、データ分析に関するSQLについてのレベル表であり、インフラや開発をする人は想定していない。
データ分析のためのSQLレベル表
レベル | できることの目安 | 関数 | どんな人が使うか |
入門 | きちんと整えられた1つのテーブルから欲しいデータを抽出することができる | 条件文 加工 集約 |
非エンジニア。分析が主業務ではないが行う人。経営者・PM・ディレクター・マーケターなど(つまり大半の人) |
基礎 | 個々の分析(処理)のために前処理を行うことができる | JOIN Window関数 |
データアナリスト・データサイエンティストなどデータの分析を中心の業務とする人 |
応用 | 様々なデータを整理したり、組み合わせて集計するためのデータを作ることができる | 必要に応じて選ぶことができる | データアーキテクト(データ整備人)のようなデータを使いやすくする人 |
次は各レベルについて詳しく見てみよう。
SQL入門レベル
”すでにきちんと整えられた”テーブルからデータを抽出したり集計することが出来るレベル。条件文、文字列などの加工、集約などSQL入門書の大体前半部分(JOINを除く)にあたる。
非エンジニア、例えば経営者、PM、ディレクター、マーケター、コンサルタントなど意思決定やそのための分析を行うが、分析することが主業務ではない人が必要としているデータを手に入れるためにはこのレベルの全てではなくとも主要な部分ができればかなり自力でデータが取れるようになるだろう。
ただし、あくまでも”すでにきちんと整えられた”テーブルであれば対応ができるが、複数のテーブルをJOINしたり、データを整理しなければならない状況ではパフォーマンスがひどく落ちる。間違えた処理をしてしまう危険も非常に高い。
なので急いでいるが他に誰もできないなどよほどのことが無い限りは基礎レベル以上の人に任せることをお勧めしたい。自分でやる場合でも最初は基礎レベル以上の人にSQLをレビューしてもらいながら学ぶ方がよいが、教えてくれる人がいない場合は、BIツールで済むならそちらを使う方が安全だ。
なお、実際にやってみればわかるが、基本的な文法はさほど難しくはなくわりとすぐに身に着けられる人も多いと思われる。しかし、欲しいデータを手に入れようと実際にそれらを組み合わせて使おうとすると複雑度がどんどん上がっていくので文法を知っている=実務ですぐ使えるとは考えない方が良い。
SQL基礎レベル
JOINやWINDOW関数なども含めて分析に必要なデータの加工や抽出、それから前処理まで含めて一通り自力でできるレベル。
データサイエンティスト・データアナリストなどデータの分析を主業務とする人はあまり複雑なSQLは必要なくとも一通りの前処理ができるスキルは持っておいた方がいいだろう。
ただし全くの未整備の状態からではなくデータマートやデータウェアハウスなどある程度の整理がされた上で使えるようになっているテーブル群であることが望ましく、そうでない場合は入門レベルほどでないにしても業務の多くが分析のための前処理のための整理で終わってしまうので気を付けたい。
基礎のうちJOINの全てとWINDOW関数の頻出関数ぐらいできる(理解する+調べながらでも自力で出来る+いくらかの実戦経験)のであればひとまずはSQLを使って仕事ができると言ってよいのではないだろうか。もっとできる人からみたらそうは見えないだろうが、そこまでできる人は世の中全体から見たら少ないのでこのレベルでもまずはよいのではというのが個人的な考えだ。
SQL応用レベル
分析で利用するSQLについては入門と基礎でほとんど網羅しており、応用はSQLで様々なデータを多種多様な方法で組み合わせて整理していくことができるレベル。また、データウェアハウスやデータマートの設計や作成などSQLを使うにあたっての考え方についても身に着けることが望ましい。
データアーキテクト(データ整備人)が中心な人はもちろん、データエンジニアやデータアナリストでもこの業務を兼ねている人は多いため基礎に加えて応用もある程度は身に着けておくと整理を自分でやらざるを得ない場合(そしてそれはよくあること)に対応がしやすい。
基礎よりもSQLのレベルが高い、というよりはより複雑な状況に対応できるスキルと表現した方が適切かもしれないが、各種JOINやUNIONといったテーブルの結合や、配列型やJSONのような複雑なデータ扱いが出来る必要があるのでSQL基礎レベルがある程度できてからの方が身につきやすいだろう。