BLANK を値に変換しない
データ モデラーとして、メジャー式を記述するときに、意味のある値を返すことができない場合があります。 このような場合、代わりにゼロのような値を返したいと考えるかもしれません。 この設計が効率的かつ実用的であるかどうかを慎重に判断することをお勧めします。
BLANK の結果を明示的にゼロに変換する次のメジャー定義を検討します。
Sales (No Blank) =
IF(
ISBLANK([Sales]),
0,
[Sales]
)
また、BLANK の結果をゼロに変換する別のメジャー定義を検討します。
Profit Margin =
DIVIDE([Profit], [Sales], 0)
DIVIDE 関数は、Profit メジャーを Sales メジャーで除算します。 結果がゼロまたは BLANK である場合、第 3 引数の代替結果 (オプション) が返されます。 この例では、ゼロが代替結果として渡されるため、メジャーは常に値を返すことが保証されます。
これらのメジャー設計は非効率的で、レポート設計品質が低下します。
レポート ビジュアルに追加されると、Power BI は、フィルター コンテキスト内のすべてのグループを取得しようとします。 多くの場合、大規模なクエリの結果を評価したり取得したりすると、レポートの表示が遅くなります。 各例では、疎な計算を効率的な密な計算に変換し、Power BI が必要以上にメモリを使用するようにします。
また、グループ化が多すぎると、レポート ユーザーを閉口させることも多くなります。
Profit Margin メジャーをテーブル ビジュアルに追加して、顧客別にグループ化するとどうなるかを見てみましょう。
このテーブル ビジュアルには、膨大な数の行が表示されます (実際にはモデルに 18,484 名の顧客が存在し、テーブルはそのすべてを表示しようとします)。ビュー内の顧客が売上を達成していないことに注目してください。 それにもかかわらず、Profit Margin メジャーから常に値が返るため、表示されています。
注意
ビジュアルに表示するデータ ポイントが多すぎる場合、Power BI ではデータ削減戦略を使用して大きなクエリ結果を削除または集計することがあります。 詳細については、ビジュアルの種類別のデータ ポイントの制限と戦略に関する記事をご覧ください。
Profit Margin メジャーの定義が改善されるとどうなるかを見てみましょう。 Sales メジャーが BLANK (またはゼロ) でない場合にのみ、値が返されるようになりました。
Profit Margin =
DIVIDE([Profit], [Sales])
テーブル ビジュアルには、現在のフィルター コンテキスト内で販売を行った顧客のみが表示されるようになりました。 メジャーが改善された結果、レポート ユーザーにとってより効率的で実用的なエクスペリエンスが得られます。
ヒント
必要に応じて、[データのない項目を表示する] オプションを有効にすることで、フィルター コンテキスト内の (値または BLANK を返す) すべてのグループを表示するようにビジュアルを構成できます。
推奨事項
意味のある値を返すことができない場合は、メジャーから BLANK が返されるようにすることをお勧めします。
この設計方法は、Power BI でレポートをより速く表示でき、効果的です。 また、集計が BLANK の場合、既定ではレポートのビジュアルでグループ化が削除されるため、BLANK を返す方が望ましいのです。
関連するコンテンツ
- ラーニング パス:Power BI Desktop で DAX を使用する
- わからないことがある場合は、 Power BI コミュニティで質問してみてください。
- Power BI チームへのご提案は、 Power BI を改善するためのアイデアをお寄せください