実践PowerBI講座7|DAX>CALCULATE関数でKPIカードを作る

KPIカードをレポートに配置したイメージ
目次

本講座7で分かること

この記事は実践PowerBI講座の第七回です。前回講座ではCALENDAR関数を使って階層構造の日付スライサを作り、時系列分析をしやすい環境を整えました。

今回は、Power BIで重要な「メジャー」が初めて登場します。さらに、メジャー作成で頻繁に使われるCALCULATE関数を実践的に使います。

Power BIを学んでいると「CALCULATEは重要」とよく聞きますが、「実際にどんな場面で使うのか分からない」という初心者も少なくありません。

そこで今回は、CO2原単位というKPIをCALCULATEメジャーで計算し、レポート上部にカードで表示します。

KPIをカードで大きく表示すると、レポートを開いたときに現状をすぐ把握できるようになります。さらに、前回作った日付スライサを操作すると、KPIの値も動的に変化します。

「CALCULATEとは何か」を覚えるだけでなく、実際にメジャーを作って動かすところまで体験することが今回の狙いです。

本講座で得られる価値は以下です。

  • メジャーと計算列の違いをざっくり理解できる
  • CALCULATE関数を使って条件付きの集計ができるようになる
  • CALCULATEを使ったKPIメジャーを作成できる
  • KPIをカードに配置し、レポート上で見やすく表示できる
  • スライサ操作によって、メジャーの値を動的に変化させる分析操作を体験できる

DAX関数を覚えたものの「どこで使えばいいのか分からない」という壁は、初心者がつまずきやすいポイントです。今回は実務に近いKPIを題材に、CALCULATEの基本的な使い方を身につけます。

メジャーとは? CALCULATEの前知識

メジャーは、レポート上の条件に応じて計算結果が変化するDAX式です。

計算列がテーブルの各行で計算される固定値なのに対し、メジャーはレポート上で計算される変動値です。例えばスライサなどのフィルタ条件に応じて計算結果が変化することが大きな特徴です。

今回はこのメジャーを使って、選択した期間のCO2原単位を計算します。

CALCULATE=条件付き集計関数

CALCULATEは、集計に条件を付けるためによく使われるDAX関数です。

例えば売上合計に「日本だけ」という条件を加える場合などに使います。

今回は、CO2換算値を合計するときに「電気・ガス・ガソリンだけ」という条件を付けるためにCALCULATEを使います。

CALCULATEは非常に奥が深い関数ですが、今回はまず「集計に条件を付ける」という基本的な使い方を実践してみましょう。

CALCULATEで作るKPI|CO2原単位のおさらい

今回カードに表示するKPIは「CO2原単位」です。

CO2原単位については、実践PowerBI講座【目標】の「実践課題|現状把握レポート」で説明していますが、軽くおさらいしておきます。

CO2原単位は、CO2排出量を事業活動量で割った値です。本講座では事業活動量を従業員の勤務時間合計とします。

CO2原単位 = CO2排出量 ÷ 勤務時間

今回は共用部分のCO2排出量を含めません。共用部分については次回、使用時間による按分計算を使って追加します。

今回学ぶこと|CALCULATEメジャーを習得

今回学ぶことは以下です。

  • RELATEDでCO2排出量を計算する(第三回の復習)
  • CALCULATEで条件付きメジャーを作る
  • VAR・RETURNでDAXを整理する
  • KPIカードを作る
  • メジャー値がスライサで変化することを体験する

やること自体はシンプルですが、「データを準備する→メジャーを作る→ビジュアルに配置する」という流れを理解することが重要です。

今回のアウトプット|CALCULATEメジャーをカードに表示

今回は、第6回で作成したレポートに前述の「部門ごとKPIカード」を追加します。

下図の赤枠部分が今回作成するビジュアルです。

実践講座7の目標、KPIカードをレポートに配置

