45
シニア テクニカル アーキテクト 清水 優吾(しみず ゆうご) / 株式会社セカンドファクトリー @yugoes1021 yugoes1021 Microsoft MVP for Data Platform - Power BI (2017.02 -) Facebook のデータを Power BI で見てみると… ~セルフマーケティングに活用できるかも!?~ 2017-09-02 Power BI 勉強会 – 第5回 https://www.slideshare.net/yugoes1021/facebook-power-bi

Facebook のデータを Power BI で見てみると…

Embed Size (px)

Citation preview

Page 1: Facebook のデータを Power BI で見てみると…

シニア テクニカル アーキテクト清水 優吾(しみず ゆうご) / 株式会社セカンドファクトリー

@yugoes1021

yugoes1021 Microsoft MVP for Data Platform - Power BI(2017.02 -)

Facebook のデータをPower BI で見てみると…

~セルフマーケティングに活用できるかも!?~

2017-09-02Power BI 勉強会 – 第5回

https://www.slideshare.net/yugoes1021/facebook-power-bi

Page 2: Facebook のデータを Power BI で見てみると…

本セッションのゴール

はい、皆さん。Power BI 使ってますか?

2017/09/02 Power BI 勉強会 2

Page 3: Facebook のデータを Power BI で見てみると…

本セッションのゴール

今回は私にしては珍しく飛び道具はありません(‘ω’)

※これまでは IFTTT, Sony MESH, MS Flow, リアルタイムストリーミング、Power BI Report Server…,etc.

2017/09/02 Power BI 勉強会 3

Page 4: Facebook のデータを Power BI で見てみると…

本セッションのゴール

実はずっとサボっていた DAX や M言語の勉強をちょっと始めました( ˘ω˘)

ちょっとだけですw

2017/09/02 Power BI 勉強会 4

Page 5: Facebook のデータを Power BI で見てみると…

本セッションのゴール

「え、DAX?M言語って何?」って思った方。大丈夫です。知らなくても MVP になれます(笑)

2017/09/02 Power BI 勉強会 5

Page 6: Facebook のデータを Power BI で見てみると…

本セッションのゴール

でも知っておいて損はないDAX や M言語。今日はちょこっとだけ使用しながら、データ分析に一歩踏み出してみましょう。

2017/09/02 Power BI 勉強会 6

Page 7: Facebook のデータを Power BI で見てみると…

本セッションのゴール

というわけで、本セッションのゴールは

Power BI でデータ分析ってこうやるんだ!

という入り口に皆さんをお連れすること

です。

ちなみに Facebook データを使用します。2017/09/02 Power BI 勉強会 7

Page 8: Facebook のデータを Power BI で見てみると…

自己紹介:

清水 優吾 (Yugo Shimizu) ♂株式会社セカンドファクトリーシニア テクニカル アーキテクト

• もともと金融系システムの開発者。今はテクニカルアーキテクト。

• 時々コーディングもしてます。開発者の端くれです。

専門:

Power BI, Web API, “つくらず、つなぐこと”

Twitter: @yugoes1021

Facebook: https://www.facebook.com/yugoes1021

Power BI 勉強会: https://powerbi.connpass.com

Japan Web API Community: https://jwacom.connpass.com2017/09/02 Power BI 勉強会 8

Microsoft MVP for Data Platform -

Power BI(2017.02 - )

Page 9: Facebook のデータを Power BI で見てみると…

注意事項と前提

■注意事項

• 資料はすべて公開(powerbi.connpass.com or SlideShare)

• 写真・動画の撮影は自由に!

• 私の肖像権はフリー

• SNS 等へのアップOK(私以外の方が含まれる場合は、ご遠慮願います。)ハッシュタグ:

#PowerBI #PBIJP #PowerBI勉強会

■私が心掛けていること

• 誰でも実現可能な方法であること

• お金がかかっても、できるだけ安価であること

• なにより「試してみよっかなー」と思っていただけること

2017/09/02 Power BI 勉強会 9

Page 10: Facebook のデータを Power BI で見てみると…

Power BI を使う際に最初に決めること

1. 取得対象のデータを決める

2. Power BI へのつなぎ方を決める

つまり…

1. =データソース

