4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

株式会社ネオシステムAdvent Calendar 2023

Day 15

Power BI データフローを使用したレポート・ダッシュボード作成

Last updated at Posted at 2023-11-13

この記事の目的

Power BIへのデータを取り込むためのデータフローの作成からレポート・ダッシュボードの作成、他ユーザとの同作業の方法を紹介します

必要なもの

  • Power BI ライセンス
  • Power BI Desktop
  • Power BI Service
  • 元になるデータ

Power BI ライセンス

Power BI ライセンスには種類がいくつかありますがほかのユーザと共同作業を行うにはPower BI ProもしくはPower BI Premiumのユーザごとのライセンスが必要になります

license.png

Power BI Desktop

様々なデータから抽出・変換・結合を行い、データを視覚化、レポートの設計を行うデスクトップアプリケーションです

Desktopのみの仕様として

  • 様々なデータソースを扱うことが可能
  • 計算列の追加

などがあります

powerbidesktop.png

Microsoft Storeからインストールが可能です

microsoftstore.png

Power BI Service

レポートの共有、データ分析をブラウザで行うためのサービスです

Serviceのみの特徴として

  • ダッシュボードの作成、編集
  • 他ユーザとの共同作業

などがあります

powerbiservice.png

元になるデータ

今回は以下のようなデータファイル(xlsx)をSharePointのサイトに配置します

dataorigin.png

手順

以下の手順で行います

  • データフロー作成
  • PowerQueryでの正規化
    • スタースキーマについて
  • レポート作成
  • ダッシュボード作成
  • ほかのユーザとの共同作業

データフロー作成

管理をしやすくするためワークスペースを先に作成します
ワークスペースは関連するレポートやダッシュボードをまとめて管理するための場所です

Power BI Serviceにアクセスします

画面左のメニューよりワークスペースを選んで
表示された「+新しいワークスペース」をクリックします

Serviceworkspace.png

画面右側に表示された画面でワークスペースの作成を行います

ワークスペースの名前を入力後に詳細タブを開きます
ライセンスモードでは共同作業を行うユーザのライセンスを選択します
今回はPremium per Userを選択します

Serviceworkspace2.png

それ以外の設定についてはデフォルトのままで構いません
設定が終わったら「適用」をクリックします

Serviceworkspace3.png

ワークスペースの作成が完了しました

Serviceworkspace4.png

作成したワークスペースに対してデータフローを作成していきます

画面上部の「+新規」をクリックして
表示されたメニューからデータフローをクリックします

dataflow1.png

表示された画面の新しいテーブルの追加をクリックします

dataflow2.png

元になるデータファイルはSharePointに配置しているので
SharePointフォルダーをクリックします

dataflow3.png

サイトURLにはSharePointサイトのURLを入力します

例:https://hogehoge.sharepoint.com/sites/fugafuga/

認証の種類は組織アカウントを選択し
Power BI ライセンスを所持しているアカウントでログインをします

dataflow4.png

設定が終わったら画面右下の次へをクリックします

サイトに配置されているファイルの一覧が表示されます
元になるデータファイルが表示されていることを確認して
データの変換をクリックします

dataflow5.png

元になるデータファイルの[Binary]をクリックします

dataflow6.png

今回は元になるデータファイルがExcelなのでSheetやTableが複数ある場合には
画像のように表示されます
データが記載されている[Table]をクリックします

dataflow7.png

電話番号についてはデータファイルでは「0120~」と先頭が0で始まっていますが
読み込んだ結果では数値として扱われてしまい先頭の0が削除されている場合があります

その時は以下画像のように
対象の列タイプを変更することで対応可能です

dataflow7-1.png

PowerQueryでの正規化

PowerQueryを使用して読み込んだデータに対する正規化を行い
データを整理します

スタースキーマ

PowerQueryでの正規化とPower BIで
目指すべきデータモデリングの形について簡単に説明します

中心となるファクトテーブルと、その周囲に配置されるディメンションテーブルから構成されます

ファクトテーブル

ビジネスプロセスやイベントなどの事実を表現するためのテーブル
数値データや数量データなどの計量可能なデータが格納されます

