この記事の目的
Power BIへのデータを取り込むためのデータフローの作成からレポート・ダッシュボードの作成、他ユーザとの同作業の方法を紹介します
必要なもの
- Power BI ライセンス
- Power BI Desktop
- Power BI Service
- 元になるデータ
Power BI ライセンス
Power BI ライセンスには種類がいくつかありますがほかのユーザと共同作業を行うにはPower BI ProもしくはPower BI Premiumのユーザごとのライセンスが必要になります
Power BI Desktop
様々なデータから抽出・変換・結合を行い、データを視覚化、レポートの設計を行うデスクトップアプリケーションです
Desktopのみの仕様として
- 様々なデータソースを扱うことが可能
- 計算列の追加
などがあります
Microsoft Storeからインストールが可能です
Power BI Service
レポートの共有、データ分析をブラウザで行うためのサービスです
Serviceのみの特徴として
- ダッシュボードの作成、編集
- 他ユーザとの共同作業
などがあります
元になるデータ
今回は以下のようなデータファイル(xlsx)をSharePointのサイトに配置します
手順
以下の手順で行います
- データフロー作成
- PowerQueryでの正規化
- スタースキーマについて
- レポート作成
- ダッシュボード作成
- ほかのユーザとの共同作業
データフロー作成
管理をしやすくするためワークスペースを先に作成します
ワークスペースは関連するレポートやダッシュボードをまとめて管理するための場所です
Power BI Serviceにアクセスします
画面左のメニューよりワークスペースを選んで
表示された「+新しいワークスペース」をクリックします
画面右側に表示された画面でワークスペースの作成を行います
ワークスペースの名前を入力後に詳細タブを開きます
ライセンスモードでは共同作業を行うユーザのライセンスを選択します
今回はPremium per Userを選択します
それ以外の設定についてはデフォルトのままで構いません
設定が終わったら「適用」をクリックします
ワークスペースの作成が完了しました
作成したワークスペースに対してデータフローを作成していきます
画面上部の「+新規」をクリックして
表示されたメニューからデータフローをクリックします
表示された画面の新しいテーブルの追加をクリックします
元になるデータファイルはSharePointに配置しているので
SharePointフォルダーをクリックします
サイトURLにはSharePointサイトのURLを入力します
例:https://hogehoge.sharepoint.com/sites/fugafuga/
認証の種類は組織アカウントを選択し
Power BI ライセンスを所持しているアカウントでログインをします
設定が終わったら画面右下の次へをクリックします
サイトに配置されているファイルの一覧が表示されます
元になるデータファイルが表示されていることを確認して
データの変換をクリックします
元になるデータファイルの[Binary]をクリックします
今回は元になるデータファイルがExcelなのでSheetやTableが複数ある場合には
画像のように表示されます
データが記載されている[Table]をクリックします
電話番号についてはデータファイルでは「0120~」と先頭が0で始まっていますが
読み込んだ結果では数値として扱われてしまい先頭の0が削除されている場合があります
その時は以下画像のように
対象の列タイプを変更することで対応可能です
PowerQueryでの正規化
PowerQueryを使用して読み込んだデータに対する正規化を行い
データを整理します
スタースキーマ
PowerQueryでの正規化とPower BIで
目指すべきデータモデリングの形について簡単に説明します
中心となるファクトテーブルと、その周囲に配置されるディメンションテーブルから構成されます
ファクトテーブル
ビジネスプロセスやイベントなどの事実を表現するためのテーブル
数値データや数量データなどの計量可能なデータが格納されます
ディメンションテーブル
ファクトテーブルのデータを分析するための軸や視点を提供するためのテーブル
ファクトテーブルと関連付けられた属性や特性が格納されます
いわゆるマスタテーブル
上記の図のように元となるデータを正規化していきます
PowerQuery
画面左よりクエリを右クリックし
表示されたメニューから複製をクリックします
コピーしたクエリの名前を変更します
コピーしたクエリをダブルクリックすると名前の変更が可能です
今回は担当者としました
担当者に必要な列は
- 担当者の名前
- 担当者のID
になります
複製したクエリ名を「担当者」に変更します
担当者列で右クリックを行い他の列の削除をクリックします
重複の削除も実施します
列を追加しますリボンに切り替えてインデックス列をクリックします
インデックス列が追加されます
以下の画像のようにインデックス列は列名を担当者IDに変更すると判別がしやすくなります
列名は列名をダブルクリックすることで変更できます
クエリに戻り
画面上部のホームリボンのクエリのマージをクリックします
表示されたポップアップで
クエリ側で担当者を選択します
ドロップダウンから担当者を選択します
表示された表から担当者を選択します
OKボタンをクリックします
列が新たにクエリに対して追加されます
しかし値が表示されているわけではないので
表示する値を選択して意味のある列にします
追加された列の右側のボタンをクリックします
表示されている列の中で担当者IDのみを選択します
「元の列名~」のチェックは外します
OKボタンをクリックします
最後にクエリから担当者列を削除します
これを会社マスタ、商品マスタに対しても同様の手順で行います
会社
列
- 会社ID
- お客様名
- 電話番号
商品
- 商品ID
- 商品
- 単価
商品ID列(インデックス)を追加する前に商品で並び変えを行います
最終的にクエリは以下の画像のようになります
クエリには商品が買われた数量が含まれており計量可能なデータを格納しています
また担当者、会社、商品はそれぞれクエリに紐づく属性情報を管理するテーブルになっています
つまり
- ファクトテーブルはクエリ
- ディメンションテーブルは担当者、会社、商品
クエリに単価が含まれているのは正規化じゃないと思われるかもしれませんが
スタースキーマでは完全に正規化をするわけではなく
あえてファクトテーブルに持たせることで
パフォーマンスの向上やレポート作成の難易度を下げることができます
今回はレポート作成の難易度をさげるためファクトテーブルにも持たせています
詳しくは以下をご確認ください
保存して閉じるをクリックします
データフローの名前を入力して
保存をクリックします
レポート作成
レポートについて
Power BI レポートはデータセットのマルチパースペクティブ表示です。そのデータセットからの結果や分析情報が視覚化によって表されます
データ読み込み
まずはデータを読み込みます
Power BI Desktopを起動します
起動後画面右上のサインインをクリックして
Power BI ライセンスを所持しているアカウントのユーザ名が表示されていることを確認します
表示されていない場合はサインインを行います
画面左端のメニューバーからモデルビューに切り替えます
画面上部のリボンからデータを取得の下矢印をクリックし
表示されたメニューの詳細をクリックします
検索欄に「データフロー」と入力を行い
表示されたものを選択して接続をクリックします
表示された階層フォルダから作成したデータフローのクエリを選択して読み込みをクリックします
図のようにクエリで読み込んだ結果が表示されていない場合には
Power BI Serviceでデータフローを確認してエラーが発生していないか確認します
以下のようなエラーが発生していた場合は
データソースのプライバシーレベルを修正することで読み込まれるようになります
エラーメッセージ
Information is needed in order to combine data. Please specify a privacy level for each data source
エラー対応
Power BI Serviceにアクセスします
ワークスペースのデータフローの設定を開きます
このデータソースのプライバシーレベルの設定を適切なものに修正します
データソースとなるファイルと同じプライバシーレベルを設定します
モデルビューに読み込んだ結果が表示されています
データの読み込みが完了しました
テーブルビューにも読み込んだデータが表示されていることが確認できます
レポート作成準備
続いて
テーブルビューで日付テーブルを作成します
モデルビューに切り替えて
テーブルツールリボンから新しいテーブルをクリックします
以下のような画面が表示されます
数式バーに対してDAX関数を入力します
DAX関数
Data Analysis Expressions (DAX) は、Power BI、Analysis Services、および Excel データ モデルの Power Pivot で数式や式を作成するために組み合わせることができる関数と演算子のライブラリです
そのうちの関数のことをDAX関数と呼びます
Power BI Desktopでは計算列や
メジャーと呼ばれる合計、平均、最小値、最大値、カウントなどのシンプルな集計結果を保持する
列等に使われます
数式バーに以下のようなDAX関数を入力します
テーブル = CALENDAR("2023/10/16","2023/10/31")
すると2023/10/16 0:00:00から2023/10/31 0:00:00までの
日付が自動で表として表示されます
列名を選択して書式を整えます
テーブルツールリボンを選択して日付テーブルとしてマークします
ドロップダウンからDateを選択してOKをクリックします
テーブル名を日付に変更します
モデルビューにも新たに日付テーブルが表示されていることが確認できます
ファクトテーブルであるクエリに対して
数量と単価が含まれているのでこの2つを使用して合計金額を算出し
それを保持する列を追加します
データビューを表示してクエリを選択し新しい列をクリックします
数式バーに対して以下のように入力します
列 = [数量] * [単価]
列を参照する場合には[]
を使用します
なおクエリが単価を保持していない場合は
クエリと商品にリレーションを作成した上で以下のようになります
列 = 'クエリ'[数量] * RELATED('商品'[単価])
知ってしまえばなんてことはありませんが
正規化をあえて完全に行わないことで直観的に計算結果を得ることができます
追加した列の名前を合計金額に変更します
最後にテーブルのリレーションを作成します
モデルビューに切り替えて
日付テーブルのDateをクエリテーブルの日付にドラッグアンドドロップします
以下のように線でつながったことを確認します
他のテーブルに対しても同じことを行います
対象テーブル名 | 対象列名 | クエリの列名 |
---|---|---|
会社 | 会社ID | 会社ID |
担当者 | 担当者ID | 担当者ID |
商品 | 商品ID | 商品ID |
最終的には以下のようになります
レポートの作成
レポートを作成します
レポートビューに切り替えて
視覚化のカードをクリックしてレポートに配置します
表示されたカードに対してデータの合計金額をドラッグアンドドロップで配置します
データソース内の合計金額の合計が表示されます
視覚化のオプションを変更することで平均値や最大値を表示することも可能です
フィールドに表示されている合計金額の合計の下向き三角から変更可能です
試しにカードをもう一つ用意して合計金額の平均値を表示します
続いて
スライサーを配置します
日付テーブルのDateをドラッグアンドドロップでスライサーへ配置します
スライサーはレポート内の日付を操作するときに使用します
表示しているデータに対して(今回はクエリと日付)リレーションがあることが条件としてありますが
スライサー内の日付を変更またはスライサーを動かすことで
表示されているデータもその日付(期間)に合ったデータが表示されます
スライサーは配置しているページのみ有効になります
別ページに配置されているグラフ等に変化は与えません
日ごとの合計金額の推移について詳細に確認したいときは
折れ線グラフを使用します
データの日付からDateとクエリの合計金額をそれぞれドラッグアンドドロップします
これもスライサーを使用してグラフとして表示する範囲を絞りこむことができます
日ごとの合計金額が全期間の合計金額に対してどの程度の割合なのかを確認したいときは
円グラフを使用します
折れ線グラフと同様に
データの日付からDateとクエリの合計金額をそれぞれドラッグアンドドロップします
円グラフもスライサーでグラフは変化しますが
円グラフの日付の部分をクリックすることでフィルタをかけて
その日のデータのみを表示することも可能です
ページが埋まってしまったので新しいページを作成します
画面下のプラスボタンをクリックします
新しいページ2はページ1とは違い担当者ごとのグラフを配置していきます
スライサーを配置して日付のDateをドラッグアンドドロップで配置します
積み上げ横棒グラフを用いて担当者と数量の関係を商品ごとに確認します
以下画像のようにY軸、X軸、凡例にそれぞれのデータをドラッグアンドドロップで配置します
一見するとDさんのほうが合計金額も多いように見えます
合計金額に関するグラフを追加して分析をします
積み上げ縦棒グラフを使用して確認します
以下画像のようにY軸、X軸、凡例にそれぞれのデータをドラッグアンドドロップで配置します
追加したグラフからわずかですがCさんのほうが合計金額は高いことがわかります
ダッシュボード作成
ダッシュボード
Power BIにおけるダッシュボードは、さまざまなレポートに存在するビジュアルや、レポート自体を1つにまとめたキャンバスです。”ピン留め”と呼ばれる操作を行うことで、複数のビジュアルやレポートをダッシュボードに追加することができます。
ダッシュボードを作成するためにレポートをワークスペースに対して発行します
画面上部の発行をクリックします
発行先のワークスペースを選択します
今回は作成したhogehoge_workspaceを選択し選択ボタンをクリックします
画像のような表示がされれば発行成功です
ここからはPower BI Serviceを使用します
hogehoge_workspaceを確認します
作成したレポートが表示されていればOKです
レポートをクリックします
作成したレポートが表示されます
ダッシュボードは
レポートで使用しているグラフ等をタイルとして取り込むことが可能です
しかしレポートと違ってフィルタをかけることはできないので
レポートからダッシュボードに追加する際には場合によってはあらかじめフィルタをかけた状態で
取り込むことが必要です
合計金額の合計値を表示しているカードにマウスカーソルを合わせると
ピンのマークが表示されるのでクリックします
表示された画面の新しいダッシュボードを選択し
ダッシュボード名を入力します
入力内容を確認してピン留めをクリックします
ダッシュボードを確認します
レポートに戻り
フィルタリングした情報をダッシュボードにピン止めします
スライサーを動かして
2023/10/16 ~ 2023/10/22 の7日間のデータに絞り込みます
円グラフに対してマウスオーバーしてピンのマークをクリックします
先ほど作成したダッシュボードにピン止めをします
ダッシュボードを確認します
レポートに戻り
ページ2のスライサーを動かして
2023/10/16 ~ 2023/10/22 の7日間のデータに絞り込みます
縦棒グラフをクリックします
画面右のフィルターから担当者をクリックします
Bさんのみにチェックを入れます
縦棒グラフがBさんのグラフのみになったことが確認できます
フィルタリングされたBさんのみのグラフをダッシュボードに追加します
同じフィルタリングを横棒グラフにも行います
横棒グラフもダッシュボードに追加します
現状のダッシュボードが以下となります
全体の合計金額をカードで表示しながら
グラフは全体の半分の期間の数字であり棒グラフ2種に関してはBさんのデータに限定されたもの
となっています
このようにダッシュボードではレポートで作成した様々な情報から
より重要な情報を絞りこんで1つのページに表示することが可能です
またマウスオーバーすることで数値として表示することも可能です
ダッシュボードに表示されているグラフをクリックすることでもとになった
レポートをグラフへ遷移することも可能です
他のユーザと共有
他のユーザとワークスペースを共有することで
レポートやダッシュボード、データフローの共同編集が可能です
作成したワークスペースを表示しアクセスの管理をクリックします
アクセスの管理が表示されたら
「+ ユーザまたはグループの追加」をクリックします
対象のユーザを検索し権限を選択したら追加をクリックします
ワークスペースの権限については以下を確認してください
またレポートやダッシュボードも個別で共有が可能です
レポート
ダッシュボード