3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DAX の基礎から実践まで: CALCULATE, SUM, COUNT, DIVIDE の完全ガイド

Posted at

はじめに

Microsoft Power BI や Excel の Power Pivot では、DAX (Data Analysis Expressions) を活用することで、データの集計・分析をより高度かつ柔軟に実現できます。
DAX はシンプルな集計関数から、複雑なフィルタ条件を設定しての計算まで、幅広い用途に対応しており、ビジネスインテリジェンスの現場では欠かせない技術です。
本記事では、データ分析で頻繁に利用される SUMCOUNTDIVIDE 関数と、条件付き計算を実現する CALCULATE 関数について、基本的な使い方や実践的な活用シーン、注意点などを詳しく解説します。


DAX の基本概念と役割

DAX は、Power BI や Power Pivot の計算列・メジャー作成の根幹をなす関数群です。
主な役割は以下の通りです。

  • 集計の実行: 数値の合計、平均、最大値など、基本統計の計算に利用
  • フィルタリング: 特定の条件に沿ったデータ抽出や絞り込みが可能
  • 条件付き計算: 複雑な条件の組み合わせでカスタム計算を実現

この柔軟性により、DAX は多種多様な分析シナリオで活躍します。


SUM 関数の基本と応用

基本的な使い方

SUM 関数は、指定した列内の数値をすべて合計するシンプルな関数です。
例えば、売上データの合計を計算する場合は、以下のように記述します。

Total Sales = SUM(Sales[Amount])

この例では、Sales テーブルの Amount 列にある全ての数値を合計し、総売上を算出しています。

応用例

  • フィルタ付き合計: CALCULATE 関数と組み合わせることで、特定の条件下の合計を算出することが可能です。
  • データ検証: シンプルな関数であるため、計算結果の整合性チェックにも有用です。

COUNT 関数と COUNTROWS 関数の使い分け

COUNT 関数

COUNT 関数は、指定した列に存在する値(NULL以外)の個数をカウントします。
例えば、注文数をカウントする場合は次のようになります。

Order Count = COUNT(Orders[OrderID])

この例では、Orders テーブルの OrderID 列に値が入っている行数をカウントしています。

COUNTROWS 関数

一方、テーブル全体の行数をカウントする場合は COUNTROWS 関数を使用します。

Total Rows = COUNTROWS(Orders)

ポイント: 「特定の列の値が存在する行数」と「全行数」を区別して、適切な関数を使い分けることが重要です。


DIVIDE 関数で安全な割り算を実現

基本構文とメリット

DIVIDE 関数は、分母がゼロになるリスクを考慮した安全な割り算を実行するための関数です。
その基本構文は以下の通りです。

DIVIDE(
    分子,
    分母,
    代替値(オプション)
)

通常の割り算 n1 / n2 では、n2 がゼロの場合エラーが発生しますが、DIVIDE 関数を使うことで、分母がゼロの場合にあらかじめ指定した代替値を返すことができます。

利用例: 利益率の計算

例えば、利益率を算出する場合は次のように記述できます。

Profit Margin = 
VAR TotalProfit = SUM(Sales[Profit])
VAR TotalAmount = SUM(Sales[Amount])
RETURN DIVIDE(TotalProfit, TotalAmount, 0)

この例では、Sales[Profit] の合計を Sales[Amount] の合計で割り、もし TotalAmount がゼロの場合は 0 を返します。

注意: ゼロ除算によるエラーを防ぐため、割り算を行う際は常に DIVIDE 関数の利用を検討してください。


CALCULATE 関数の使い方

基本的な使い方

たとえば、特定の地域と年度に絞った売上を算出する場合、以下のように記述します。

Sales in Region A and 2021 = CALCULATE(
    SUM(Sales[Amount]),
    Sales[Region] = "A",
    YEAR(Sales[Date]) = 2021
)

この例では、Sales[Region] が "A" で、かつ Sales[Date] の年が 2021 のデータのみが対象となります。

複数条件の指定方法

AND 条件の場合

CALCULATE に複数のフィルタ条件を渡すと、各条件は AND 条件 として評価されます。
上記の例はその典型です。

OR 条件の実装

意図的に OR 条件を適用したい場合は、論理演算子を使って明示的に条件を組み合わせる必要があります。
以下の例では、A[xxx] が 1 または A[yyy] が 3 または A[zzz] が 6 のいずれかの条件を満たす場合に、データを抽出します。

Filtered Sales = CALCULATE(
    SUM(A[Amount]),
    (A[xxx] = 1) || (A[yyy] = 3) || (A[zzz] = 6)
)

ポイント:

  • カンマ区切りで条件を並べると自動的に AND 条件になるため、OR 条件を実現する場合は必ず括弧と論理演算子を用いてください。
  • 複雑なフィルタ条件を扱う際は、条件の優先順位や括弧の使い方に十分注意しましょう。

まとめ

DAX を活用することで、Power BI や Excel でのデータ分析がより柔軟かつ高度に行えるようになります。
特に、SUMCOUNTDIVIDE といった基本関数と、フィルタ条件を自在に操作できる CALCULATE 関数の理解は、精度の高いレポートやダッシュボード作成の鍵となります。


おわりに

DAX の習熟は継続的な学習と実践が必要ですが、今回の内容が皆様の分析業務における一助となれば幸いです。

Happy coding!

3
1
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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?