Skip to content →

カテゴリー: 分析

SQL勉強会で伝えていること

文章力が皆無なせいでひどく偉そうなタイトルをつけてしまっていますが、みんなと毎週一緒に勉強しています。

今日で5回目の開催でした。最初は自分以外2人だったのですが、いまは8人になったので4倍になって嬉しいです。

  1. 実際に使うサービスのDBで練習する
  2. 細かいことは伝えない
  3. 教えない

勉強会ではこの3つを気をつけているのですが、こう並べてみると酷い感じがしますね。

1は普通に理解いただけると思うのですが、サービスによってテーブル構成が変わるため練習用のDBとかでSQLをつくってしまうとすぐに実践できないですよね。あと個人的には自分の関わっているサービスでやらないとすぐにつまらなくなるんですよね。せっかくの社内勉強会なので参加してくださっている人それぞれの担当サービスでSQLをつくってもらっています。

2からが酷いですね。でも細かいことって大抵どうでもいいと思いませんか?例えば、予約語は大文字で揃えようとかありますけど、初心者にとっては動くSQLがかければいいんです。なのでそんなことに気を使わないでもらえるように気にしてたり。こっちの書き方のほうがスマートになるよ、とかもなるべくやらずに意図した情報を引っ張れるようになることだけこだわれるようにしています。

3はそのままですが、できるだけ自分が教えないようにしています。もちろん最初に基本の「き」的なものはお伝えさせていただいていますが、それ以降は演習問題を解いてもらう感じでやっています。しかも問題も答えはこれですと見せることはほとんどないです。しかも基本ググってもらうようにしているので、単純に教えるということがあまりないです。ぐぐってみてわかんなかったり、書いてみたけど動かないときに一緒に考えるスタイルです。

特に3が自分としては大事にしておきたいやり方でして。というのも自分自身が誰かからガッツリ教わったというより、ググってコピペしてググってコピペして社内のgithubにあったやつぱくってきたりして、少し書けるようになったので、体系的に教わるより調べながらやることに慣れて言ったほうがいいかなという気持ちです。もちろん勉強する目的や内容によっては体系的にやったほうがいい場合もたくさんあると思います。

これからもみんなで勉強していきたい気持ち。あと昼休憩の時間に「達人に学ぶ SQL徹底指南書」でSQL普段から書いている人で集まって読み始めました。まだ全然読めてないですがとても自分が知りたかったことが詰まっていそうなので楽しみです。

季節変動(月ごと)を調整するGoogleスプレッドシートをつくりました

三行

  1. 季節の影響を受ける数字(ネットショップの売上など)は、そのままその数字を見ると良くなっているのか悪くなっているのかわかりづらいです。
  2. 季節の影響を数値にして、実際の数値から季節の影響を取り除くことができます。
  3. それを簡単にできるテンプレートをつくったのでコピーして使ってみてください。一番右の「row」シートに月次のデータを入れてあげると、一番左の「季節変動調整済数値」シートに季節の影響を抜いた数値がでてきます。

前置き

先月の成果ってよかったんだろうか?先々月と比べると確かに上がってるんだけど、この時期って毎年上がりやすいんだよなあ…キャンペーンもやってみたんだけどどれくらい良い影響があったのでわかりづらい…

↑みたいなことありませんか?私はよくあります。きっとネットショップを運営されている方とかは12月の売上が本当によかったのか判断するの難しいんじゃないかと思います。なぜならクリスマスなど元々消費が増える時期なので、そのような季節要因によって売上が増えているのか、ネットショップの成長やキャンペーンの効果による売上増なのか判断が難しいですよね。

そんなとき、季節ごと(月ごと)の数字への影響度を具体的な数字にすることで、季節的な部分を抜いたらこれくらいという結果を得られます。ではその方法をざっくり見ていきましょう。

12ヶ月移動平均を出して、月ごとに平均する

ここからはテンプレートも見ながら、追っていってください。季節の影響を受けるもので一番メジャーなものが支出だと思うので、今回は統計局さんから「インターネットを利用した支出」の時系列データをお借りします。今回つくったテンプレートにもこのデータを例にしております。

まず、これのデータをそのまま線グラフにするとこのようになります。