ディメンションテーブル

ファクトテーブルのデータを分析するための軸や視点を提供するためのテーブル
ファクトテーブルと関連付けられた属性や特性が格納されます
いわゆるマスタテーブル

starschema.png

上記の図のように元となるデータを正規化していきます

PowerQuery

画面左よりクエリを右クリックし
表示されたメニューから複製をクリックします

powerquery5.png
まずはクエリの複製を行います

コピーしたクエリの名前を変更します
コピーしたクエリをダブルクリックすると名前の変更が可能です
今回は担当者としました

担当者に必要な列は

  • 担当者の名前
  • 担当者のID

になります

複製したクエリ名を「担当者」に変更します
担当者列で右クリックを行い他の列の削除をクリックします

powerquery9.png

重複の削除も実施します

powerquery9-1.png

image.png

列を追加しますリボンに切り替えてインデックス列をクリックします

powerquery10-1.png

インデックス列が追加されます
以下の画像のようにインデックス列は列名を担当者IDに変更すると判別がしやすくなります
列名は列名をダブルクリックすることで変更できます

image.png

クエリに戻り
画面上部のホームリボンのクエリのマージをクリックします

powerquery12.png

表示されたポップアップで
クエリ側で担当者を選択します

ドロップダウンから担当者を選択します
表示された表から担当者を選択します

OKボタンをクリックします

powerquery13.png

列が新たにクエリに対して追加されます
しかし値が表示されているわけではないので
表示する値を選択して意味のある列にします

追加された列の右側のボタンをクリックします
表示されている列の中で担当者IDのみを選択します

「元の列名~」のチェックは外します
OKボタンをクリックします

powerquery14.png

最後にクエリから担当者列を削除します

image.png

これを会社マスタ、商品マスタに対しても同様の手順で行います

会社

  • 会社ID
  • お客様名
  • 電話番号

powerquery17.png

商品
  • 商品ID
  • 商品
  • 単価

商品ID列(インデックス)を追加する前に商品で並び変えを行います

powerquery18.png

最終的にクエリは以下の画像のようになります

image.png
image.png

クエリには商品が買われた数量が含まれており計量可能なデータを格納しています

また担当者、会社、商品はそれぞれクエリに紐づく属性情報を管理するテーブルになっています

つまり

  • ファクトテーブルはクエリ
  • ディメンションテーブルは担当者会社商品

クエリに単価が含まれているのは正規化じゃないと思われるかもしれませんが
スタースキーマでは完全に正規化をするわけではなく
あえてファクトテーブルに持たせることで
パフォーマンスの向上やレポート作成の難易度を下げることができます

今回はレポート作成の難易度をさげるためファクトテーブルにも持たせています

詳しくは以下をご確認ください

保存して閉じるをクリックします

dataflow8.png

データフローの名前を入力して
保存をクリックします

dataflow9.png

レポート作成

レポートについて

Power BI レポートはデータセットのマルチパースペクティブ表示です。そのデータセットからの結果や分析情報が視覚化によって表されます

データ読み込み

まずはデータを読み込みます
Power BI Desktopを起動します

起動後画面右上のサインインをクリックして
Power BI ライセンスを所持しているアカウントのユーザ名が表示されていることを確認します
表示されていない場合はサインインを行います

dataflow9-1.png

画面左端のメニューバーからモデルビューに切り替えます
画面上部のリボンからデータを取得の下矢印をクリックし
表示されたメニューの詳細をクリックします

powerbidesktop1.png

検索欄に「データフロー」と入力を行い
表示されたものを選択して接続をクリックします

dataflow10.png

表示された階層フォルダから作成したデータフローのクエリを選択して読み込みをクリックします

powerquery.png

図のようにクエリで読み込んだ結果が表示されていない場合には
Power BI Serviceでデータフローを確認してエラーが発生していないか確認します

以下のようなエラーが発生していた場合は
データソースのプライバシーレベルを修正することで読み込まれるようになります

エラーメッセージ

Information is needed in order to combine data. Please specify a privacy level for each data source

エラー対応

