Download - 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
本セッションのゴール
はい、皆さん。Power BI 使ってますか?
2017/09/02 Power BI 勉強会 2
本セッションのゴール
今回は私にしては珍しく飛び道具はありません(‘ω’)
※これまでは IFTTT, Sony MESH, MS Flow, リアルタイムストリーミング、Power BI Report Server…,etc.
2017/09/02 Power BI 勉強会 3
本セッションのゴール
実はずっとサボっていた DAX や M言語の勉強をちょっと始めました( ˘ω˘)
ちょっとだけですw
2017/09/02 Power BI 勉強会 4
本セッションのゴール
「え、DAX?M言語って何?」って思った方。大丈夫です。知らなくても MVP になれます(笑)
2017/09/02 Power BI 勉強会 5
本セッションのゴール
でも知っておいて損はないDAX や M言語。今日はちょこっとだけ使用しながら、データ分析に一歩踏み出してみましょう。
2017/09/02 Power BI 勉強会 6
本セッションのゴール
というわけで、本セッションのゴールは
Power BI でデータ分析ってこうやるんだ!
という入り口に皆さんをお連れすること
です。
ちなみに Facebook データを使用します。2017/09/02 Power BI 勉強会 7
自己紹介:
清水 優吾 (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 - )
注意事項と前提
■注意事項
• 資料はすべて公開(powerbi.connpass.com or SlideShare)
• 写真・動画の撮影は自由に!
• 私の肖像権はフリー
• SNS 等へのアップOK(私以外の方が含まれる場合は、ご遠慮願います。)ハッシュタグ:
#PowerBI #PBIJP #PowerBI勉強会
■私が心掛けていること
• 誰でも実現可能な方法であること
• お金がかかっても、できるだけ安価であること
• なにより「試してみよっかなー」と思っていただけること
2017/09/02 Power BI 勉強会 9
Power BI を使う際に最初に決めること
1. 取得対象のデータを決める
2. Power BI へのつなぎ方を決める
つまり…
1. =データソース
2. =アーキテクチャ
ということですね。
2017/09/02 Power BI 勉強会 10
皆さん自身の Facebook データ
Data Connector
今回の場合…
今回のアーキテクチャ
2017/09/02 Power BI 勉強会 11
アーキテクチャ
今回は以下を使用します。
• Power BI Desktop 標準の Data Connector皆さん自身の Facebook のデータを収集
• Power BI Desktopデータを可視化・分析するのに使用
2017/09/02 Power BI 勉強会 12
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.データ更新
発行後のスケジューリングをお忘れなく!
Power BI Desktop でFacebook へ接続
2017/09/02 Power BI 勉強会 14
1.データを取得
1. 以下にアクセスするhttps://powerbi.microsoft.com/ja-jp/desktop/
2. 左の画面が開くので[DOWNLOAD FREE] をクリック
3. インストーラーを保存して、実行する
4. 起動する
2017/09/02 Power BI 勉強会 15
1.データを取得
1. Power BI Desktop を起動して、[データを取得] の上半分をクリック
2. 開いた画面の [オンライン サービス] をクリック
3. [Facebook] をクリック
4. 最後に [接続] をクリック
2017/09/02 Power BI 勉強会 16
1.データを取得
1. [接続] ドロップダウンをクリック
2. 今回は [投稿] を使用します。必要に応じて、欲しいデータを選択してください。
ちなみにこのコネクタは Facebook Graph API を呼び出しているようです。
参考)https://developers.facebook.com/docs/graph-api/overview
3. 試しに [接続] が “--なし--” のまま [OK] を押します。
2017/09/02 17Power 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
1.データを取得
つまり [接続] で選ばなくても、大丈夫です。
が、Facebook は一度に取得できるデータ容量がそこそこ厳しいので、必要なものに絞っておいた方がよいです。
私の場合、Facebook アカウントを作成したのが 2011 年なのでこのまま実行するとすべてのデータを取りに行って、すごく長い時間待たされて、結果取得できず、となります。
なので URL を編集します。
https://graph.facebook.com/v2.10/me/posts?since=1483196400
2017/09/02 Power BI 勉強会 19
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
1.データを取得
ここまでくれば、あとは必要なデータを選択すれば OK です。
意識する必要があるのは
「Facebook は JSON データが返される」
ということです。
RDB とはデータ構造が異なります。Facebook のデータはネストの嵐ですw
ハマるとよくわからなくなります。不要なデータを何度も取得してしまうことになります。
なのでデモで見てみましょう!
2017/09/02 Power BI 勉強会 21
~デモ~さぁーて、実際に見てみましょう。
2017/09/02 Power BI 勉強会 22
2.データの加工(ETL)
2017/09/02 Power BI 勉強会 23
2.データの加工(ETL)
ETL とは Extract, Transform, Load の略で、
• Extract: データの抽出
• Transform: 欲しいデータを選択し整形(1.複数のデータを結合、2.表示形式を変更)
• Load: 読み込む
ということです。
Power BI Desktop の ETL 機能は他に比べても非常に優秀です。BI には ETL が必須なのですが、無償有償問わず、ここまで使えるツールはあまりないです。これを選定理由にされている方も多いです。
2017/09/02 Power BI 勉強会 24
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
姓 名 性別 年齢 投稿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"
},]
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 で言うとセルの書式設定。例:日付の表示形式、列データの分割・結合、並び替え等
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 に発行 すると、データが更新された際に、時刻がおかしくなる可能性があります。
大事なのはクエリエディターでデータを取得した際の日時データの形式です。
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)
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 にしたいです。
~デモ2~さぁーて、実際に見てみましょう。
2017/09/02 Power BI 勉強会 31
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 言語】
2.データの加工(ETL)
2017/09/02 Power BI 勉強会 33
■時間帯 の作成日付型(DateTime)の列が既にあることが前提[モデリング]タブ ⇒ [新しい列] をクリック。以下の式を入力時間帯 = HOUR([日付型の列名])
HOUR() 関数で時間帯を作成すると 整数型 になるので、検索条件等で使うことを想定するなら、文字列型バージョンも作成しておいたほうがよい
■時間帯(文字列) の作成[モデリング]タブ ⇒ [新しい列] をクリック。以下の式を入力時間帯(文字列) = HOUR([日付型の列名])
作成後 [モデリング] タブ ⇒ 書式設定の中にあるデータ型を [テキスト] に指定さらに [列で並べ替え] を選択し、元の数値型の列を指定
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~※年が作成したい場合は、上記の HOUR 関数を YEAR 関数に替えてください。
【DAX】
3.Data alerts の設定
2017/09/02 Power BI 勉強会 34
3.Data alerts の設定
2017/09/02 Power BI 勉強会 35
さて、こうやって無事データが取得できて、分析もでき、Power BI service へ発行もできました。
ところで BI というのは ビジネスインテリジェンス の略ですよね。一般的に BI では インサイトを得る と言います。英単語 insight だと「洞察(力)、物事の実態を見抜くこと(力)」という意味です。
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
3.Data alerts の設定
2017/09/02 Power BI 勉強会 37
ただ、どんなに綺麗に可視化できたとしても、1日中ダッシュボードを眺めている人なんていませんよね?
でも見てないとリアルタイムの変化を知る必要がある場合は、気付けないかもしれない。。。
そんなあなたに朗報です。そう、Power BI service には 通知 をしてくれる機能があります。
Data alerts in Power BI service です。
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 です。
3.Data alerts の設定
2017/09/02 Power BI 勉強会 39
3.Data alerts の設定
2017/09/02 Power BI 勉強会 40
嬉しいことに データアラート は Microsoft Flow と連携することができます。
https://flow.microsoft.com/ja-jp/
3.Data alerts の設定
2017/09/02 Power BI 勉強会 41
3.Data alerts の設定
2017/09/02 Power BI 勉強会 42
まとめ
今回は Facebook のデータを使用して、データの取得・整形・
読込から、レポートを作成し、分析までを試してみました。
また、必要な通知、そこからの連携ができることもわかりました。
2017/09/02 Power BI 勉強会 43
Power BI service
Data alerts 通知
分析
Microsoft Flow
Any Servicesトリガー
まとめ
皆さん、いかがでしたか?
「こんなに簡単にできるならやってみよう!」
試したくなりましたか?
はい、今日のゴール達成( ˘ω˘ )!
2017/09/02 Power BI 勉強会 44
ご清聴ありがとうございました!~ご不明な点は何なりと!~
2017/09/02 Power BI 勉強会 45
より詳細にお話聞きたい、実案件でご相談があるという場合は
遠慮なくお申し付けくださいm(_ _)m