2. =アーキテクチャ

ということですね。

2017/09/02 Power BI 勉強会 10

皆さん自身の Facebook データ

Data Connector

今回の場合…

Page 11: Facebook のデータを Power BI で見てみると…

今回のアーキテクチャ

2017/09/02 Power BI 勉強会 11

Page 12: Facebook のデータを Power BI で見てみると…

アーキテクチャ

今回は以下を使用します。

• Power BI Desktop 標準の Data Connector皆さん自身の Facebook のデータを収集

• Power BI Desktopデータを可視化・分析するのに使用

2017/09/02 Power BI 勉強会 12

Page 13: Facebook のデータを Power BI で見てみると…

Facebook 用データコネクタを使用したレポートの作成方法

Facebook 用データコネクタを使用したレポートを作成するには、Power BI Desktop でレポートを作成します。作成した pbix ファイルを Power BI service に発行すると Power BI service で動作させることができます。

2017/09/02 Power BI 勉強会 13

Power BI service

データソース

pbix

ファイル

クライアント PC

2.発行pbix 作成時の接続情報

1.作成

3.データ更新

発行後のスケジューリングをお忘れなく!

Page 14: Facebook のデータを Power BI で見てみると…

Power BI Desktop でFacebook へ接続

2017/09/02 Power BI 勉強会 14

Page 15: Facebook のデータを Power BI で見てみると…

1.データを取得

1. 以下にアクセスするhttps://powerbi.microsoft.com/ja-jp/desktop/

2. 左の画面が開くので[DOWNLOAD FREE] をクリック

3. インストーラーを保存して、実行する

4. 起動する

2017/09/02 Power BI 勉強会 15

Page 16: Facebook のデータを Power BI で見てみると…

1.データを取得

1. Power BI Desktop を起動して、[データを取得] の上半分をクリック

2. 開いた画面の [オンライン サービス] をクリック

3. [Facebook] をクリック

4. 最後に [接続] をクリック

2017/09/02 Power BI 勉強会 16

Page 17: Facebook のデータを Power BI で見てみると…

1.データを取得

1. [接続] ドロップダウンをクリック

2. 今回は [投稿] を使用します。必要に応じて、欲しいデータを選択してください。

ちなみにこのコネクタは Facebook Graph API を呼び出しているようです。

参考)https://developers.facebook.com/docs/graph-api/overview

3. 試しに [接続] が “--なし--” のまま [OK] を押します。

2017/09/02 17Power BI 勉強会

Page 18: Facebook のデータを Power BI で見てみると…

1.データを取得

左の様な画面になりますが、注目はURLの部分。https://graph.facebook.com/v2.8/meとなっています。

注意)現状の最新は v2.10 です。なので書き換えちゃいます。https://graph.facebook.com/v2.10/me

また下部に注目してください。

books, feed, friends, games, likes, movies, permissions, posts, television.

これらはさきほど [接続] に出てきた選択肢です。

2017/09/02 Power BI 勉強会 18

Page 19: Facebook のデータを Power BI で見てみると…

1.データを取得

つまり [接続] で選ばなくても、大丈夫です。

が、Facebook は一度に取得できるデータ容量がそこそこ厳しいので、必要なものに絞っておいた方がよいです。

私の場合、Facebook アカウントを作成したのが 2011 年なのでこのまま実行するとすべてのデータを取りに行って、すごく長い時間待たされて、結果取得できず、となります。

なので URL を編集します。

https://graph.facebook.com/v2.10/me/posts?since=1483196400

2017/09/02 Power BI 勉強会 19

Page 20: Facebook のデータを Power BI で見てみると…

1.データを取得

?since=1483196400

は 日付指定 をする際の URL パラメータです。

= の後は Unix タイムスタンプと呼ばれる日時形式です。

https://developers.facebook.com/docs/graph-api/using-graph-api?locale=ja_JP

[UNIX タイムスタンプ変換ツール]

http://url-c.com/tc/

1483196400 = 2017年01月01日 00:00:00

2017/09/02 Power BI 勉強会 20

Page 21: Facebook のデータを Power BI で見てみると…

1.データを取得

ここまでくれば、あとは必要なデータを選択すれば OK です。

意識する必要があるのは