Power BI Serviceにアクセスします
ワークスペースのデータフローの設定を開きます
error1.png

資格情報を編集をクリックします
error2.png

このデータソースのプライバシーレベルの設定を適切なものに修正します
データソースとなるファイルと同じプライバシーレベルを設定します

error3.png

モデルビューに読み込んだ結果が表示されています
データの読み込みが完了しました

image.png

テーブルビューにも読み込んだデータが表示されていることが確認できます

image.png

レポート作成準備

続いて
テーブルビューで日付テーブルを作成します

モデルビューに切り替えて
テーブルツールリボンから新しいテーブルをクリックします

report1.png

以下のような画面が表示されます

image.png

数式バーに対して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までの
日付が自動で表として表示されます

image.png

列名を選択して書式を整えます

report2.png

image.png

テーブルツールリボンを選択して日付テーブルとしてマークします

report3.png

ドロップダウンからDateを選択してOKをクリックします

report4.png

テーブル名を日付に変更します

report5.png

モデルビューにも新たに日付テーブルが表示されていることが確認できます

image.png

ファクトテーブルであるクエリに対して
数量と単価が含まれているのでこの2つを使用して合計金額を算出し
それを保持する列を追加します

データビューを表示してクエリを選択し新しい列をクリックします

culcu.png

数式バーに対して以下のように入力します

列 = [数量] * [単価]

列を参照する場合には[]を使用します
なおクエリが単価を保持していない場合は
クエリと商品にリレーションを作成した上で以下のようになります

列 = 'クエリ'[数量] * RELATED('商品'[単価])

知ってしまえばなんてことはありませんが
正規化をあえて完全に行わないことで直観的に計算結果を得ることができます

追加した列の名前を合計金額に変更します

culcu2.png

最後にテーブルのリレーションを作成します
モデルビューに切り替えて
日付テーブルのDateをクエリテーブルの日付にドラッグアンドドロップします

relation1.png

以下のように線でつながったことを確認します

image.png

他のテーブルに対しても同じことを行います

対象テーブル名 対象列名 クエリの列名
会社 会社ID 会社ID
担当者 担当者ID 担当者ID
商品 商品ID 商品ID

最終的には以下のようになります

image.png

レポートの作成

レポートを作成します

レポートビューに切り替えて
視覚化のカードをクリックしてレポートに配置します

report6.png

表示されたカードに対してデータの合計金額をドラッグアンドドロップで配置します

report7.png

データソース内の合計金額の合計が表示されます

image.png

視覚化のオプションを変更することで平均値や最大値を表示することも可能です
フィールドに表示されている合計金額の合計の下向き三角から変更可能です

report8.png

試しにカードをもう一つ用意して合計金額の平均値を表示します

image.png

続いて
スライサーを配置します

report9.png

日付テーブルのDateをドラッグアンドドロップでスライサーへ配置します

report10.png

image.png

スライサーはレポート内の日付を操作するときに使用します
表示しているデータに対して(今回はクエリと日付)リレーションがあることが条件としてありますが
スライサー内の日付を変更またはスライサーを動かすことで
表示されているデータもその日付(期間)に合ったデータが表示されます

image.png

スライサーは配置しているページのみ有効になります
別ページに配置されているグラフ等に変化は与えません

日ごとの合計金額の推移について詳細に確認したいときは
折れ線グラフを使用します

report11.png

データの日付からDateとクエリの合計金額をそれぞれドラッグアンドドロップします

image.png

これもスライサーを使用してグラフとして表示する範囲を絞りこむことができます

image.png

日ごとの合計金額が全期間の合計金額に対してどの程度の割合なのかを確認したいときは
円グラフを使用します

report12.png

折れ線グラフと同様に
データの日付からDateとクエリの合計金額をそれぞれドラッグアンドドロップします

image.png

円グラフもスライサーでグラフは変化しますが
円グラフの日付の部分をクリックすることでフィルタをかけて
その日のデータのみを表示することも可能です

report13.png

ページが埋まってしまったので新しいページを作成します

画面下のプラスボタンをクリックします

report14.png

