見出し画像

エクセルしか使えない人にSQLをやらせるなら

GW明けなので仕事っぽい話をします。コスメのエクセルではないです。

表題の講座、よく社内で企画されるんですよ。今3社目なんですけど全社でやってました。
ただデータサイエンティストが企画するので全然入門になっておらず、わりと容赦なく脱落させられていく人を見てきました。

で、その中でもやる気はある人のサポート役をおおせつかることが多いのですが、
エクセルの作業と対応させると結構理解してくれることが多いのでその周りの話を一回まとめようと思いました。

データベース言語は0から始める企画職とかを想定しています。
なお、私は必要に駆られて独学で最低限使えるようになっている営業畑の人間なので、知識も最低限です。


そもそも:我々はデータベース操作をしたことが「ある」のだ

…という話にしたほうが心理的なハードルは下がりそうな。

基本的なエクセル操作ができるならばデータベース操作をしたことがあると言っていいんではないかと。
いわゆる「ブイルックアップとカウントイフを組み合わせればいいのよ〜!」(サイボウズの広告、最近見ないですね)ができるなら、SQLもほぼ学習コストなく習得できるのです!

逆にその周りができない状態でSQLをいきなりやるのはなかなかなやる気が必要になると思うので、まずエクセルやった方がいいと思います。世界一使われているBIツールを舐めてはいけない。


SQLを書けるようになって何が嬉しいか

で、じゃあなんでエクセルだけではなくSQLも知っとかなあかんのかというと、

A.エクセルで扱うには重いデータを扱うことができるから

B.作業効率を上げることができる(時短&エラーリスク少)から

この二つになります。


A. エクセルで扱うには重いデータを扱うことができるから

エクセルは最大約100万行までしか描画できませんが、SQLは何万行だろうと操作可能です(実行は重くなりますが&お金はかかりますが。)

ただ、操作後欲しいと思っているピボット集計やフィルタリングした後の結果が100万行未満である場合は、power queryを利用してなんとかできます。
どうしても言語を使うことにハードルがある人は、SQLやらないでpower query使えるようになるというのも全然ありだと思います。


B. 作業効率を上げることができる(時短&エラーリスク少)から

エクセルで以下作業を実施したとします。

①クラウドからデータを2つダウンロードする
②エクセルでそれぞれのデータを開く(ブックa、ブックb)
③ブックaをフラグで絞り込む
④ブックaが絞り込まれた結果とブックbをvlookupで当てる
⑤得られた統合データをpivot table(またはcountif)で条件ごとにカウントする

操作が早い人は1分かからずできると思うのですが、

  • 習熟度に依存してスピードが変わる

  • エラーリスクがある(フラグ間違えちゃったりとか)

  • 他人が作業をQAできない

  • データが重い場合は1作業ごとに待ち時間が発生してしまう

  • 何回も同じことを実施する場合、都度手を動かす必要がある

というデメリットがありまして、で、SQLだと

  • クエリ内容が保存されるのでエラーリスク減、QA可能

  • クエリを使い回して実行をポチ!と押せば作業が終わり、待ってれば結果が出てくる

ということで、作業内容によっては爆速&ミス率低下につながる可能性があります。


SQLとエクセルの対応を書き下してみる

さっきの例に乗っ取ってやります。
[]が触る内容に応じて変わるものになります。
ざっくり説明なのでそのままだと普通にエラー出るのもありますが最初の理解の一助ということで。


①クラウドからデータをダウンロードし
②ブックを開く

select * from [フォルダ名.ブック名]


③フラグで絞り込む(フィルタリング)

where文

select * from [フォルダ名.ブック名]
where [絞りたいカラム名]=[絞りたいフラグ]


ここから躓く人が多い(というか、多分データサイエンティストがエクセルを使わないのでうまいこと対応して説明できない)印象。


④vlookup

join on

select * from [フォルダ名.ブックa] a
join  [フォルダ名.ブックb] b
on a.[突合キーのカラム]= b.[突合キーのカラム]
where [絞りたいカラム名]=[絞りたいフラグ]


⑤countif/pivot

count() とgrop by


select [集計項目], count([カウントしたいカラム名])
from [フォルダ名.ブックa] a
join  [フォルダ名.ブックb] b
on a.[突合キーのカラム]= b.[突合キーのカラム]
where [絞りたいカラム名]=[絞りたいフラグ]
group by [集計項目]

ポチ!

おわり。

ここまで読み下せれば、あとはもうエラー修正や追加でなんかしたいとなったらchatGPTにお任せです。


組織として、SQLが使える人が増えると何が嬉しいか

リソースの最適化と、データを用いたインサイト創出の促進可能性向上と理解しています。

たまに、SQLが書けるようになるとデータサイエンティストへの依頼が上手くなると言ってくる人がいるのですが、基本だと思っています。
すでに我々はエクセルというデータベース操作を習得しています(してないならSQLよりそっちを先にしたほうがいい)ので、そこは変わらないはずです。
で、それで満たされないSQLの話というかデータベースの追い込みに関する言及は専門的すぎるので、0スタートのビジネスサイドに求めるにはちょっとハイボールすぎます。

まずは素直に、

ちょっとデータ大きいからっていちいちデータサイエンティストに依頼投げられてたらたまったもんじゃねえんだわ。

という理由で、

自分で示唆出ししたい分はある程度自分でできるようになれや。てかクエリサンプル渡すから自分で実行しろや。

までを目標にするのが組織的にはよいんでは無いかなと。


なお、データベースにアクセスする必要がない場合はpythonの方が簡単だし汎用性高い

です。


おわり!

この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?