Excel DAX - 公式錯誤



編寫DAX公式時,如果語法錯誤,可能會出現錯誤。計算欄位和計算列可以包含需要特定型別引數的DAX函式。DAX函式的引數可以是表、列或其他DAX函式(巢狀DAX函式)。由於DAX函式可以返回表和列,因此應注意檢查是否將正確型別的引數傳遞給DAX函式。

DAX公式錯誤可以是語法錯誤或語義錯誤。錯誤可能發生在設計時或執行時。

在本章中,您將學習一些常見的DAX錯誤、其原因以及如何修復這些錯誤。

DAX錯誤:計算中止

嘗試建立(設計時)或使用(執行時)包含DAX時間智慧函式的計算欄位時,可能會出現以下錯誤。在每種情況下,都將非連續日期範圍傳遞給時間智慧函式。

“DAX錯誤:計算中止:MdxScript (例項) (00, 0) 函式“DATEADD”僅適用於連續日期選擇。”

執行時原因

當將包含DAX時間智慧函式的計算欄位放置在透視表的值區域中,並且在選擇年份之前選擇月份或季度等日期欄位作為切片器或篩選器時,可能會顯示此錯誤。例如,如果您有2014年、2015年和2016年三年的資料,並且您嘗試僅使用月份“三月”而不選擇“年份”欄位,則這些值不是連續資料值,您將收到錯誤。

如何在執行時修復錯誤?

在上面的例子中,

  • 首先新增“年份”作為切片器或篩選器並選擇年份。

  • 然後,新增“月份”或“季度”作為切片器或篩選器。

  • 然後,選擇一個或多個月份或季度來對所選年份進行切片或篩選。

設計時原因

DAX時間智慧函式需要為日期引數指定日期列。日期列必須具有連續的日期範圍。如果日期列中的一行或多行中存在一個或多個日期值與前一行和後續行中的資料值不連續,則可能會返回此錯誤。

如果您從資料來源匯入包含日期的表,請記住,許多組織執行特殊的流程來掃描資料庫中的表以查詢無效值,並將這些值替換為特定值。也就是說,如果找到無效日期,則會為其分配特定日期值,該值可能與列中其他資料值不連續。

如何在設計時修復此錯誤?

請執行以下操作以在設計時修復錯誤:

  • 如果您的日期表是從資料來源匯入的,請使用 Power Pivot 視窗中的“重新整理”重新匯入在源中找到的任何更改。

  • 檢查日期列中的值,確保它們按連續順序排列。如果發現任何值不在位,則必須在源處更正它,並且必須重新整理日期表。

  • 在資料模型中建立單獨的日期表和日期列。將新的日期列指定為導致錯誤的公式中的日期引數。日期表易於建立並新增到資料模型。

DAX語義錯誤 - 示例

以下DAX錯誤是語義錯誤:

“在用作表篩選器表示式的真假表示式中使用了函式“CALCULATE”。這是不允許的。”

原因

當一個或多個篩選器表示式無法在計算欄位或計算列表達式的上下文中使用時,可能會出現此錯誤。

在大多數情況下,此錯誤是由指定為DAX CALCULATE函式引數的篩選器表示式引起的。CALCULATE函式需要定義為布林表示式或表表達式的篩選器。

如何修復此類錯誤?

您可以使用DAX FILTER函式將篩選器定義為表表達式來修復此類錯誤,然後將其用作DAX CALCULATE函式的引數。

廣告