Power BIでデータ項目を追加する4つの方法
データ項目を追加する4つの方法
PowerBIでは、新たなデータ項目を追加するには、4つの方法を選ぶことができます。
その4つの方法とは、
・データソースにデータ項目を追加する
・データを取り込む段階(クエリ)でデータ項目を追加する
・計算列として取り込み済みのモデル(テーブル)にデータ項目を追加する
・メジャーとして、都度計算される項目としてレポート上にデータ項目を追加する
です。
図にしてみると、PowerBIでレポートを作成するまでの、データの流れに沿って、それぞれのタイミングでデータ項目を追加する方法があるイメージです。
同じデータ項目を追加する方法でも、タイミング、データを実際に持つのか・都度計算するのか、メンテナンス性に優れているのかという観点から使われ方が異なります。
ここからは、どんな時にどの方法を使えばよいかを判断するために、それぞれの特徴を簡単に解説していきます。
1.データソースにデータ項目を追加する
データソース(DBやExcel,CSV)側に新たに項目を追加して、その変更されたデータを改めて取り込むという方式です。
こちらはある意味シンプルな方法ですが、PowerBI上での再設定の手間は一番かかる方法といえます。
これはシンプルなデータをそのままPowerBI上に取り込んでいて、取り込み時にはほとんど処理を行っていないような場合や、大量のデータをDB側で事前に計算させておいた方が、パフォーマンス上好ましい場合などに利用されます。
そうでない場合、つまり、データの取り込み時に複雑な計算などを行っているような場合、データ項目が変わることで、クエリの再設定などが必要となるので、頻繁に行うことはオススメできません。
2.データを取り込む際にデータ項目を追加する
こちらは、クエリエディターの [カスタム列の追加] を使用してクエリの一部として作成する方法です。
PowerBIでは、クエリの作成時もしくは変更時に「カスタム列」としてデータを追加できます。
クエリディタを起動して、「列の追加」タブで、[カスタム列]を選ぶと、対象のクエリに含まれる列を計算して、新たなデータ項目を作成できます。
ここでのポイントは、対象のクエリに含まれる列のみが利用できるということです。
つまり他のテーブルの項目を使おうとすると、クエリのマージ(SQL的な表現ではJOIN)した上で、計算するといったステップが必要になるということですね。
このような処理をたくさん追加していくと、データモデルに含まれるデータ量の増大やパフォーマンス低下の要因となりえます。
また、データソースを変更することに比べるとメンテナンス性はやや高いですが、データ分析を行うユーザ部門の担当者が気軽に行える作業・操作とは言えません。
3.計算列として取り込み済みのモデルにデータ項目を追加する
こちらは、PowerBI内に作成済みのモデルにデータ項目を追加する方法です。
イメージとしては、テーブルに新たに項目を追加し、計算した項目を追加するという形となります。
PowerBI上の操作としては、テーブルビュー(もしくはレポートビュー)で、[モデリング]タブのメニュー[新しい列]を選ぶと、新たなフィールドが作成され、計算式を入力することができます。
ここでの計算式は、DAXと呼ばれる言語を使って、数式や関数を駆使して表現する必要があります。
言語というとハードルが高いように感じますが、簡単な四則演算などであれば、Excelとそれほど変わりません。(DAXでは、項目名が左辺に必要です)
この方法では、データソースやクエリを変更することなくデータ項目を新たに作成できるので、メンテナンス性はかなり高く、また、他のテーブルのデータを参照することも可能です。
ただし、他のテーブルの値を参照するには、フィルタ条件などを記述するなど、やや複雑な式を記入していく必要があり、DAXに関する基礎的な知識が求められます。
多くの場合、この計算項目を使ってデータ項目を追加していくことになりますが、データの中身によっては、次に説明するメジャーの作成でなければ正しい数値が計算されない結果を招くことがあるため、注意が必要です。
4.メジャーとして、都度計算される項目としてレポート上にデータ項目を追加する
先ほど説明した計算項目は、計算結果をデータとしてモデル内に保持する形式であるため、相対的な値(平均値、最小値や最大値、比率など)の表示には向いていません。
特にシェアや前年比率などを分析の視点に沿って各層で集計を行うと計算結果が実際の値と異なってしますことがあります。
少々わかりづらいので、具体例で説明していきます。
例えば、商品A,B,Cの3つがあり、以下のような売上実績となっていたとしましょう。(データは売上数量)
データとしては、月別商品別の売り上げの数量、商品Aの全体の販売数に対する売上数量のシェアが保存されています。
ここで、商品Aのシェアを月別データのレベル(粒度)で保持し、商品Aのシェアを3か月のそれぞれの値の平均値で表すとした場合、商品Aのシェアの値は、以下のように表示されてしまいます。
これは、
(33.3 + 33.3 + 41.7) / 3 = 36.1%
という計算となりますので、商品Aのシェアの平均値をそのままとったという意味では誤りではりません。
しかし、実際の商品Aの3か月での売り上げのシェアは、
10 / (10 + 4 + 13) * 100 = 37.0%
と計算されるべき値です。
つまり、シェアなどの比率のデータを、細かいレベルで計算結果の値として保持していた場合には、平均値をとるなどの単純な集計を行うと、正しい値が表示できないということですね。
これはもちろんシェアだけでなく、経営指標などでもよく使われる比率のデータ全般に言えることです。
PowerBIでデータ項目として、商品Aのシェアを計算項目として作成し、テーブルにデータを保持して、レポートで単純に表示すると、上記の計算と同じことが起こります。
ようやくここでメジャーが出てきますが、PowerBIのメジャーは、このようなことが起こらないように、レポートの操作が行われた段階で、常に再計算を行う項目です。
上記の式でいえば、集計されるレベルに応じて
10 / (10 + 4 + 13) * 100 = 37.0%
のような式が繰り返し再計算され、常に正しい値が表示される形となります。
メジャーは比率などの計算のほかに、売上分析などでは必須といえる、前年度の受注金額や前年度売上比率なども簡単に定義できます。
実際の画面をご覧いただきましょう。
前年度の売上金額を項目として追加する場合は、テーブルビュー(もしくはレポートビュー)で、「モデリング」タブのメニュー「新しメジャー」を選び、計算式を入力します。
計算項目である「新しい列」の追加とほぼ同じ手順で紛らわしいので、注意してください。
ここでの式は、
前年度金額 = CALCULATE(SUM('受注明細'[売上金額]),PREVIOUSYEAR('受注'[受注日].[Date]))
となっています。
この式は、受注日が前年同月日の売上を、前年度金額として集計するという意味です。
日付レベルで条件指定されていますが、自動で月別や年別などの階層に沿って集計してくれます。
なお、メジャーはテーブルビューではフィールドとしては追加されますが、項目が追加されたようには見えません。
しかし、レポートビューでは、フィールドを選択して、計算結果をレポート上に表示させることができるようになっていますので、安心してください。
「計算項目」と「メジャー」の違い
ここまででデータ項目を追加する4つの方法をご紹介しましたが、その中で使いどころの判断がわかりづらいのが、「計算項目」と「メジャー」です。
簡単に違いを表にまとめてみました。
出力結果とデータの保持
「計算項目」と「メジャー」との大きな違いの一つが、出力結果がどの単位で作成されるのかという点です。
「計算項目」は、対象のテーブルに行単位で値が出力され、テーブル内に保持されます。
対して、「メジャー」は行単位では値を持たず、テーブルごとに値が出力されますが、値自体は保持されず、階層に沿って自動集計された値がレポート上のみで表示されます。
この違いは実際にPowerBI上で設定してみないとイメージが湧きづらい部分といえるでしょう。
主な用途
「計算項目」と「メジャー」はそれぞれの違いから、使われる用途が異なります。
行単位でデータが保持される「計算項目」は、単純な集計項目(売上、利益など)、分析切り口となる項目(マスタにない商品カテゴリを生成するなど)として利用されます。
テーブル単位、階層単位でデータが出力される「メジャー」は、合計、平均、最小値、最大値、カウント数など、テーブルごと階層ごとに値が一意に決まるものや、都度計算が必要な比率(営業利益率などの経営指標でよく使われる)として利用されます。
より詳しく学びたい方は
いかがでしたでしょうか?
今回は、PowerBIでのデータ項目の4つの方法についてまとめてみましたが、今後も基礎的な知識とあわせて、やや実践的な内容なども、ブログやメルマガでお届けする予定です。
もっと詳しく、体系的にPower BIを学びたいという方は、ぜひ
「Microsoft Power BI 実践ハンズオン 入門編」
の受講を検討してみてください。
入門編では、Power BIの初期設定からダッシュボードの共有までを実際に操作しながら身につけていただけますので、基礎をきっちり学びたい方、これからPower BIの導入を検討されている方にピッタリのセミナーです。