Excel-dax-formula-errors
Excel DAX-数式エラー
間違った構文で* DAX数式*を作成すると、エラーが発生する可能性があります。 計算フィールドと計算列には、特定の種類の引数を必要とするDAX関数を含めることができます。 DAX関数の引数には、テーブル、列、または他のDAX関数(ネストされたDAX関数)を使用できます。 DAX関数はテーブルと列を返すことができるため、正しいタイプの引数がDAX関数に渡されることを確認するように注意する必要があります。
DAX式エラーは、構文エラーまたはセマンティックエラーのいずれかです。 エラーは、設計時または実行時に発生する可能性があります。
この章では、一般的なDAXエラー、その原因、およびそれらのエラーの修正方法について学習します。
DAXエラー:計算は中止されました
DAXタイムインテリジェンス関数で計算フィールドを作成(設計時)または使用(実行時)しようとすると、次のエラーが発生する可能性があります。 いずれの場合も、不連続な日付範囲がタイムインテリジェンス機能に渡されています。
「DAXエラー:計算は中止されました:MdxScript(インスタンス)(00、0)関数「DATEADD」は、連続した日付選択でのみ機能します。」
実行時の原因
このエラーは、DAXタイムインテリジェンス関数を使用した計算フィールドがピボットテーブルのVALUES領域に配置され、年や月を選択する前にスライサーまたはフィルターとして日付フィールドが選択されている場合に表示されます。 たとえば、2014年、2015年、2016年の3年のデータがあり、Yearフィールドを選択せずに月のみを使用しようとすると、値は連続したデータ値ではなく、エラーが発生します。
実行時のエラーを修正する方法は?
上記の例では、
- 最初にYearをスライサーまたはフィルターとして追加し、年を選択します。
- 次に、月または四半期をスライサーまたはフィルターとして追加します。
- 次に、選択した年のスライスまたはフィルターを適用する1つ以上の月または四半期を選択します。
設計時の原因
DAXタイムインテリジェンス関数では、date引数に指定された日付列が必要です。 日付列には、連続した日付範囲が必要です。 日付列の1つ以上の行に、前の行と連続する行のデータ値と連続していない日付値がある場合、このエラーが返される可能性があります。
データソースから日付を含むテーブルをインポートした場合、多くの組織がデータベース内のテーブルで無効な値をスキャンし、特定の値に置き換える特別なプロセスを実行することに注意してください。 つまり、無効な日付が見つかった場合、列内の他のデータ値と連続していない可能性がある特定の日付値が割り当てられます。
設計時にこのエラーを修正する方法は?
設計時のエラーを修正するには、次を実行します-
- 日付テーブルをデータソースからインポートする場合は、Power Pivotウィンドウの[更新]を使用して、ソースで見つかった変更を再インポートします。
- 日付列の値をチェックして、連続した順序になっていることを確認します。 値が設定されていないことが判明した場合、ソースで修正する必要があり、日付テーブルを更新する必要があります。
- データモデルに別の日付テーブルと日付列を作成します。 エラーの原因となっている式の日付引数として新しい日付列を指定します。 日付テーブルは簡単に作成してデータモデルに追加できます。
DAXセマンティックエラー-例
次のDAXエラーはセマンティックエラーです-
「テーブルフィルター式として使用されるtrue-false式で関数「CALCULATE」が使用されています。 これは許可されていません。」
原因
このエラーは、1つ以上のフィルター式を計算フィールドまたは計算列式のコンテキストで使用できない場合に表示される可能性があります。
ほとんどの場合、このエラーは、DAX CALCULATE関数の引数として指定されたフィルター式が原因です。 CALCULATE関数には、ブール式またはテーブル式として定義されたフィルターが必要です。
このようなエラーを修正する方法は?
このようなエラーを修正するには、DAX FILTER関数を使用してフィルターをテーブル式として定義し、それをDAX CALCULATE関数の引数として使用できます。