計算列とメジャーについて
計算列 | メジャー |
---|---|
通常、新しい列は、他の列の関数として作成されます。 | 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 = 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 を使用する」を参照してください