分享方式:


處理 Power Query 中的錯誤

在 Power Query 中,您可以遇到兩種類型的錯誤:

  • 步驟層級錯誤
  • 儲存格層級錯誤

本文提供如何修正每個層級可能找到的最常見錯誤的建議,並說明每個層級的錯誤原因、錯誤訊息和錯誤詳細數據。

步驟層級錯誤

步驟層級錯誤可防止查詢載入,並在黃色窗格中顯示錯誤元件。

未找到欄位的步驟層級錯誤的螢幕截圖。

  • 錯誤原因:冒號之前的第一個區段。 在上一個範例中,錯誤原因為 Expression.Error
  • 錯誤訊息:原因之後的區段。 在上一個範例中,錯誤訊息是 找不到數據表的數據行 'Column'
  • 錯誤詳細:Details: 字串後面的直接區段。 在上一個範例中,錯誤詳細數據是 Column

Power Query Online 會顯示稍微不同的詳細數據。 錯誤詳細數據仍然是 Column,但在線錯誤訊息也包含錯誤原因 (Expression.Error) 和錯誤碼 (10224)。

無法找到欄位的線上步驟錯誤截圖。

常見的步驟級別錯誤

在所有情況下,我們建議您仔細查看錯誤原因、錯誤訊息和錯誤詳細數據,以瞭解造成錯誤的原因。 如果可用,您可以選取 [ 顯示詳細資料 ] 按鈕,以顯示錯誤的詳細數據。

強調 [顯示詳細資料] 按鈕的錯誤訊息螢幕快照。

找不到來源 - DataSource.NotFound

當使用者無法存取數據源、用戶沒有正確的認證來存取數據源,或來源移至不同位置時,通常會發生此錯誤。

範例:您有位於磁碟驅動器 D 中的文字圖格查詢,並由使用者 A 建立。使用者 A 會與無法存取磁碟驅動器 D 的使用者 B 共享查詢。當此人嘗試執行查詢時,他們會收到 DataSource.NotFound ,因為其環境中沒有磁碟驅動器 D。

數據源錯誤無法找到檔案的螢幕快照,因為目前環境中沒有磁碟驅動器 D。

可能的解決方案:您可以將文字檔的檔案路徑變更為兩位使用者都可以存取的路徑。 身為使用者 B,您可以將檔案路徑變更為相同文字檔的本機複本。

找不到資料表的欄位

當步驟直接參考查詢中不存在的數據行名稱時,通常會觸發此錯誤。

範例:您有文本文件的查詢,其中其中一個數據行名稱為 Column。 在您的查詢中,您有將該數據行重新命名為 Date 的步驟。 但是原始文本檔中有變更,原本的欄標題Column 已被手動變更為Date。 Power Query 找不到名為 Column 的數據行標題,因此無法重新命名任何數據行。 它會顯示下圖所示的錯誤。

表達式錯誤的螢幕快照,其中找不到數據表的數據行,因為數據行名稱已手動變更。

可能的解決方案:此案例有多個解決方案,但它們全都取決於您想要做什麼。 在此範例中,由於正確的 Date 欄位標頭已經來自文字檔,因此您可以移除重新命名欄位的步驟。 這項變更可讓您的查詢執行,而不會發生此錯誤。

其他常見的步驟層級錯誤

在多個數據源之間合併或合併數據時,您可能會收到 Formula.Firewall 錯誤,例如下圖所示的錯誤。

公式防火牆錯誤的螢幕快照,指出查詢參考其他查詢或步驟,因此它可能不會直接存取數據源。

此錯誤會因為各種原因而發生,例如數據源之間的數據隱私權層級,或合併這些數據源的方式。 如需如何診斷此問題的詳細資訊,請移至 數據隱私權防火牆

單元層級錯誤

數據格層級錯誤不會防止查詢載入,但會將錯誤值顯示為儲存格中的 Error 。 在儲存格中選擇白色空白會在資料預覽下方顯示錯誤窗格。

透過選取包含錯誤的表格儲存格中的空白處顯示錯誤訊息的螢幕快照。

備註

數據分析工具可協助您更輕鬆地利用欄品質功能來識別儲存格層級錯誤。 如需詳細資訊,請移至 數據分析工具

處理單元格層級的錯誤

當您遇到任何數據格層級錯誤時,Power Query 會提供一組函式,藉由移除、取代或保留錯誤來處理它們。

在接下來的各節中,提供的範例會使用與起點相同的範例查詢。 在此查詢中,您有一個 Sales 欄,其中有一個因轉換錯誤而出現錯誤的儲存格。 該儲存格內的值為 NA,但當您將該資料行轉換成整數 Power Query 時,無法將 NA 轉換成數位,因此會顯示下列錯誤。

顯示數據格式錯誤的螢幕快照,其中包含無法轉換成錯誤窗格中的數據類型錯誤。