「Facebook は JSON データが返される」

ということです。

RDB とはデータ構造が異なります。Facebook のデータはネストの嵐ですw

ハマるとよくわからなくなります。不要なデータを何度も取得してしまうことになります。

なのでデモで見てみましょう!

2017/09/02 Power BI 勉強会 21

Page 22: Facebook のデータを Power BI で見てみると…

~デモ~さぁーて、実際に見てみましょう。

2017/09/02 Power BI 勉強会 22

Page 23: Facebook のデータを Power BI で見てみると…

2.データの加工(ETL)

2017/09/02 Power BI 勉強会 23

Page 24: Facebook のデータを Power BI で見てみると…

2.データの加工(ETL)

ETL とは Extract, Transform, Load の略で、

• Extract: データの抽出

• Transform: 欲しいデータを選択し整形(1.複数のデータを結合、2.表示形式を変更)

• Load: 読み込む

ということです。

Power BI Desktop の ETL 機能は他に比べても非常に優秀です。BI には ETL が必須なのですが、無償有償問わず、ここまで使えるツールはあまりないです。これを選定理由にされている方も多いです。

2017/09/02 Power BI 勉強会 24

Page 25: Facebook のデータを Power BI で見てみると…

2.データの加工(ETL)

2017/09/02 Power BI 勉強会 25

■親データ{"姓”: "清水","名”: "優吾","性別": "男性","年齢": 35,"投稿ID": [{101},{102}]

}

■子データ[{"投稿ID": 101,"投稿": "おはよう!","日時": "2017-09-02T09:00:00+09:00"

},{

"投稿ID": 102,"投稿": "こんにちは!","日時": "2017-09-02T12:00:00+09:00"

}]

■欲しいデータ[{"姓": "清水","名": "優吾","性別": "男性","年齢": 35,"投稿ID": 101"投稿": "おはよう!","日時": "2017-09-02T09:00:00+09:00"

},{"姓": "清水","名": "優吾","性別": "男性","年齢": 35,"投稿ID": 102"投稿": "こんにちは!""日時": "2017-09-02T12:00:00+09:00"

},]

ETL

Page 26: Facebook のデータを Power BI で見てみると…

姓 名 性別 年齢 投稿ID 投稿 日時

清水 優吾 男 35歳 101 おはよう! 2017年09月02日09時00分00秒

清水 優吾 男 35歳 102 こんにちは! 2017年09月02日12時00分00秒

2.データの加工(ETL)

2017/09/02 Power BI 勉強会 26

■欲しいデータ[{"姓": "清水","名": "優吾","性別": "男性","年齢": 35,"投稿ID": 101"投稿": "おはよう!","日時": "2017-09-02T09:00:00+09:00"

},{"姓": "清水","名": "優吾","性別": "男性","年齢": 35,"投稿ID": 102"投稿": "こんにちは!""日時": "2017-09-02T12:00:00+09:00"

},]

Page 27: Facebook のデータを Power BI で見てみると…

2.データの加工(ETL)

2017/09/02 Power BI 勉強会 27

• Data Analysis Expressions (DAX) 言語DAX は、関数、演算子、および定数を集めたもので、これらを数式または式の中で使用して、1 つまたは複数の値を計算して返すことができます。 さらに簡単に説明すると、DAX は、現在のモデルに既に含まれているデータから新しい情報を作成するのに役立ちます。(引用:https://powerbi.microsoft.com/ja-jp/documentation/powerbi-desktop-quickstart-learn-dax-basics/ )

例)指定する日付範囲での製品カテゴリごとの成長率、売上の前年比、等

• M 言語 (正式名:Power Query Formula Language)正式名称は Power Query Formula Language なのに、なぜだか M 言語と呼ばれる。詳細は Power BI 勉強会 第3回 で紹介された沼口さんの資料をご覧ください。https://docs.com/numaguchi-shige/2280/20170218-powerbi-mhttps://road2cloudoffice.blogspot.jp/2017/02/m-power-query-formula-language.html

私の中の分類ですが、ざっくりと以下のように捉えています。

• M 言語 ⇒ クエリエディターで編集データを取得する際に、複数のデータを結合、過不足ないデータにするときに使用。基本的にドラッグ&ドロップで自動生成されたものを手動で編集する(イチから書かない)

