いろいろやってみよう

完璧を目指すより、まず終わらせろ

感想:会社を変える分析の力

はじめに

データ分析界隈ではかなり有名と勝手に思っている、会社を変える分析の力を読みました。
折角なので、思ったこと、感じたことを書いていきます。

ポイント

データ分析の定義

本書の冒頭で、データ分析の定義を次のように記載していました。

「データ分析」とは、数値計算やデータ処理といった定型的なプロセスに納まるものではなく、どのようなデータをどのように分析すればどのような意思決定に役立つかを考える創造的な思考プロセスの側面も持ちます。

これは、本書の中でも特に重要な言葉だと思っています。様々な分析手法、分析ツールが次々と世の中に出てきていますが、本当に大切なことは、意思決定に役立つかどうかだと思います。

もう少し踏み込んで言うならば、個人的には意思決定が必要な課題を見つける力も重要だと思います。
私も、現在はデータ分析コンサルといった仕事を行っていますが、いかに顧客の課題を見つけるかが最も重要で、最も難しいことだと感じています。
顧客に直接課題を聞いたとしても、課題を把握していないという状況は少なくありません。
もしくは、「先月の売上が悪かった」や、「顧客離れが進んでいる様子だ」といったように、漠然とした課題となっていることもあります。
課題が漠然としている、または定まっていない状態のままでは、データ分析で課題解決に取り組むことは難しいと思います。

そのため、データ分析で解決できる粒度に課題を設定すること、課題を設定した上でどのようなプロセスでデータ分析を進めるかを考えることが重要になると思っています。
付け加えると、それが解決に値する課題なのか、も吟味する必要がありますね。

データ分析と言ってしまうと、AIや機械学習と言った先進的な手法が取り沙汰されることが多いような印象がありますし、私もそれらを駆使出来たほうが凄いしかっこいいなーなんてミーハーな心も沸き立ちますが、その手前のいかに課題を見つけるか・課題を設定するか、が最も重要だと感じます。


分析を数字遊びにしてはいけない

こんな耳の痛い言葉がありましたw

どれだけたくさんの計算結果を出しても、問題を解明する意図を持って取り組まなければ、ただの「数字遊び」です。

データを見ていると、興味本位で色々な切り口での分析を試してみたくなります。
この要素を追加したらどうなるのか?こっちの切り口を試したら、新しいことが分かるのでは?
時にはこういった探索も必要だと思いますが、知らず知らずのうちに探索することに集中してしまい、当初の課題から離れてしまうことがあります。

私も、顧客のデータを調査・分析している中で、もっとこういう角度から分析したほうが良いな、と分析途中で感じることはしょっちゅうあります。
前はそう思った途端寄り道してしまってましたが、そうなったときは大体失敗への道を突き進み始めるか、その寄り道も本来予定していた分析内容もどちらも中途半端な形になってしまっていました。
今は寄り道したくなったときは、自身の当初の見当の付け方が甘かったと思い、寄り道したい気持ちをぐっと抑えています。
基本的に、大事なことは課題を解決すること。それを念頭に置いて、筆者の言う数字遊びにならないようにしないといけません。


データ分析の価値

分析の価値について、次のように書かれていました。

分析の価値とは、端的に言えば、「その分析により意思決定を改善することで得られる効用」です。
(中略)
「分析の価値」=「意思決定への寄与度」×「意思決定の重要性」

これは大事な方程式です。
ビジネス上、解決すべき課題、行うべき意思決定は山程ありますが、それぞれを解決したときの価値は全て等しい訳ではありません。
一つの意思決定でも10万円の利益になるのか、1億の利益になるのかで価値は大きく異なります。
冒頭でも書きましたが、その課題は本当に解決すべき問題なのか?というのは常に念頭に置いておきたい考えです。

データ分析の成果は、高度な分析手法ではない

データ分析の成果は、報告書の厚みでも、高度な分析手法でも、データの規模でもありません。何がわかったか、それは意思決定にどう役立つのか、それだけなのです。

報告書って、濃い内容、多くのページで構成されていたほうが良いと思ってしまうんですよね...
私もそう思ってましたし、なんなら今でもたまにそう考えてしまうことがあります。

ただ、その考えを改めさせられる出来事が1年ほど前、前職にいた際にありました。
それは、顧客に関するある調査・分析業務を行っていた時のことです。
調査結果を分析し、その結果をレポートにまとめていたら30ページ超えの資料になりました。
「ふむ、よくできたぞ!」と息巻いて経営陣に展開したところ、帰ってきた言葉は「これだとよくわからないから、要点をまとめて説明をする場を設けてくれないか」でした。
当時の私は、「文句言ってないで全部目を通してよ!話はそれからだ!」と心の中で悪態をついていました。