移除錯誤

若要移除 Power Query 中含有錯誤的數據列,請先選取包含錯誤的數據行。 在 [ 首頁] 索引標籤的 [ 減少數據列] 群組中,選取 [移除數據列]。 從下拉功能表中,選取 [移除錯誤]。

[首頁] 索引標籤上 [移除錯誤] 按鈕的螢幕快照。

該作業的結果會提供下表。

先前包含五個數據列之數據表的螢幕快照,現在已移除包含錯誤的數據列,使數據表中有四個數據列。

取代錯誤

如果您想要以固定值取代錯誤,而不是移除具有錯誤的數據列,您也可以這麼做。 若要取代有錯誤的數據列,請先選取包含錯誤的數據行。 在 轉換 索引標籤的 任何欄位 群組中,選取 取代值。 從下拉功能表中,選取 [取代錯誤]。

[轉換] 索引標籤上 [取代錯誤] 按鈕的螢幕快照。

在 [ 取代錯誤] 對話框中,輸入 值 10 ,因為您想要以值 10 取代所有錯誤。

[取代錯誤] 對話框的螢幕快照,值設定為 10。

該作業的結果會提供下表。

Sales 資料行中第三列包含錯誤之數據表的螢幕快照,現在已將錯誤取代為值 10。

保留錯誤

即使您未修正錯誤,Power Query 也可以作為良好的稽核工具,以識別任何發生錯誤的數據列。 這種情況下,保留錯誤 可能很有幫助。 若要保留有錯誤的數據列,請先選取包含錯誤的數據行。 在 [ 首頁 ] 索引標籤的 [ 減少數據列 ] 群組中,選取 [保留數據列]。 從下拉功能表中,選取 [ 保留錯誤]。

[首頁] 索引標籤上 [保留錯誤] 按鈕的螢幕快照。

該作業的結果會提供下表。

最後一個數據表的螢幕快照,其中只保留包含錯誤的數據列。

常見的單元格層級錯誤

如同任何步驟層級錯誤,我們建議您仔細檢視單元格層級所提供的錯誤原因、錯誤訊息和錯誤細節,以瞭解造成錯誤的原因。 下列各節將討論Power Query 中一些最常見的數據格層級錯誤。

數據類型轉換錯誤

變更數據表中數據行的數據類型時,通常會觸發。 數據列中找到的某些值無法轉換成所需的數據類型。

範例:您有一個查詢,其中包含名為 Sales 的數據行。 該數據行中的一個儲存格具有 NA 做為儲存格值,而其餘的數據格則以整數做為值。 您決定將數據行的數據類型從文字轉換成整數,但具有 NA 值的儲存格會造成錯誤。

顯示無法轉換為數據類型的錯誤詳細信息的螢幕快照。

可能的解決方案:識別錯誤的數據列之後,您可以修改數據源來反映正確的值,而不是 NA,或者您可以套用 Replace 錯誤 作業來提供任何造成錯誤的 NA 值值。

作業錯誤

嘗試套用不支持的作業時,例如將文字值乘以數值,就會發生錯誤。

範例:您想要透過建立文字字串來為您的查詢建立自定義欄,該字串包含短語「總銷售額:」並與 Sales 數據行的值串連。 發生錯誤的原因是串連作業只支援文字數據行,而不是數值數據行。

嘗試將 And 運算子套用至 Sales 資料行中的文字和數字而造成錯誤窗格中表示式錯誤的螢幕擷取畫面。

可能的解決方案:建立此自定義數據行之前,請將 Sales 數據行的數據類型變更為文字。

數據表的螢幕快照,其中銷售數據行從數字轉換成文字類型,以及包含這兩個表達式的新數據行。

顯示為錯誤的巢狀值

使用包含巢狀結構化值的數據時(例如數據表、清單或記錄),您有時可能會遇到下列錯誤:

公式防火牆觸發的巢狀值錯誤的螢幕截圖。

Expression.Error: We cannot return a value of type {value} in this context

Details: In the past we would have returned a text value of {value}, but we now return this error. Please see https://go.microsoft.com/fwlink/?linkid=2099726 for more information.

這些錯誤通常會因為下列兩個原因而發生:

  • 當數據隱私權防火牆緩衝數據源時,巢狀非可調整值會自動轉換成錯誤。
  • 當以 Any 數據類型定義的數據行包含非標數值時,這類值會在載入期間回報為錯誤(例如 Excel 中的活頁簿或 Power BI Desktop 中的數據模型)。

可能的解決方案:

  • 拿掉包含錯誤的數據行,或為這類資料行設定非Any 數據類型。
  • 將涉及的數據源的隱私級別更改為允許合併,而不需緩衝。
  • 在合併之前將數據表壓平,以排除包含巢狀結構化值的數據行(例如數據表、記錄或清單)。