ゴールを先に理解しておくと、途中の作業でも「何のためにこの設定をしているのか」が分かりやすくなります。

今回のインプット|マスタを追加

今回は、第6回で使用したデータに次のCSVファイルのマスタを追加します。

CO2換算マスタ(電気、ガス、ガソリンなどをCO2排出量に換算する係数)

値種類マスタ(値種類コードと値名のマスタ。例えばコードA01なら値名は電気など)

※データの内容については、実践PowerBI講座【目標】の「実践課題|現状把握レポート」で説明しています。

CALCULATEメジャーの実装プロセス設計

今回の流れは以下です。

  1. データ取込み
  2. リレーション追加
  3. RELATED関数を使った値計算
  4. CALCULATEメジャー作成
  5. レポートへのカードの配置とメジャーの表示
  6. カードの書式設定
  7. KPIカードに対して部門スライサを無効にする

第6回まででレポートの「操作する部分」が整いました。今回はそこに「計算する部分」を追加します。

この流れをテンプレ化すると、今後別のKPIを作るときにも応用できます。

特に重要なのは4.のメジャーの作成手順を整理することです。今回のCO2原単位の計算式は、

  • 分子:CO2排出量
  • 分母:勤務時間
  • 計算:分子÷分母

に分解できます。計算式を分解してから、VAR・RETURNを使って式を作ると、メジャーの内容を理解しやすくなります。

DAX>CALCULATEメジャーの実装ポイント解説

今回作成するメジャーは以下です。

なお、式に使っている[C0002_CO2換算値]はRELATED関数でエネルギー値をCO2排出量に変換したものです。

複雑に見えますが、実際は次の1.~3. の3要素だけで構成されています。

  1. CO2排出量を計算する(分子)
  2. 勤務時間合計を計算する(分母)
  3. CO2原単位を計算する(分子÷分母)

そして各要素をVARで定義して、RETURNで答えを返すことで可読性を高めています。

CO2排出量を計算する(分子)

まず、原単位の分子となるCO2排出量を計算します。