でも、それこそ筆者の言葉通り。大切なことは、報告書の厚みではなく、何がわかったか、ということだったのだと思います。

特に経営層からしたら、データ分析の手法や説明に馴染みもなければ、興味も薄いかもしれません。
経営側の立場からすると、他にも多くの課題や決定すべきことがあり、その中で多くの事実が書き並べられたレポートを手渡されても、その中から経営に直結する最も重要な事実を選び出す作業には相当の労力が必要となります。

当時の私は、きっかけは嫌々ながらも、報告書から更に要点をまとめる作業の重要性を感じました。最初に報告書を作ったときは、「こんな数値が出た」「これも面白そうだ」とただの数字遊びで報告書のページ数を増やしていました。

ただ、「経営層が知るべきことはなにか」、「何を伝えることが経営にとって最もインパクトがあるのか」、「今この会社にとって一番に取り組むべきことは何か」といったフィルターを再度通す行為が、自分にとっても良い訓練になったと感じています。



おわりに

この記事には書かなかった自分なりのポイントは他にも多数あります。
ですが、重要なことだけに絞ると、上に書いたことにまとまるかなと思います。

この本は分析手法がどうとか、といったことには殆ど(全く?)触れていませんが、データ分析を行う上での大事な心構えがしっかりと書かれています。
私も、年に1度くらいは読み直そうかなーと思いました。
おすすめです!

TIMESTAMP_DIFF のちょっとしたメモ

BigQueryで、TIMESTAMP型同士の差分を計算することがあります。

その時はTIMESTAMP_DIFF関数を使っています。記述方法は下記の通り。

TIMESTAMP_DIFF(timestamp_expression, timestamp_expression, date_part)

参考サイト


これなんですが、date_partに指定する値によって、計算結果の丸め方がちょっと代わります。

例えば、HOUR(時間)を指定した場合。

SELECT
  TIMESTAMP_DIFF(TIMESTAMP "2018-10-01 11:59:59 UTC", TIMESTAMP "2018-10-01 10:00:00 UTC", HOUR) AS hours;

実際の差分は1時間59分59秒ですが、計算結果は「1」になります。

次に、MINUTE(分)を指定した場合。

SELECT
  TIMESTAMP_DIFF(TIMESTAMP "2018-10-01 11:59:59 UTC", TIMESTAMP "2018-10-01 10:00:00 UTC", MINUTE) AS minutes;

結果は「119」になります。

つまり、指定したdate_partより下の部分は、切り捨てられてしまう、ということです。

しっかり理解した上で使わないと、ちょっとしたミスに繋がりそうですね。

MySQLをインストールしよう

はじめに

2019年5月に入社した会社の関係で、SQLの勉強をしています。
勉強はスッキリわかるSQL入門を読みながら、dokoQLのサイトを使ってしています。
ただ、dokoqlだとテーブル数・データ数が少なかったり、より多くのコマンドの練習をするにはやや不足している部分があったり、それと環境構築をすることで基礎的な部分の理解を深めることもできると思い、自分のPCにMySQLをインストールすることにしました。

今回はインストールの手順をまとめて記事にします。


インストール環境

  • OS:Windows10
  • メモリ:16GB
  • CPU:Inter Core i7-4790 3.60GHz

インストーラーのダウンロード

MySQLのサイトにアクセスします。
www.mysql.com

画面上部の、ダウンロードをクリックします。
f:id:mamamashio:20190419002232p:plain


画面下部にある、「MySQL Community Edition」下のリンク、「Community (GPL) Downloads »」をクリックします。
f:id:mamamashio:20190419002330p:plain


MySQL Community Server」下のリンク、「DOWNLOAD」をクリックします。
f:id:mamamashio:20190419002415p:plain

OSは「Microsoft Windows」を選択し、「Go to Download Page」をクリックします。
f:id:mamamashio:20190419002455p:plain

MySQL Installer 8.0.15 で、「mysql-installer-web-community」のDownloadをクリックします。MySQLのインストール中に、ネット接続が行える場合はこちらでOKです。
f:id:mamamashio:20190419002537p:plain


ラクルアカウントでログインをしてダウンロードを行うか聞かれます。必要なければ、「No thanks, just start my download.」をクリックすればいいようです。私は以前オラクルアカウントを作っていたので、「Login」をクリックしました。
f:id:mamamashio:20190419002745p:plain