新しいページ2はページ1とは違い担当者ごとのグラフを配置していきます

スライサーを配置して日付のDateをドラッグアンドドロップで配置します

積み上げ横棒グラフを用いて担当者と数量の関係を商品ごとに確認します
以下画像のようにY軸、X軸、凡例にそれぞれのデータをドラッグアンドドロップで配置します

report15.png

一見するとDさんのほうが合計金額も多いように見えます
合計金額に関するグラフを追加して分析をします

積み上げ縦棒グラフを使用して確認します
以下画像のようにY軸、X軸、凡例にそれぞれのデータをドラッグアンドドロップで配置します

report16.png

追加したグラフからわずかですがCさんのほうが合計金額は高いことがわかります

ダッシュボード作成

ダッシュボード

Power BIにおけるダッシュボードは、さまざまなレポートに存在するビジュアルや、レポート自体を1つにまとめたキャンバスです。”ピン留め”と呼ばれる操作を行うことで、複数のビジュアルやレポートをダッシュボードに追加することができます。

ダッシュボードを作成するためにレポートをワークスペースに対して発行します

画面上部の発行をクリックします

dash1.png

発行先のワークスペースを選択します
今回は作成したhogehoge_workspaceを選択し選択ボタンをクリックします

dash2.png

画像のような表示がされれば発行成功です

image.png

ここからはPower BI Serviceを使用します

hogehoge_workspaceを確認します
作成したレポートが表示されていればOKです

image.png

レポートをクリックします

image.png

作成したレポートが表示されます

ダッシュボードは
レポートで使用しているグラフ等をタイルとして取り込むことが可能です
しかしレポートと違ってフィルタをかけることはできないので
レポートからダッシュボードに追加する際には場合によってはあらかじめフィルタをかけた状態で
取り込むことが必要です

合計金額の合計値を表示しているカードにマウスカーソルを合わせると
ピンのマークが表示されるのでクリックします

dash3.png

表示された画面の新しいダッシュボードを選択し
ダッシュボード名を入力します
入力内容を確認してピン留めをクリックします

dash4.png

ダッシュボードを確認します

image.png

レポートに戻り
フィルタリングした情報をダッシュボードにピン止めします

スライサーを動かして
2023/10/16 ~ 2023/10/22 の7日間のデータに絞り込みます

image.png

円グラフに対してマウスオーバーしてピンのマークをクリックします

dash5.png

先ほど作成したダッシュボードにピン止めをします

image.png

ダッシュボードを確認します

image.png

レポートに戻り
ページ2のスライサーを動かして
2023/10/16 ~ 2023/10/22 の7日間のデータに絞り込みます
縦棒グラフをクリックします

image.png

画面右のフィルターから担当者をクリックします
Bさんのみにチェックを入れます

image.png

縦棒グラフがBさんのグラフのみになったことが確認できます

image.png

フィルタリングされたBさんのみのグラフをダッシュボードに追加します

同じフィルタリングを横棒グラフにも行います

image.png

image.png

横棒グラフもダッシュボードに追加します

現状のダッシュボードが以下となります

image.png

全体の合計金額をカードで表示しながら
グラフは全体の半分の期間の数字であり棒グラフ2種に関してはBさんのデータに限定されたもの
となっています

このようにダッシュボードではレポートで作成した様々な情報から
より重要な情報を絞りこんで1つのページに表示することが可能です

またマウスオーバーすることで数値として表示することも可能です

image.png

ダッシュボードに表示されているグラフをクリックすることでもとになった
レポートをグラフへ遷移することも可能です

他のユーザと共有

他のユーザとワークスペースを共有することで
レポートやダッシュボード、データフローの共同編集が可能です

作成したワークスペースを表示しアクセスの管理をクリックします

kyouyuu.png

アクセスの管理が表示されたら
「+ ユーザまたはグループの追加」をクリックします

kyouyuu2.png

対象のユーザを検索し権限を選択したら追加をクリックします

kyouyuu3.png

ワークスペースの権限については以下を確認してください

またレポートやダッシュボードも個別で共有が可能です

レポート

image.png

ダッシュボード

image.png

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?