CALCULATE(SUM([CO2排出量]  で合計を計算する、その条件はコンマ(“,”)に続く以下です。

値種類コードA01~A03(電気、ガス、ガソリン)かつ
共用部門を除く([C02_部門]<>”04_共用”)

FILTER関数を使って設定するのがポイントです。今回のように条件が2つ以上ある場合はコンマでFILTER関数を続けます。

最後に閉じ括弧で式を締めて完成です。

勤務時間合計を計算する(分母)

次に、原単位の分母となる勤務時間を計算します。

勤務時間を表す値種類コードはA04です。そこで、A04だけを対象として合計します。

分子との式の違いはFILTER条件だけです。

CO2原単位を計算する

最後に、CO2排出量を勤務時間で割ります。

DIVIDE関数を使って、「CO2排出量 ÷ 勤務時間」を計算しています。そしてRETURNでAnswerを返します。

今回のポイントは「集計したい値に条件を付けるためにCALCULATEを使う」手法を、実際のKPI作成を通して理解することです。

実装|KPIカードを作る

今回は以下のPowerBIバージョンで実装します。

2.156.951.0 64-bit (2026年7月)

データ取込み

ホーム―データを取得-テキスト/CSV の順にクリックします。その後の方法は第2回と同様です。

実践PowerBI講座7 データ取込み

もし第4回同様に「1行目がヘッダにならない(下図はColumn1,Column2がヘッダになっている)」不具合があれば、「データの変換」をクリックして修正して下さい。方法は第四回のFAQを参照して下さい。

実践PowerBI講座7 1行目がヘッダにならない不具合

リレーション追加

今回データ取込したマスタと前回第6回で作成した日付テーブルとの間に以下のようなリレーションシップを形成します。

実践PowerBI講座7、リレーションシップ形成1
実践PowerBI講座7 リレーションシップ形成2
実践PowerBI講座7 リレーションシップ形成3

リレーションシップの作成方法は第3回と同様です。

RELATED関数を使った値計算

各エネルギー値をCO2排出量に換算します。

実績テーブル(D01_Energy_2020)を右クリックして「新しい列」を選択、以下の式を入力します。計算列の作成方法は第3回と同様です。

CALCULATEメジャー作成

メジャー作成です。計算列と違い、メジャーは作成テーブルが何処でも良い、という特徴があります。今回はメジャー専用テーブルに纏めて整理することにします(実績テーブルにメジャーを作成しても問題ありません、完全に好みです)。

「モデリング―新しいテーブル の順に選択して、名前を例えば「T02_Measure」と入力してEnterキーを押せばメジャー専用の空テーブルが出来上がります。

実践PowerBI講座7 メジャー専用テーブル作成

後はテーブルを右クリック、新しいメジャーを選択して、先ほど示したCALCULATE式を入力すればメジャー作成完了です。

レポートへのカードの配置とメジャーの表示

視覚化-カードを選択して、下図のようにメジャー式をドラッグ&ドロップします。

実践PowerBI講座7 KPIカードにメジャーを配置

カードの書式設定

デフォルトのカード状態だと、イメージしたアウトプットと違うことが多々あります。

下図のようにラベル(メジャー名)が不要、レイアウト縦横が逆 などが該当したとします。そこで書式設定を変更することにします。

実践PowerBI講座7 KPIカードの不具合

ラベルを消去します。カードを選択した状態で、ビジュアルの書式設定-ビジュアル―吹き出し を展開して、ラベルのチェックを外します。

実践PowerBI講座7 KPIカードの不具合、不要ラベル消去

レイアウトを変更します。同様に、複数カテゴリのレイアウト―レイアウト を展開して、並び替え は「横」を選択します。

実践PowerBI講座7 KPIカードの不具合修正、レイアウト縦横変更

サイズと位置を変更します。ビジュアルの書式設定-全般-プロパティ を展開して、サイズと位置を下図のように設定しておきます(設定は一例です)。

実践PowerBI講座7 KPIカードの書式設定 高さ、大きさ変更

KPIカードに対して部門スライサを無効にする

今回のニーズとして、KPIカードは部門スライサ選択如何に関わらず常に全部門表示させたいとします。

しかし今の状態だと部門スライサで「営業部」を選択すると(下図の緑枠)、他の部門のKPIが表示されなくなります(下図の赤枠)。

実践PowerBI講座7 KPIカード不具合、部門スライサの相互作用を編集 実施前

これを解決するために「相互作用を編集」機能を使います。

部門スライサを選択して、書式-相互作用を編集 の順にクリックします。

実践PowerBI講座7 相互作用を編集 機能の立上げ

そしてKPIカードの相互作用を「なし」に変えます。

実操作ではKPIカードの相互作用を編集します。

つまり下図赤枠のような、「グラフとフィルタ」マークが有効になっている状態から、「〇と斜線」マークをクリックして有効化します。

実践PowerBI講座7 KPIカードの相互作用を編集

KPIカードの簡易動作テスト

スライサ操作によってKPIカードの値が動的に変化するかテストします。以下の2点をお試し下さい。

  • 日付スライサ選択や拠点スライサ選択によって値が変化する
  • 部門スライサ選択しても表示が変化しない、全部門表示のままである

次回予告|CALCULATEで共用部分を追加

次回は今回作成したCO2原単位に「共用部分」を追加します

共用部分のCO2排出量を各部門に反映するためには、使用時間に応じた按分計算が必要です。

今回よりも少し複雑になりますが、ここでもCALCULATEを活用します。

今回作った基本的なCALCULATEメジャーを土台に、さらに実務的な計算へ進んでいきます。

まとめ

今回は、Power BIのメジャーとCALCULATE関数を使って、CO2原単位のKPIを作成しました。

  • メジャーは、スライサなどの条件に応じて動的に計算できる
  • CALCULATEは、集計に条件を付けるときに活躍する
  • CO2原単位を「CO2排出量÷勤務時間」に分けて計算した
  • 作成したKPIメジャーをカードに配置し、レポート上で確認できるようにした

今回はCALCULATEの基本的な使い方を、実際のKPI作成を通して体験しました。

次回は共用部分の按分計算にも挑戦します。Power BIの実務的なメジャー作成に、ぜひ役立ててください。

FAQ

Q1. CALCULATE関数は何をする関数ですか?

CALCULATEは、条件を追加・変更して計算するための関数です。

例えば「売上の合計」だけではなく、「日本の売上だけ」「営業部の売上だけ」のように条件を付けて集計できます。

今回も、CO2排出量や勤務時間を値種類コードで絞り込んで集計するためにCALCULATEを使いました。

Q2. メジャーと計算列は何が違いますか?

計算列は、テーブルの各行を計算して値を作ります。

一方、メジャーはビジュアルに配置して使い、スライサなどの条件に応じて計算結果が変化します。

今回のように「選択した年月によってKPIの値を変える」といった処理では、メジャーが活躍します。

Q3. なぜCALCULATEとSUMを組み合わせるのですか?

SUMは単純に値を合計する関数です。

CALCULATEを組み合わせることで、「どの条件のデータを合計するのか」を指定できます。

今回であれば、A01~A03だけを対象にしてCO2排出量を合計する、といった使い方です。

Q4. なぜVARとRETURNを使うのですか?

計算を分割して、DAX式を読みやすくするためです。

今回のメジャーでは、「CO2排出量」「勤務時間」「最終結果」に分けています。

複雑なメジャーになるほど、VARを使って途中計算に名前を付ける方法が役立ちます。

Q5. 今回のCO2原単位に共用部分は含まれていますか?

いいえ、今回は含めていません。

共用部分のCO2排出量を部門などに反映するには、使用時間などを使った按分計算が必要になります。

その処理は次回講座で扱います。

Q6. スライサはスライダを使わないのですか?

今回はチェックボックス形式のスライサを使います。

スライダ形式では「2020年1月~3月」のような連続した期間を選ぶことはできますが、「2020年1月・2月・3月」と「2020年7月・9月」のように、飛び飛びの年月を自由に選択する操作には向いていません。

今回のように特定の年月を複数選択したい場合は、チェックボックス形式の方が柔軟です。

前回作成した日付スライサをそのまま利用することで、選択した年月に応じて今回のCALCULATEメジャーも動的に変化します。

以上

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

“ねこまご”は、猫の癒しと“孫の手”の実務サポートを合わせた造語です。
Power BI と IT 業務の“こまごま解決”に特化した、実務者向けブログを運営しています。

社内SEを約10年経験した後、2025年にブログ開設しました。
日々の現場で発生する"細かなIT課題"に向き合ってきた中で、
「専門用語なしで理解したい」
「実務でどう使うかを知りたい」
「時間がない中でも効率よく学びたい」
というニーズを強く感じてきました。

私自身、家事・育児・家族サービス・仕事の合間で学び続けている生活者です。限られた時間の中でスキルを磨いていく大変さや、思うように勉強が進まないもどかしさもよく分かります。

だからこそ、このブログでは、
1) Power BI などのITツールのTips(IT小技シリーズ)
2) 初心者でも挫折しないPower BI講座
3) リアルなブログ運営記録(将来的に配信予定)
を、できるだけシンプルに、すぐ実務で使える形にして発信しています。

難しい専門用語を避け、「すぐ役立つITスキル」を届けることを大切にしています。

ITは一気に習得するより、小さな疑問をひとつずつ解消していくことが近道だと考えます。

その“かゆいところに手が届く”存在として、実務力向上やキャリアアップに悩む読者の力になれるブログを目指しています。

コメント

コメントする

CAPTCHA


目次