• DAX 言語 ⇒ Power BI Desktop の [データ] や [フィールド] から選択し [数式バー] から編集M 言語によって、過不足ない状態で取得されたデータを、整形するのに使用。[メジャー] が該当。ここで言う「整形」とは、表示形式の変更、取得したデータから新たなデータを作成すること。Excel で言うとセルの書式設定。例:日付の表示形式、列データの分割・結合、並び替え等

Page 28: Facebook のデータを Power BI で見てみると…

2.データの加工(ETL)

2017/09/02 Power BI 勉強会 28

■Facebook 等、SaaS をデータソースにする場合の注意点 – 日時 (DateTime) 型クラウドサービスでは通常 協定世界時 UTC (英語:coordinated universal time) が使用されます。https://ja.wikipedia.org/wiki/%E5%8D%94%E5%AE%9A%E4%B8%96%E7%95%8C%E6%99%82

実際は昨今の DB では「UTC を表す “値” を保持していて、それを使用する際に各地の現地時刻に直して扱っている」というのが正確な表現です。

これを考慮せずに Facebook からデータを取得、Power BI Desktop でレポート作成、Power BI service に発行 すると、データが更新された際に、時刻がおかしくなる可能性があります。

大事なのはクエリエディターでデータを取得した際の日時データの形式です。

Page 29: Facebook のデータを Power BI で見てみると…

2.データの加工(ETL)

2017/09/02 Power BI 勉強会 29

2017-08-19T02:31:04+00:00yyyy-MM-ddTHH:mm:ss+00:00

ISO8601(日付と時刻に関する国際規格)で定義“+00:00” の部分でこの日時の UTC に対する時差を表現

つまり

2017-08-19T02:31:04+00:00⇒ 2017年8月19日 02時31分04秒 (UTC)⇒ 2017年8月19日 11時31分04秒 (JST)

2017-08-19T02:31:04+09:00⇒ 2017年8月19日 02時31分04秒 (JST)⇒ 2017年8月18日 17時31分04秒 (UTC)

Page 30: Facebook のデータを Power BI で見てみると…

2.データの加工(ETL)

2017/09/02 Power BI 勉強会 30

2017-08-19T02:31:04+00:00

よく見ると取得したデータがすべて +00:00 (UTC) になっています。つまり 02:31:04+00:00 というのはUTC で言えば 午前 02 時 31 分 04 秒JST で言えば 午前 11 時 31 分 04 秒のこと。

ただしこのまま [発行] すると Power BI service はUTC のまま表示し続けますw

なのですべてのデータを2017-08-19T02:31:04+00:00 ではなくて2017-08-19T11:31:04+09:00 にしたいです。

Page 31: Facebook のデータを Power BI で見てみると…

~デモ2~さぁーて、実際に見てみましょう。

2017/09/02 Power BI 勉強会 31

Page 32: Facebook のデータを Power BI で見てみると…

2.データの加工(ETL)

2017/09/02 Power BI 勉強会 32

■詳細エディターを開く1. [クエリを編集] クリック2. クエリエディターで [詳細エディター] をクリック

■修正後let

ソース = Facebook.Graph("https://graph.facebook.com/v2.10/me/posts"),変更された型 = Table.TransformColumnTypes(ソース,{{"created_time", type datetimezone}}),変更された型2 = Table.TransformColumns(変更された型, {"created_time", each DateTimeZone.SwitchZone(_, 9), type datetimezone})

in変更された型2

■修正前let

ソース = Facebook.Graph("https://graph.facebook.com/v2.10/me/posts"),変更された型 = Table.TransformColumnTypes(ソース,{{"created_time", type datetimezone}})

in変更された型

【M 言語】

Page 33: Facebook のデータを Power BI で見てみると…

2.データの加工(ETL)

2017/09/02 Power BI 勉強会 33

■時間帯 の作成日付型(DateTime)の列が既にあることが前提[モデリング]タブ ⇒ [新しい列] をクリック。以下の式を入力時間帯 = HOUR([日付型の列名])

HOUR() 関数で時間帯を作成すると 整数型 になるので、検索条件等で使うことを想定するなら、文字列型バージョンも作成しておいたほうがよい