なんとなく右上がりになっていそうですかね。

これを元に、季節要因の計算をしていきましょう。まず、月ごとのデータを準備します。こんな感じに。テンプレートでいうと一番右の「row」シートに当たります。

では次にすぐ左の「移動平均」シートを見ていきましょう。このシートでは先ほど「row」シートに入力した月次のデータを12ヶ月ごとに移動平均しております。これをすることで季節要因を除けます。この移動平均で元データを割ることで、ざっくりとした季節影響を数値ができます。テンプレートでいうと、「移動平均」シートのC列季節要因というところにでている数字がそれです。

季節要因を月ごとに平均する

次に「季節要因整理」シートを見ていきます。このシートは先ほどだした季節要因を月ごとに並べたものです。これをみるだけでもどの月が季節要因で上がりやすい傾向にあるかというのがなんとなくわかるかと思います。

では月ごとにどれくらい季節変動するかを一つの数値にしていきましょう。月ごとに平均して出すのですが、この際に使う平均は「一番多いものと一番少ないものを抜いて」計算しています。そうすることで、キャンペーンなどで突発的に増えただけのものや、一時的な不景気による大きな減少の影響を受けずに計算ができます。(データ量が少ない3年より少ない場合は普通の平均で大丈夫です。)

それを計算したものが、「季節変動」シートのB列に入ります。これをこのまま使えばよさそうなのです、もう一手間加える必要があります。いま出した、季節変動を合計すると12.109と12を超えてしまっております。このままではきれいに計算ができないので、合計12になるように調整をしてあげます。その調整をしたものがC列に入っているかと思います。

季節の影響を取り除く

ここまでで、季節(月ごと)の影響を数値化できました。これで実際のデータを割ってあげることで、季節の影響を取り除いた数値を見ることができます。テンプレート一番左の「季節変動調整済数値」シートをご覧ください。こちらに「row」シートに入力した、データを「季節変動」シートで求めた数値で割ったものがでてきています。

これをグラフにすると以下のようになります。

これで季節要因を抜いてもネット経由の支出金額が増えてきていることがわかりました。しかし、2006年から2010年ごろまでは停滞してしまっていたようです。世界金融危機の影響でしょうか。

終わり

ここまで色々書いてきましたが、この辺をすっ飛ばすためのテンプレートなので、細かく考えず季節性がありそうなデータを突っ込んで見てください。けっこう頭のなかで勝手に季節性があるものだと思いこんでたりしていることがあるのでおもしろいですよ。またこのテンプレートは、月ごとの計算に使う用につくっています。それ以外の、例えば曜日ごとであったり、日付ごとの季節要因を計算する場合はそれ用に変えてみてください。といいながら雑なやつを用意しました。

※正しい用語を無視して書いているところが大半です。難しい感を消したくそのようにしていますのでご容赦ください。(消せてなさそう)

SQL勉強会はじめました

初心者による初心者のためのSQL勉強会

うーたん(GMOペパボのカスタマーサポートマネージャー)とネパリコでダルスープ飲みながらSQL勉強したいわーという話題が上がったのでみんなで勉強会をやろーとなって今日はじめました。うーたんとらむさん(GMOペパボのカスタマーサポートサブマネージャー)と自分で。トビーさん(GMOペパボのカスタマーサポートリーダー)も参加予定だったのですが、体調不良でおやすみでした。(トビーさんお大事にしてください。)

新しいなにかを勉強したり、覚えたりするときって一緒にやる人がいるかどうかでやる気が全然変わりますよね。あと一緒にやる人のレベル感が同じくらいだとより良いですよね。うーたんとらむさんがお題を先にクリアしようと張り合ってるのとか最高でした。(めっちゃ失礼な表現ですね)

今日は2時間くらいやって、2つのテーブルをくっつけて、特定条件で絞り込むとこまでやりました。とってもいい感じにできたので、来週もやります。次までに業務的に出したい情報を決めて、勉強会でそれをだしてみようという感じです。

追記: SQL勉強会はじめました というタイトルだったのですが、ツネ様からMySQLはミドルウェアの名前だからSQL勉強会が正しいよ。とご指摘いただいたので修正いたしました!ツネ様ありがとうございます!