10
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

データモデリングの重要性について

Last updated at Posted at 2025-12-13

この記事はMicrosoft Power BI Advent Calendar 2025 12月14日担当分の記事です。

はじめに

間違ったデータモデリングにしてしまうとレポートの品質・パフォーマンスを大きく左右したり、誤った分析をしてしまう可能性があります。データモデリングが原因で値が正しく計算されない例を紹介したいと思います。

対象のレポート

海外サイト Workout Wednesday の Power BI Challenge「Create Dynamic Annotations」のレポートを確認したところ、データモデリングに問題で予期しない数値が表示されていました。今回はその例を参考にしていきます。

上記URLからSolutionのDownloadボタンをクリックするとPBIXをダウンロードが可能となっています。

レポート

対象のレポートは年月ごとの売上実績と中央値が表示され、中央値に対して年月実績の比較を表示しているレポートになっており、中央値の値があっているように見えますが実際はあっていません。

image.png

中央値の値を確認してみる

レポートの値が正しいかどうかを確認してみます。
レポートの中央値とExcelにて検算した中央値で確認したところ一致しておらず、中央値がずれている要因を調べてみます。

image.png

一致しない理由を調査する

メジャーを確認してみる。

まず最初にメジャーが正しいか確認したところ、MEDIANX関数にて中央値を計算しているのがわかります。
ALL関数にてテーブル全体のフィルタを無視しているのが気にはなるぐらいです。

Median Revenue =
MEDIANX ( ALL ( revenue_monthly ), revenue_monthly[Sum_Revenue] )

データモデリングを確認

モデルビューにてデータモデリングを確認すると日付テーブル(DateDimension)と売上テーブル(revenue_monthly)とのリレーションシップが 1対1の双方向 になっていることが確認できます。

image.png

テーブル内容を確認

両方の列に重複がないはありませんがレコード数が一致していません。

image.png

値が合わない理由

テーブル間で完全に一致する行が存在しない状態で、1対1の双方向にてリレーションシップを構築されているため空白行が発生し、 中央値の計算で空白行を考慮したため 値がずれたのだと考えられます。

image.png

MEDIANX関数の備考に空白を無視しないとの記載があります

image.png

対応方法について

1対1のリレーションシップについて

Microsot Learnにも記載されているように、 一対一のリレーションシップは可能な限り作成しない ように記載されています。

image.png

Power BIのCopilotに対策を聞いてみる

Power BIのCopilotはセマンティックモデルを見て判断してくれるかも試してみます。

Copilotがセマンティックモデルをみて、1対1のリレーションシップが正しくない判断と対応策を回答しています。

image.png

1対多で単一方向に変更

リレーションシップの設定で、カーディナリティを1対多にクロスフィルタの方向を単一に変更します。

image.png

ついでにメジャーも書き換える

ついでにメジャーも書き換えます。
ALL関数でテーブル全体のフィルタを無視していたので、REMOVEFILTERS関数を使ってフィルタを無視する項目のみを選択します。

Median Revenue = 
    CALCULATE (
    MEDIANX ( VALUES ( 'DateDimension'[Month-Year-Sort] ), [Total Revenue] ),
    REMOVEFILTERS ( DateDimension[Month-Year-Sort] )
)

正しい値のレポート

正しい中央値の値が表示されており、年月と中央値との比較も値が正しい値で計算されています。

image.png

まとめ

Webに記載されているメジャー・データモデリングは全て正しいとは限りません。まずは正しいかどうかは確認する必要があります。

データモデリングが正しくないと意図しない値が表示されることもあります。スタースキーマを意識してデータモデリングを行っていくことが重要です。

10
0
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
10
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?