計算列とメジャーについて

完了
計算列 メジャー
通常、新しい列は、他の列の関数として作成されます。 DAX 関数を使用して作成された集計値。
常にテーブルに関連付けられます。 テーブルに関連付けられません。
作成時に評価されます。 視覚エフェクトが作成されるときに評価されます。
関連付けられているテーブルの行レベルで計算されます。 行とフィルターのコンテキスト (レポートページの内容) に基づいて集計されます。

計算列とメジャーの相違点。

計算列を使用して、新しいデータを既に Power BI モデルにあるテーブルに追加できます。 いくつかの一般的なユース ケース (条件付き列、列間の算術演算、複数のテーブルに依存する列) について調べます。

ビデオ: 計算列のデモ

条件列を作成する

条件列を使用すると、アナリストは変数の論理シナリオをテストすることができます。特定の条件が true か false かを判断するのに役立ちます。 条件列を考える最も簡単な方法は、IF 関数のような論理関数を使用することです。 この関数は、条件をチェックして、TRUE の場合は 1 つの値を返し、それ以外の場合は 2 つめの値を返します。

条件列の例を次に示します。

Active StoreName = IF( [Status] = "On", [StoreName], "Inactive" )

前のコード スニペットでは、ストアの状態フィールドが "オン" に設定されているかどうかを調べています。そのステートメントが true の場合は、ストアの名前を表示します。 それ以外の場合は、"inactive" という語句を表示します。

ヒント

Tableau との対応: この概念は、Tableau の計算フィールド ウィンドウでお馴染みのはずです。 Tableau では、IF/THEN 構文や IIF 関数を使用して条件付きステートメントを実行できます。 Power BI の IF 関数は、Tableau の IFF 関数に最も似ています。

列間で算術演算を実行する

計算列で算術演算を実行することは、Tableau のアナリストにとっても馴染みがあるはずですが、一部の関数では構文が異なります。

次のコードは、使い慣れた構文を使用した計算列の例です。

DiscountedPrice = [FullPrice] - [Discount]

前のコードで、"DiscountedPrice" は品目の割引価格を返す計算列です。 そのために、品目の正価から適用された割引額が差し引かれています。

一方で、次のコードは構文が異なる計算列の例です。

ProfitRatio = DIVIDE( [Profit], [Sales] )

ヒント

Tableau との対応: Tableau の計算フィールドでは、除算は "/" 文字を使用して行われます: ProfitRatio = [Profit] / [Sales]

複数のテーブルに依存する計算列を作成する

Power Query は、アナリストがデータ ソースの検出、接続、結合、調整を行うことができるデータ接続テクノロジです。 そうであれば、Power Query を使用して複数のテーブルに依存する列を作成することは理にかなっています。 残念ながら、Power Query でそれを行うことはできません。

Power BI でのこのギャップを埋めるには、DAX を使用し、Power BI Desktop で設定したリレーションシップを使用して計算を作成します。

売却済商品の原価の例

たとえば、製品の卸売価格と販売単位数を使用して売却済商品の原価 (COGS) を計算する必要があるとします。 製品の卸売価格は製品ディメンション テーブルにあり、販売単位数は販売ファクト テーブルにあります。 この例でのすべての要素のデータ プレビューを次に示します。

COGS の例のデータ プレビュー。

次のコード スニペットは、複数のテーブルに依存する計算列の例です。

COGS = Sales[Quantity] * RELATED( Product[Wholesale Price] )

ヒント

Tableau との対応: 次に示す Tableau のコード スニペットは、データが [Product] テーブルの [ProductID] ディメンションで結合されている場合にのみ機能します: COGS = [Quantity] * [Product].[Wholesales Price]

ヒント

Tableau との対応: Tableau Desktop でデータが非正規化されている場合、コードは次のようになります: COGS = { FIXED [ProductID]: SUM([Quantity] * [Wholesale Price]) }

RELATED 関数を使用すると、ユーザーは、既存のリレーションシップに基づいて、計算列またはメジャーで他のテーブルの値を使用できます。

これらの手順については、次のビデオをご覧ください。

ビデオ: 計算列の作成

使用する可能性のあるもう 1 つのリレーションシップ関数である USERELATIONSHIP では、計算の間だけ他のリレーションシップがオーバーライドされます。 つまり、計算の間は (パラメーターまたは 2 つの列名に基づいて) 指定されたリレーションシップが有効になります。

メジャーの概要

メジャーは、計算列と比較すると若干異なります。 メジャーは、すべての行で計算されるわけではありません。集計に基づいて計算されます。

ビデオ: メジャーを作成するデモ

メジャー 定義
= SUM( Sales[Quantity] ) Sales テーブルの Quantity 列を合計します。
= SUMX( Sales, (Related( Product[Wholesales Price] ) * Sales[Quantity] ) ) Product テーブルで卸売価格を参照し、Sales テーブルの Quantity で乗算します (各行を反復処理してから、合計します)。 参照されるテーブルにリレーションシップがあることを前提としています。
= [Total Sales] -- [COGS] Total Sales メジャーから COGS メジャーを減算します (両方とも計算列ではなくメジャーである必要があります)。
= DIVIDE( [Gross Profit], [Total Sales] ) Gross Profit メジャーを Total Sales メジャーで除算します。
= SWITCH( DATE[Month], 1, "January", 2, "February", 3, "Unknown month number" ) 多くの条件を持つ IF/THEN ステートメントを作成する簡単な方法です。

共通の関数を使用した単純なメジャーの例とその定義。

計算列の詳細については、「Power BI Desktop での計算列の作成」を参照してください

DAX の詳細については、「Power BI Desktop で DAX を使用する」を参照してください