データ モデリングツールとして、評価時エラーが発生する可能性がある DAX 式を記述する場合は、2 つの便利な DAX 関数の使用を検討できます。
- ISERROR関数。1 つの式を受け取り、その式でエラーが発生した場合にTRUEを返します。
- IFERROR関数。2 つの式を受け取ります。 最初の式でエラーが発生した場合は、2 番目の式の値が返されます。 これは実際には、ISERROR 関数を IF 関数内で入れ子にしたものをより最適化して実装したものになります。
ただし、これらの関数は役に立ち、わかりやすい式の記述に役立ちますが、計算のパフォーマンスが大幅に低下する可能性もあります。 これらの関数により、必要なストレージ エンジン スキャンの数が増えることが理由として考えられます。
ほとんどの評価時間エラーは、予期しない BLANK またはゼロ値、または無効なデータ型変換が原因です。
推奨事項
ISERROR関数とIFERROR関数は使用しないことをお勧めします。 代わりに、モデルを開発し、式を記述するときに防御戦略を適用します。 戦略には次のものが含まれます。
品質データがモデルに読み込まれるかどうかを確認します。 Power Query 変換を使用して、無効な値または欠損値を削除または置換し、正しいデータ型を設定します。 Power Query 変換を使用して、無効なデータ変換などのエラーが発生した場合に行をフィルター処理することもできます。
モデル列 Is Nullable プロパティを Off に設定することで、データ品質を制御することもできます。これは、BLANK が検出された場合にデータの更新が失敗します。 このエラーが発生した場合、更新が成功した結果として読み込まれたデータはテーブルに残ります。
IF関数の使用:IF関数の論理テスト式は、エラー結果が発生するかどうかを判断できます。 ISERROR関数やIFERROR関数と同様に、この関数によって追加のストレージ エンジン スキャンが発生する可能性がありますが、エラーを発生させる必要がないため、パフォーマンスが高くなる可能性があります。
エラー トレラント関数の使用: 一部の DAX 関数は、エラー状態をテストして補正します。 これらの関数を使用すると、代わりに返される代替結果を入力できます。 DIVIDE関数はそのような例の 1 つです。 この関数に関する追加のガイダンスについては、 DAX: DIVIDE 関数と除算演算子 (/) に関する記事を参照してください。
例
次のメジャー式では、エラーが発生するかどうかがテストされます。 このインスタンスの BLANK が返されます (これは、 IF 関数に value-if-false 式を指定しない場合です)。
Profit Margin
= IF(ISERROR([Profit] / [Sales]))
次のバージョンのメジャー式は、IF関数とISERROR関数の代わりにIFERROR関数を使用することで改善されました。
Profit Margin
= IFERROR([Profit] / [Sales], BLANK())
ただし、このメジャー式の最終バージョンでも結果は同じになりますが、より効率的で、より洗練された方法になります。
Profit Margin
= DIVIDE([Profit], [Sales])
関連コンテンツ
- ラーニング パス: Power BI Desktop で DAX を使用する
- 質問がありますか? Power BI コミュニティで質問してみてください。
- ご提案はありますか? Power BI を改善するためのアイデアをお寄せください