こんにちは。那須野です。
Dataformに関する記事はいくつか書いてきましたが、データ分析におけるそもそものSQLについては、とりあえず書けることと実務に使えることの差が非常に大きいと感じます。一方で、差が大きい割に意外と見えづらいようにも感じます。
そのため、この記事ではSQLによるデータ分析にどういったレベル感、難易度があるかについてある程度俯瞰的に所感をまとめてみたいと思います。
私もまだまだ力不足だなと感じる部分が大いにあるので、しばらく経ったあとに読み返したら笑ってしまう内容かもしれませんが、それはご愛嬌ということで。苦笑
Lv1.基本的な関数(SUMやCOUNTなど)を使って単純集計ができる。
Lv2.WHERE句やGROUP BY句、ORDER BY句を使って簡単なクロス集計や時系列集計ができる。
Lv3.関数を多段階に組み合わせたり、数行にわたる条件式を書いて集計ができる。
Lv4.JavaScriptやPythonなどを使って複雑なデータ加工を関数化して運用できる。
Lv5.正規表現を駆使した複雑なデータ加工を実装できる。
Lv1.SELECT句を実行して集計結果を見ることができる。
Lv2.CREATE句を使って継続的にデータを見られるテーブル・ビューを作れる。
Lv3.一度作ったテーブルを元にさらにテーブル作成する二段階のデータ加工ができる。(クレンジング後に集計など)
Lv4.三段階以上の多段階のデータパイプラインを構築できる。
Lv5.複数のデータソースを統合する樹形図のようなデータパイプラインを構築できる。
Lv1.データベースに既にあるテーブルをSELECTできる。
Lv2.管理画面でファイルをアップロードしてデータを取り込むことができる。
Lv3.ストレージのファイルやGoogleスプレッドシート等の外部データを取り込むSQLが書ける。
Lv4.継続的なデータロードのためのバッチ処理や自動タスクを構築できる。
Lv5.複数のデータロードをマネジメントでき、データオーケストレーションの品質を担保できる。
Lv1.NULLのレコードを検知して修正できる。
Lv2.レコードの重複やフィールド間の不整合を検知して修正できる。
Lv3.時系列で見たときのデータ不整合(一貫性の欠如)を検知して修正できる。
Lv4.データソース間の不整合を検知して補正できる。
Lv5.ビジネス上不都合な集計結果が出ないようデータを補正できる。
Lv1.単一のデータやドメインを扱ったことがある。
Lv2.複数のデータやドメインを扱ったことがある。
Lv3.単一のデータやドメインについて詳しく、プロジェクトをリードできる。
Lv4.複数のデータやドメインについて詳しく、プロジェクトをリードできる。
Lv5.初見のデータやドメインについても即座にキャッチアップでき、プロジェクトをリードできる。
Lv1.定期的なバッチ処理や自動タスクを作成して継続的にデータを見られる環境を作れる。
Lv2.四半期や半期、年ごとに起こるマスタ情報の更新を考慮した運用ができる。
Lv3.テーブル仕様やデータパイプラインの変更に対応できる。
Lv4.イレギュラーな事案が起きたときのデータベースの復旧ができる。
Lv5.システム変更に伴う数年に1度のデータソースの入れ替えに対応できる。
Lv1.単一の環境で作業ができる。
Lv2.複数の環境で作業ができる。
Lv3.単一の環境について詳しく、プロジェクトをリードできる。
Lv4.複数の環境について詳しく、プロジェクトをリードできる。
Lv5.初見の環境についても即座にキャッチアップでき、プロジェクトをリードできる。
※環境とは、データウェアハウス(BigQueryやSnowflakeなど)やデータ変換ツール(dbtやDataformなど)ならびにその周辺環境のことを指します。
現時点での所感をざっと書いてみました。こうやって書いていると自分も十分にできるわけではないよなと思いながらも、勉強になったのでよしとしましょう。
この記事が誰かの参考になれば幸いです。