■時間帯(文字列) の作成[モデリング]タブ ⇒ [新しい列] をクリック。以下の式を入力時間帯(文字列) = HOUR([日付型の列名])

作成後 [モデリング] タブ ⇒ 書式設定の中にあるデータ型を [テキスト] に指定さらに [列で並べ替え] を選択し、元の数値型の列を指定

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~※年が作成したい場合は、上記の HOUR 関数を YEAR 関数に替えてください。

【DAX】

Page 34: Facebook のデータを Power BI で見てみると…

3.Data alerts の設定

2017/09/02 Power BI 勉強会 34

Page 35: Facebook のデータを Power BI で見てみると…

3.Data alerts の設定

2017/09/02 Power BI 勉強会 35

さて、こうやって無事データが取得できて、分析もでき、Power BI service へ発行もできました。

ところで BI というのは ビジネスインテリジェンス の略ですよね。一般的に BI では インサイトを得る と言います。英単語 insight だと「洞察(力)、物事の実態を見抜くこと(力)」という意味です。

BI では「データを見て、その変化を見て、何が起きているのかを見抜いたり、推測したりすること」です。

Page 36: Facebook のデータを Power BI で見てみると…

流行のキーワード

2017/07/06

Backend Frontend Services

D B

IoT

AI (人工知能)

Machine Learning(機械学習)

Chat Bot

Robot

Mobile App

業務アプリ

Storage

SNS Office 365

Salesforce

Consumer Business

kintoneFinTech

Gatewayson the Edge

Gatewayson the cloud

BusinessIntelligence

=APISensors

Devices

Page 37: Facebook のデータを Power BI で見てみると…

3.Data alerts の設定

2017/09/02 Power BI 勉強会 37

ただ、どんなに綺麗に可視化できたとしても、1日中ダッシュボードを眺めている人なんていませんよね?

でも見てないとリアルタイムの変化を知る必要がある場合は、気付けないかもしれない。。。

そんなあなたに朗報です。そう、Power BI service には 通知 をしてくれる機能があります。

Data alerts in Power BI service です。

Page 38: Facebook のデータを Power BI で見てみると…

3.Data alerts の設定

2017/09/02 Power BI 勉強会 38

[Power BI サービスでのデータ アラート]https://powerbi.microsoft.com/ja-jp/documentation/powerbi-service-set-data-alerts/

Power BI での通知は ダッシュボード にあるタイルに設定することができます。ただし設定可能なタイルは ゲージ、カード、KPI です。

Page 39: Facebook のデータを Power BI で見てみると…

3.Data alerts の設定

2017/09/02 Power BI 勉強会 39

Page 40: Facebook のデータを Power BI で見てみると…

3.Data alerts の設定

2017/09/02 Power BI 勉強会 40

嬉しいことに データアラート は Microsoft Flow と連携することができます。

https://flow.microsoft.com/ja-jp/

Page 41: Facebook のデータを Power BI で見てみると…

3.Data alerts の設定

2017/09/02 Power BI 勉強会 41

Page 42: Facebook のデータを Power BI で見てみると…

3.Data alerts の設定

2017/09/02 Power BI 勉強会 42

Page 43: Facebook のデータを Power BI で見てみると…

まとめ

今回は Facebook のデータを使用して、データの取得・整形・

読込から、レポートを作成し、分析までを試してみました。

また、必要な通知、そこからの連携ができることもわかりました。

2017/09/02 Power BI 勉強会 43

Power BI service

Data alerts 通知

分析

Microsoft Flow

Any Servicesトリガー

Page 44: Facebook のデータを Power BI で見てみると…

まとめ

皆さん、いかがでしたか?

「こんなに簡単にできるならやってみよう!」

試したくなりましたか?

はい、今日のゴール達成( ˘ω˘ )!

2017/09/02 Power BI 勉強会 44

Page 45: Facebook のデータを Power BI で見てみると…

ご清聴ありがとうございました!~ご不明な点は何なりと!~

2017/09/02 Power BI 勉強会 45

より詳細にお話聞きたい、実案件でご相談があるという場合は

遠慮なくお申し付けくださいm(_ _)m