「Login」を選択すると、オラクルのログイン画面が表示された後、下図の画面に移ります。ポチッとダウンロードしてやりましょう。
f:id:mamamashio:20190419003149p:plain

インストール

ダウンロードしたインストーラを実行します。
早速何やら出てきました。オプションのアップグレードが利用可能とからしいですが、そういうのいいです。
f:id:mamamashio:20190419004207p:plain

アグリーします。
f:id:mamamashio:20190419004328p:plain

「Server only」を選択して、次に進みます。
f:id:mamamashio:20190421111101p:plain

インストールされる内容が表示されます。問題なければ「Execute」をクリックします。
f:id:mamamashio:20190421111219p:plain

インストールが完了しました。次に進みます。
f:id:mamamashio:20190421111327p:plain

このあと環境設定に入ります。この画面は特に何もせず、次に進みます。
f:id:mamamashio:20190421111423p:plain

「Standalone MySQL Serve / Classic MySQL Replication」が選択されていることを確認し、「Next」をクリックします。
f:id:mamamashio:20190421111602p:plain

各種設定を行います。

  • Server Configuration Type

MySQL Serverインストール用の正しいサーバー構成タイプを選択します。この設定は、MySWL Serverインスタンスに割り当てるシステムリソースの量を定義します。(今回は個人PCにインストールするので「Development Computer」を選択しました。)

  • Connectivity

接続方法の設定です。基本デフォルトですが、ネットワークを介してアクセスする予定は今のところないので、「Open Windows Firewall ports for network access」のみチェックを外します。

  • Advanced Configuration

このあとの手順で、高度な設定を行うかどうかです。一旦チェックを入れておきます。

すべて行ったら、「Next」をクリックします。
f:id:mamamashio:20190421112407p:plain

  • Use Strong Password Encyption for Authentication(recommended)

認証に強力なパスワードを使用するかどうかです。こちらが推奨とのことなので、選択します。
f:id:mamamashio:20190421113347p:plain

rootアカウントのpassword設定を行います。
必要に応じて、userアカウントの作成も行いましょう。
user roleは何が適切かわからなかったので、とりあえずデフォルトの「DB Admin」にしておきました。
設定が終わったら「Next」をクリックします。
f:id:mamamashio:20190421123648p:plain

Windowsサービスの詳細設定をします。
Windows Service Name」はWindowsに登録される名前とのことです。こだわりがなければデフォルトの「MySQL80」で良いでしょう。
「Start the MySQL Server at System Startup」はWindows起動時にMySQLも起動するかどうかの内容です。毎回起動はさせなくてもいいので、ここのチェックは外します。
サービスを実行するアカウントはよくわからないのでデフォルトの「Standard System Account」にします。
設定を終えたら「Next」をクリックします。
f:id:mamamashio:20190421124153p:plain


ログの設定とログファイル名の設定を行います。
デフォルトでも良さそうでしたが、あとから見て迷子にならないように、ファイル名文頭に「mysql-」とだけ追加しておきました。
設定をしたら、「Next」をクリックします。
f:id:mamamashio:20190421125723p:plain

ここはそのまま「Next」をクリックします。
f:id:mamamashio:20190421125930p:plain

「Execute」をクリックして、変更を適用します。
f:id:mamamashio:20190421130309p:plain

設定が完了しました。「Finish」をクリックします。
f:id:mamamashio:20190421130415p:plain

続けて、製品の構成ウィザードを見ていきます。「Next」をクリックします。
f:id:mamamashio:20190421130630p:plain

「Finish」をクリックして完了です。
f:id:mamamashio:20190421130800p:plain


MySQLの起動

Windowsのスタートメニューに「MySQL」が追加されているので、クリックして起動します。
コマンドプロンプトが立ち上がりパスワードを求めれるので、自分で設定したパスワードを入力し、エンターを押下するとログインできます。
f:id:mamamashio:20190421131040p:plain

はれて、MySQLのインストールができました!
やったね!

ブログ始めよう

どうもはじめまして、ましおです。

今まで卸売企業のマーケティング部に所属していたのですが、この5月にデータ分析を事業として行っている企業に転職しました。
IT企業には「一人一つ以上ブログを運営すること」、とかいう就業規則があるとかないとかって聞いたことがあるので、これを機にブログでも始めるかぁという気持ちです。

ブログを作るのは古の時代に繁栄したと言われるmixi以来なので、文才のbの字もない駄文を撒き散らすことになるかもしれません。
それも良きかな、という気持ちでやっていきます。