Nikkei Advent Calendarの3日目の記事です。
日本経済新聞社でデータサイエンティストとしてサービス開発に関わっている石原です。 本記事では、私が作成した日経電子版のデータを使ったSQL問題集を紹介します。
作成の背景
日本経済新聞社は、テクノロジー・メディアを標榜し、全社的なデータ活用を推進しています。
近年、インターネットの普及に伴い、ニュースメディアにも大きな変革が起きています。 日本経済新聞社は2010年に日経電子版を創刊し、2020年には有料会員数が70万人を超えました。 人々がインターネット上でニュースに触れる機会が増えるにつれ、データという形で読者の姿をこれまで以上に鮮明に捉えられる場面が増えています。
メディアとしての信頼性や情報伝達力を計測してサービスの発展に繋げるなどの目的から、日本経済新聞社ではリアルタイムデータ処理基盤 「Atlas」[1]を独自に開発・運用しています。 日経電子版をはじめとする各種メディアでの行動ログなどを一元管理しているプラットフォームです。 蓄積されているデータには、GUIの可視化ツールや、SQL・Python・Rなどを通じてアクセスできます。
当たり前ですが、データは単に溜めておくだけでは価値を生みません。 少しでも多くの方にデータを身近に感じてもらうため、2017年からは社内研修の「データ道場」[2]が始まりました。 業務時間内で数カ月にわたり、毎週1回3時間程度でデータ分析に取り組む上での基礎を扱います。 私自身も2018年に参加しましたが、単なるSQLの書き方だけではなく、データに基づき施策を回すための心構えなどの実践領域も学ぶことができました。
データ道場の参加者はソフトウェアエンジニアだけでなく、マーケティング・広告の担当者や、新聞の編集関係者など多岐にわたります。 実際の現場でも、さまざまな職種の方が業務の中でデータを活用している状況です。 この流れを一層推し進めていくべく、自学自習でSQLの基礎を学べるコンテンツの需要があるのではと考えました。
私も会社に入ってからSQLを学びましたが、特に次のような要素が初学者にとって障壁を感じる部分だと捉えています。 これらの課題に対処できるようなコンテンツを目指し、作成を進めました。
- どこから勉強を始めれば良いか分からない
- 業務で使うカラム名や条件式の書き方が分からない
- データベースに過度な負荷をかけてしまわないか心配
作成したSQL問題集
以下が、実際に作成し社内公開した日経電子版のデータを使ったSQL問題集の内容です。
- データ抽出の基本構文を知る
- 適切なテーブルを使う
- 欲しいカラムを選ぶ
- カラムに別名を付ける
- 日時情報を取り出す
- 抽出量を増やす
- 条件式を使う
- 条件を指定する
- 条件を指定する(比較)
- 条件を指定する(and)
- 条件を指定する(between)
- 条件を指定する(or)
- 条件を指定する(in)
- 条件を指定する(!=)
- 条件を指定する(not)
- 条件を指定する(null)
- 条件を指定する(like)
- andとorの優先順位
- グループごとに集計する
- グループごとに集計する(複数)
- 条件を指定して集計する
- 集計結果を並び替える
- いろいろな集計関数を知る(count distinct)
- いろいろな集計関数を知る(avg、min、max、sum)
- 集計結果を条件指定する
- サブクエリを使う
- テーブルを結合する(内部結合)
- テーブルを結合する(外部結合)
- テーブルを結合する(縦に結合)
- 複数のカラムに展開
- 縦持ちと横持ち
先ほど述べた課題に対しては、それぞれ次のように対応しました。
- どこから勉強を始めれば良いか分からない -> 順に解いていくことでSQLの基礎を学ぶ構成
- 業務で使うカラム名や条件文の書き方が分からない -> 日経電子版のデータを利用
- データベースに過度な負荷をかけてしまわないか心配 -> サンプルコードの提供
この問題集では「select カラム名 from テーブル名」という基本から始め、条件式・集約・結合など少しずつ高度な内容を学んでいきます。 1問ずつ、業務で直面しうる具体的なデータ抽出の問題に取り組む形式です。 たとえばウェブページの閲覧数を計算する問題では社内ユーザを除外する条件式を紹介し、実際の業務にも応用しやすい内容を意識しました。
問題に対応する形で、解答のサンプルコードも提供しています。 このサンプルコードは比較的規模の小さいテーブル・カラム数で構成され、ある程度の速度で結果が得られるように設計されています。 SQLを実行する上での心理的障壁を除外することで、より多くの人にSQLに慣れ親しんでもらえるのではと考えました。
終わりに
本記事では、私が作成した日経電子版のデータを使ったSQL問題集を紹介しました。 この問題集は、私の所属していない部署での勉強会で利用され「参加者から好評だった」との感想も寄せられています。 今年の夏に開催した短期インターンシップ[3]でも、参加者にも参考資料として共有しました。
事業会社に所属するデータサイエンティストとして、より全社的なデータ活用を推進できるよう、今後とも取り組みを続けていきたいと考えています。
参考文献
[1]: リアルタイムデータ処理基盤 「Atlas」 のソースコードを公開します, https://hack.nikkei.com/blog/atlas_opensource_project/ (accessed 3 December 2020).
[2]: 創業140年の古い会社でデータの民主化を進めた話, https://speakerdeck.com/yosukesuzuki/nikkei-data-driven-20180823 (accessed 3 December 2020).
[3]: Internship — HACK The Nikkei, https://hack.nikkei.com/internJobs (accessed 3 December 2020).