適用対象: Power BI Desktop
Power BI サービス
ビジュアル計算は、セマンティック モデルに追加するのではなく、ビジュアルで直接定義して実行する DAX 計算です。 ビジュアル計算はビジュアルに既に表示されているデータで機能するため、フィルター コンテキストやモデルのリレーションシップを移動することなく、集計の実行、移動平均、期間の超過比較などの一般的なビジネス計算を表現できます。 通常、その結果、保守しやすく、同等のメジャーよりも高いパフォーマンスを発揮する、より短い DAX になります。
この記事では、ビジュアル計算とは何か、ビジュアル マトリックスでの動作、それらを制御するパラメーターの動作、メジャーや計算列との違いについて説明します。これにより、ビジュアル計算が適切な選択であるタイミングを決定できます。
Sales Amount の合計を定義するビジュアル計算の例を次に示します。 必要な DAX は簡単です。
Running sum = RUNNINGSUM([Sales Amount])
計算では、列、メジャー、その他のビジュアル計算など、ビジュアル内の任意のデータを参照できます。 この機能により、セマンティック モデルの複雑さが解消され、DAX の記述プロセスが簡略化されます。 ビジュアル計算を使用して、合計の実行や移動平均などの一般的なビジネス計算を実行できます。
視覚的な計算は、DAX の他の計算オプションとは異なります。
- ビジュアル計算はモデルに格納されません。 代わりに、それらをビジュアル上に保存します。 この制限は、ビジュアル計算がビジュアル上の内容のみを参照できることを意味します。 ビジュアル計算で参照する前に、モデル内の何かをビジュアルに追加する必要があります。 この制限により、ビジュアル計算はフィルター コンテキストとモデルの複雑さに関係がなくなります。
- 視覚化計算は、計算列からのコンテキストの単純さと、メジャーからのオンデマンド計算の柔軟性が組み合わさったものです。
- メジャーと比較すると、ビジュアル計算は詳細レベルではなく集計データに対して動作するため、パフォーマンス上の利点が生じることがよくあります。 新しいメジャーまたはビジュアル計算によって計算を実行できる場合、多くの場合、後者の方がパフォーマンスが向上します。
- ビジュアル計算はビジュアルの一部であるため、ビジュアル構造を参照でき、柔軟性が高まります。
Power BIで計算を追加する方法の詳細な比較については、「Power BI Desktop で計算オプションを使用する」を参照してください。
テーブルとマトリックスのビジュアルでは、カスタム合計エクスペリエンスを通じてビジュアル計算も公開されるため、DAX を記述せずに合計行の表示内容を変更できます。 詳細については、 表 と マトリックス のビジュアルに関する記事を参照してください。
ビジュアル計算を追加または編集する方法については、「ビジュアル計算の 作成」を参照してください。
ビジュアル計算のしくみ
ビジュアル計算は 編集 モードで作成し、選択したビジュアルで開きます。 編集画面には、ビジュアルのプレビュー、DAX 式の数式バー、入力時に結果を表示するビジュアル マトリックスの 3 つの部分があります。
ビジュアルにビジュアル計算を格納するため、ビジュアル (列、メジャー、その他のビジュアル計算) 上の何でも参照できますが、モデル内の他の計算は参照できません。 ほとんどのビジュアル計算では、ビジュアル マトリックスに対して行単位で評価されるため、 SUM などの集計関数は通常不要です。 モデルのリレーションシップ ( USERELATIONSHIP、 RELATED、 RELATEDTABLE) に依存する関数は使用できません。
ビジュアル計算を追加すると、ビジュアルのフィールド リストに表示され、ビジュアル自体にレンダリングされます。
ビジュアル計算で使用できる DAX 関数
既存の DAX 関数の多くは、ビジュアル計算で機能します。 ビジュアル計算はビジュアル マトリックスの範囲内で機能するため、 USERELATIONSHIP、 RELATED、 RELATEDTABLE などのモデルリレーションシップに依存する関数は使用できません。
ビジュアル計算には、ビジュアル計算に固有の一連の関数も導入されています。 これらの関数の多くは、DAX ウィンドウ関数への使いやすいショートカットです。
| 関数 | 説明 | 例 | へのショートカット |
|---|---|---|---|
| COLLAPSE | 計算は、軸の上位レベルで評価されます。 | 親のパーセント = DIVIDE([Sales Amount], COLLAPSE([Sales Amount], ROWS)) | 該当なし |
| COLLAPSEALL | 計算は軸の合計レベルで評価されます。 | 総計の割合 = DIVIDE([Sales Amount], COLLAPSEALL([Sales Amount], ROWS)) | 該当なし |
| EXPAND | 計算は、軸の下位レベルで評価されます。 | 子の平均 = EXPAND(AVERAGE([Sales Amount]), ROWS) | 該当なし |
| EXPANDALL | 計算は軸のリーフレベルで評価されます。 | リーフレベルの平均 = EXPANDALL(AVERAGE([販売金額]), ROWS) | 該当なし |
| FIRST | 軸の最初の行を参照します。 | ProfitVSFirst = [Profit] - FIRST([Profit]) | INDEX(1) |
| ISATLEVEL | 指定した列が現在のレベルに存在するかどうかを報告します。 | IsFiscalYearAtLevel = ISATLEVEL([会計年度]) | 該当なし |
| LAST | 軸の最後の行を参照します。 | ProfitVSLast = [Profit] - LAST([Profit]) | INDEX(-1) |
| LOOKUP | 現在のコンテキストを使用して、ビジュアル マトリックス内の式を評価します。 | LookupSalesFor2025WithContext = LOOKUP(SUM([Sales]), [Year], "2025") | 該当なし |
| LOOKUPWITHTOTALS | ビジュアル マトリックス内の式を合計で評価します。 | LookupSalesFor2025WithTotals = LOOKUPWITHTOTALS(合計([Sales]), [Year], "2025") | 該当なし |
| MOVINGAVERAGE | 軸に移動平均を追加します。 | 移動平均売上 = MOVINGAVERAGE([売上金額], 2) | WINDOW |
| NEXT | 軸の次の行を参照します。 | ProfitVSNext = [Profit] - NEXT([Profit]) | OFFSET(1) |
| PREVIOUS | 軸の前の行を参照します。 | ProfitVSPrevious = [Profit] - PREVIOUS([Profit]) | OFFSET(-1) |
| RANGE | 軸の行のスライスを参照します。 | AverageSales = AVERAGEX(RANGE(1), [売上額]) | WINDOW |
| RUNNINGSUM | 軸に累計を追加します。 | RunningSumSales = RUNNINGSUM([売上金額]) | WINDOW |
計算フローを制御するパラメーター
一部のビジュアル計算関数は、計算がビジュアル マトリックスを走査する方法を制御する省略可能なパラメーターを受け入れます。
- Axis と Reset は視覚的な計算に固有です。 これらは、特定のフィールドではなくビジュアル構造を参照します。
- OrderBy および PartitionBy は、計算列とメジャーでも使用できます。 フィールドを直接参照します。
次のセクションでは、各パラメーターと、相互に使用するタイミングについて説明します。
Axis
多くの関数には省略可能な Axis パラメーターがあり、ビジュアル計算でのみ使用できます。 Axis パラメーターは、ビジュアル計算がビジュアル マトリックスを走査する方法に影響します。 Axis パラメーターは、ビジュアルの最初の軸に既定で設定されます。 多くのビジュアルでは、最初の軸が ROWSされます。つまり、ビジュアル計算はビジュアル マトリックス内で上から下に行ごとに評価されます。 次の表に、Axis パラメータの有効な値を示します。
| Axis アイコン | Axis 名前 | 説明 |
|---|---|---|
|
ROWS | 上から下の行に対して垂直方向に計算します。 |
|
COLUMNS | 左から右に列を横断して計算します。 |
|
ROWS COLUMNS | 上から下の行を縦に計算し、列ごとに左から右に続けます。 |
|
COLUMNS ROWS | 左から右の列を水平方向に計算し、上から下に行ごとに続けます。 |
注
ビジュアルに存在しない軸を指定した場合、計算はその軸を無視します。
Reset
多くの関数には、ビジュアル計算でのみ使用できる省略可能な Reset パラメーターが含まれています。 Reset パラメーターは、関数が値を 0 にリセットするか、ビジュアル マトリックスを走査しながら別のスコープに切り替えるかどうかを制御します。 ターゲット列をパーティション分割することで、この動作を制御します。 パーティション内で計算が行われると、列をパーティションに分割する方法によって、計算がリセットされるかどうかが決まります。
Reset パラメーターの既定値は NONE です。これは、ビジュアル計算が再開されないという意味です。
Reset パラメーターは、さまざまな種類の値を受け入れます。
- 整数
- 列参照
- 特殊 なシノニム: HIGHESTPARENT、 LOWESTPARENT、 NONE
どの場合も、パラメーターはビジュアル計算階層内の 1 つのレベル (ターゲット レベル) を指定します。 ただし、計算によってこのレベルがどのように解釈されるかは異なる場合があります。
Reset動作は、絶対モードと相対モードの 2 つの異なるモードで動作します。
パラメーターまたはパラメーターと同等の NONE、 HIGHESTPARENT、および LOWESTPARENTに整数値を使用する場合は、整数のシグナルによって次の 2 つのモードを選択できます。正の値は絶対モードでリセットを実行し、負の値は相対モードでリセットを実行します (ゼロはリセットされません。既定の動作)。
列参照を指定する場合は、絶対モードでも動作します。 これらの値はターゲット列のパーティション分割を決定し、その結果、リセットされるかどうかが判断されます。 次のセクションでは、これらの 2 つのモードについて説明します。
絶対リセット モード
絶対モードは、ビジュアル計算における Reset パラメーターの動作です。 このモードは、計算がターゲット列とその上のすべての列によってパーティション分割されることを示します。 このルールは、計算のすべてのレベルで適用されます。 ターゲット列 (ターゲット列が存在しない場合は他の列) より上のレベルでは、使用可能な残りの列によって計算パーティションが分割されます。 正の整数値は、先頭から始まるターゲット列を識別します (先頭の列は 1、次の列は 2 など)。 N (階層内の列の数) まで上がり、それ以上の値は切り捨てられます。 または、列を直接指定することもできます。
たとえば、年、四半期、月、日の階層レベルを使用した視覚的な計算を考えてみましょう。 次の表は、 Resetの値に応じて、各レベルでの計算パーティションの方法を示しています。
| レベル/値 | Reset = 1 または「年」 | Reset = 2 または クオーター | Reset = 3 または月 | Reset = 4 または日 |
|---|---|---|---|---|
| 日レベル | 年 | 四半期と年 | 月、四半期、年 | 日、月、四半期、年 |
| 月レベル | 年 | 四半期と年 | 月、四半期、年 | 月、四半期、年 |
| 四半期レベル | 年 | 四半期と年 | 四半期と年 | 四半期と年 |
| 年レベル | 年 | 年 | 年 | 年 |
| 合計レベル | 無し | 無し | 無し | 無し |
相対リセット モード
相対モードは、ビジュアル計算における Reset パラメーターの動作です。 負の整数値 –X を指定すると、各レベルで、階層内のそのレベルより X レベル以上上にあるすべての列で計算がパーティション分割されます(そのようなレベルが存在しない場合は、まったくパーティション分割されません)。 このモードで有効な値は、-1 ~ -N+1 (N は階層内の列の数) の間であり、下位の値はすべてトリミングされます。 ここでも、年、四半期、月、日の階層レベルで視覚的な計算を検討します。 次の表は、次の値に応じて各レベルの計算パーティションがどのように表示されるかを示しています。 Reset
| レベル/値 | Reset = -1 | Reset = -2 | Reset = -3 |
|---|---|---|---|
| 日レベル | 月、四半期、年 | 四半期と年 | 年 |
| 月レベル | 四半期と年 | 年 | 無し |
| 四半期レベル | 年 | 無し | 無し |
| 年レベル | 無し | 無し | 無し |
| 合計レベル | 無し | 無し | 無し |
パラメーターのシノニムをリセットする
Reset パラメーターには、次のシノニムも用意されています。
- 既定値は NONE です。 これは計算をリセットせず、0 に相当します。
- HIGHESTPARENT は、最高レベルで絶対リセットを実行し、1 に相当します。
- LOWESTPARENT は、直接の親による相対リセットを実行し、-1 と等価です。
Reset パラメーターの使用例
年、四半期、月、日の階層レベルで視覚的な計算を検討します。 次のビジュアル計算は同等であり、計算が評価されるレベルに関係なく、毎年再起動される 売上金額 の合計を返します ( 絶対リセット モードを参照)。
RUNNINGSUM([Sales Amount], HIGHESTPARENT)
RUNNINGSUM([Sales Amount], 1)
RUNNINGSUM([Sales Amount], [Year])
これに対し、次の視覚的な計算では、両方とも、直接親ごとに 0 から始まる 売上金額 の合計を返します。これは、計算が評価されるレベルによって異なります ( 相対リセット モードを参照)。
RUNNINGSUM([Sales Amount], LOWESTPARENT)
RUNNINGSUM([Sales Amount], -1)
最後に、このビジュアル計算はリセット されず 、再開せずに、各日の Sales Amount 値を前の値に追加し続けます。
RUNNINGSUM([Sales Amount])
OrderBy および PartitionBy
OrderBy パラメーターはORDERBYを受け取り、PartitionBy パラメーターは PARTITIONBY を受け入れます。 AxisやResetとは異なり、これらのパラメーターは計算列、メジャー、ビジュアル計算で使用でき、フィールドを直接参照します。
すべての関数でこれらのパラメーターが提供されるわけではありません。 ビジュアル計算排他関数では、 PartitionBy パラメーターは提供されません。 ウィンドウ関数は、ビジュアル計算で使用する場合にのみ Reset パラメーターを提供します。 ウィンドウ関数の Relation パラメーターは、ビジュアル計算で使用するかどうかに関係なく使用できますが、ビジュアル計算で使用する場合にのみ Axis を受け入れます。
これらのパラメーターの中から選択する
これらのパラメーターをすべて指定する必要はありません。これらを組み合わせることができます。 使用するパラメーターを決定するには:
- ビジュアル構造に従ったフィールドに依存しない動作が必要な場合は、 Axis と Reset を優先します。 ビジュアル構造を参照する方が、フィールドを明示的に参照するよりも柔軟性が高くなります。
- ビジュアル レイアウトに関係なく、特定のフィールドに計算をピン留めする場合は、 OrderBy と PartitionBy を使用します。
- 軸にレベルが 1 つしかない場合は、PartitionByの代わりにResetを使用します。 Reset では軸上に複数のレベルが必要であるため、1 つのフィールドしかない場合や、軸上の 1 つのレベルに複数のフィールドが存在する場合は機能しません。
パラメータ選択ツール
パラメーター ピッカーを使用すると、ビジュアル計算関数のパラメーターの値を簡単に選択できます。 たとえば、次の図では、合計付きで値を検索 テンプレートが読み込まれているのがわかります:
Ctrl + SPACE キーボード ショートカットを使用して、パラメーター ピッカーをアクティブにすることもできます。
ビジュアル計算テンプレート
ビジュアル計算には、一般的な計算を簡単に作成できるテンプレートが含まれています。 ビジュアル計算編集モードのテンプレート ボタンによって、使用可能なテンプレートのメニューが開きます。
以下のテンプレートが利用可能です:
- 累計。 値の合計を計算し、前の値に現在の値を追加します。 RUNNINGSUM 関数を使います。
- 移動平均。 値の合計をウィンドウのサイズで割って、特定のウィンドウ内の値のセットの平均を計算します。 MOVINGAVERAGE 関数を使います。
- 親の割合。 親に対する値の割合を計算します。 COLLAPSE 関数を使います。
- 総計の割合。 COLLAPSEALL 関数を使って、すべての値に対する 1 つの値の割合を計算します。
- 子供の平均。 子値のセットの平均値を計算します。 EXPAND 関数を使います。
- 前の値と比較します。 PREVIOUS 関数を使って、値を前の値と比較します。
- 次と比較。 NEXT 関数を使って、値を後の値と比較します。
- 最初と比較。 FIRST 関数を使用して、値を最初の値と比較します。
- 最後と比較。 LAST 関数を使用して、値を最後の値と比較します。
- コンテキストを使用して値を検索します。 LOOKUP関数を使用して、現在のコンテキスト内のビジュアル マトリックスで値を検索するか、式を評価します。
- 合計を含む値を検索します。 LOOKUPWITHTOTALS関数を使用して、値を検索するか、合計を含むビジュアル マトリックスで式を評価します。
ビジュアルのフィールドを非表示にする
ビジュアル計算編集モードでは、モデリング ビューの列やテーブルを非表示にするのと同じように、ビジュアルからフィールドを非表示にすることができます。 たとえば、[ 利益 ] ビジュアルの計算のみを表示するには、[ 売上金額] と [ 製品コストの合計] を非表示にします。
フィールドを非表示にしても、ビジュアルまたはビジュアル マトリックスからそれらのフィールドが削除されることはないため、ビジュアル計算では引き続きそれらを参照して作業を続けることができます。 非表示フィールドは引き続きビジュアル マトリックスに表示されますが、結果のビジュアルには表示されません。 非表示フィールドは、ビジュアル計算が機能するために必要な場合にのみ含めます。
ビジュアル計算の書式を設定する
データ型と書式設定オプションを使用するか、 カスタム ビジュアル レベルの書式指定文字列を使用して、ビジュアル計算を書式設定します。 書式設定ウィンドウの [全般] セクションの [データ形式 ] オプションは、書式を制御します。
考慮事項と制限事項
サポートされていないビジュアルの種類
ビジュアルの計算と非表示フィールドは、次のビジュアルでは機能しません。
- スライサー、R ビジュアル、Python ビジュアル
- 主要なインフルエンサー、分解ツリー、Q&A、スマートストーリー
- メトリック、ページ分割されたレポート、Power Apps、Power Automate
- 小さな倍数、散布図の再生軸
- カスタム ビジュアル
サポートされていない機能
次の機能は、視覚的な計算では使用できません。
- 集計のフィルター処理、並べ替え、または 変更
- 自己参照 (計算がそれ自体を参照することはできません)
- ビジュアル間でコピー/貼り付けまたは再利用する
- データ カテゴリ、 データ制限、または データのないアイテムの表示
- 動的書式指定文字列 (書式指定文字列として設定または使用することはできません)
- ビジュアル計算または非表示フィールドのパーソナル化
- 記録 のドリルスルー機能を表示する
- Power BI 埋め込みでの IntelliSense
発行と共有の制限事項
その他の制限사항
- フィールド パラメーター は視覚的な計算で機能しますが、いくつかの制限があります。
- SQL Server Analysis Services へのライブ接続には、バージョン 2025 以降が必要です。
関連コンテンツ
ビジュアル計算の使用方法の詳細については、次のリソースを参照してください。