文字/CSV

總結

項目 說明
發行狀態 一般可用性
產品 Excel
Power BI (語意模型)
Power BI (數據流)
Fabric(Dataflow Gen2)
Power Apps(數據流)
Dynamics 365 Customer Insights
Analysis Services
函數參考文檔 File.Contents
Lines.FromBinary
Csv.Document

備註

某些功能可能會存在於一個產品中,但由於部署排程和主機特定功能,而不存在於其他產品中。

支援的功能

  • 進口

從 Power Query Desktop 連線到本機文字/CSV 檔案

若要載入本機文字或 CSV 檔案:

  1. 選取 [取得數據] 中的 [文字/CSV] 選項。 此動作會啟動本機檔案瀏覽器,您可以在其中選取文字檔。

    開啟檔案瀏覽器時選取文字文件的螢幕快照。

    選取 [開啟] 以開啟檔案。

  2. [導覽器] 中,您可以選取 [ 轉換數據] 來轉換 Power Query 編輯器中的數據,或選取 [ 載入] 來載入數據。

    導覽器中範例文字的螢幕快照。

從 Power Query Online 連線到文字/CSV 檔案

若要載入本機文字或 CSV 檔案:

  1. 從 [ 數據源] 頁面中,選取 [文字/CSV]。

  2. [連線設定] 中,上傳檔案或輸入您想要之本機文字或 CSV 檔案的檔案路徑。

    在線文本文件選取畫面的螢幕快照。

  3. 數據閘道選取內部部署數據閘道。

  4. 輸入使用者名稱及密碼。

  5. 選取 下一步

  6. [導覽器] 中,選取 [轉換數據 ] 以開始在Power Query 編輯器中轉換數據。

    您選取 [轉換資料] 的線上導覽器視窗螢幕快照。

從 Web 載入

若要從 Web 載入文字或 CSV 檔案,請選取 Web 連接器、輸入檔案的網址,然後遵循任何認證提示。

文字/CSV 分隔符

Power Query 將 CSV 視為結構化檔案,並以逗號作為分隔符——這是文字檔的特殊情況。 如果您選擇文字檔,Power Query 會自動嘗試判斷是否有分隔符分隔值,以及該分隔符是什麼。 如果它可以推斷分隔符,它會自動將它視為結構化數據源。

非結構化文字

如果你的文字檔沒有結構,你會得到一個單一資料欄,而來源文字中的每一行都會成為一個新資料列。 作為非結構化文字的範例,考慮一個記事本檔案,內容如下:

Hello world.
This is sample data.

當您載入它時,您會看到一個導航畫面,該畫面會將每一行呈現在各自的資料列中。

導覽器的螢幕快照,其中包含從簡單非結構化文本檔載入的數據。

你只能在這個對話框中設定一個選項,就是檔案 來源 下拉選單。 此下拉式清單可讓您選取用來產生檔案 的字元集 。 目前,字元集不會被推斷,而 UTF-8 只有在以 UTF-8 BOM 開頭時才會被推斷。

文字/CSV 檔案文化特性選取項目的螢幕快照。

CSV

您可以 在這裡找到範例 CSV 檔案。

除了檔案來源之外,CSV 也支援指定分隔符,以及如何處理數據類型偵測。

導覽器的螢幕快照,其中顯示從 csv 檔案載入的數據。

分隔符包括冒號、逗號、等號、分號、空格、制表符、自訂分隔符(可為任意字串)以及固定寬度(以標準字元數分割文字)。

csv 文件分隔符選項螢幕快照。

最後一個下拉選單讓你選擇如何處理資料型別偵測。 你可以根據前 200 行或整個資料集來判斷。 你也可以選擇關閉自動資料類型偵測,讓所有欄位預設為「Text」。 警告:如果你選擇整個資料集,可能會導致編輯器中資料的初始載入變慢。

csv 檔案之數據類型推斷選取項目的螢幕快照。

因為推論可能錯誤,載入前請再次確認設定。

結構化文本

當 Power Query 偵測到你的文字檔有結構時,它會將該文字檔視為一個分隔符分隔值的檔案。 它給你開啟 CSV 時可用的選項。 CSV 本質上是一個帶有分隔符類型副檔名的檔案。

例如,如果你將以下範例儲存為文字檔,Power Query 會將其解讀為有制表分隔符,而非非結構化文字。

Column 1	Column 2	Column 3
This is a string.	1	ABC123
This is also a string.	2	DEF456

顯示從結構化文本檔載入資料的螢幕快照。

你可以用這個結構來處理任何其他基於分隔符的檔案。

編輯來源

當你編輯來源步驟(在 Power Query Desktop 的「套用步驟」面板)時,你會看到一個和最初載入檔案時略有不同的對話框。 根據你目前如何處理檔案(當作文字或 CSV),你會看到一個包含各種下拉選單的畫面。

您在存取 CSV 檔案的查詢上編輯來源步驟的對話框螢幕快照。

使用 「換行」 下拉式選單,選取是否要套用引號內的換行。

下拉式清單的螢幕快照,其中您選取 CSV 檔案的換行符樣式。

例如,如果您編輯先前提供的「結構化」範例,您可以新增換行符。

Column 1	Column 2	Column 3
This is a string.	1	"ABC
123"
This is also a string.	2	"DEF456"

如果你把 換行 設為 忽略引號中的換行,範例會載入,且字串的後半段會顯示在同一欄中前半段的下方。

載入 CSV 檔案時忽略引號中的換行符。

如果你把 換行 設成 套用所有換行,範例會多載入一列,換行之後的內容就是該列唯一的內容(具體輸出可能依檔案內容結構而定)。

載入套用引號換行符的 CSV 檔案。

使用 開啟檔案為 下拉式選單,設定要將檔案載入為何種格式。 這個設定對故障排除很重要。 對於技術上不是 CSV 的結構化檔案(例如分頁數值檔案儲存為文字檔),請將 Open 檔案設定為 CSV。 此設定也會決定對話框其餘部分可用的下拉式清單。

變更文件類型。

文字/CSV 範例

Power Query 中的文字/CSV 範例是 Power BI Desktop 和 Power Query Online 中正式推出的功能。 當您使用 Text/CSV 連接器時,您會看到導覽器左下角的 [ 使用範例擷取資料表 ] 選項。

使用 [使用範例擷取數據表] 選項。

當您選取該按鈕時,會進入 [ 使用範例擷取數據表 ] 頁面。 在此頁面上,您會指定您想要從 Text/CSV 檔案擷取之數據的範例輸出值。 輸入數據行的第一個儲存格之後,數據行中的其他儲存格就會填入。若要正確擷取數據,您可能需要在數據行中輸入一個以上的數據格。 如果數據行中的某些儲存格不正確,您可以修正第一個不正確的儲存格,並再次擷取數據。 若要確保成功擷取數據,請檢查前幾個數據格中的數據。

備註

請依欄位順序輸入範例。 成功填寫數據行之後,請建立新的數據行,並開始在新數據行中輸入範例。

指定要擷取資料的範例輸出值。

建構該數據表之後,您可以選取以載入或轉換數據。 請注意,產生的查詢如何包含針對數據擷取所推斷之所有步驟的詳細明細。 這些步驟是您可以視需要自定義的一般查詢步驟。

數據擷取步驟的詳細明細。

故障排除

從網頁載入檔案

如果您從 Web 要求 text/csv 檔案,也提升標頭,且擷取的檔案數量多到需要考慮可能發生的節流限制,請考慮將對 Web.Contents 的呼叫包裝在 Binary.Buffer() 中。 在這種情況下,先緩衝檔案再升標頭,檔案只會被請求一次。

使用大型 CSV 檔案

如果您在 Power Query Online 編輯器中處理大型 CSV 檔案,您可能會收到內部錯誤。 先用較小的 CSV 檔案,在編輯器裡套用步驟,完成後再把路徑改成較大的 CSV 檔案。 此方法可讓您更有效率地工作,並減少在線上編輯器中遇到超時的機會。 你不會預期在刷新時間會遇到這個錯誤,因為服務允許更長的逾時時間。

非結構化文字被解讀為結構化

在極少數情況下,當段落中出現相似逗號時,Power Query 會將文件解讀為 CSV。 如果發生此問題,請在 Power Query 編輯器中編輯 「來源」 步驟,並在 「開啟檔案格式」 下拉式選單中選取 「文字」,而非 「CSV」

Power BI Desktop 中的欄

當你匯入 CSV 檔案時,Power BI Desktop 會在 Power Query 編輯器中產生欄位=x 步驟,x 是初始匯入時 CSV 檔案的欄位數。 如果你之後新增更多欄位並設定資料來源重新整理,刷新操作不會包含超過初始 x 欄數以外的欄位。

錯誤:連線已被主機關閉

在從網頁來源載入文字/CSV 檔案並推廣標頭時,有時會遇到以下錯誤: "An existing connection was forcibly closed by the remote host""Received an unexpected EOF or 0 bytes from the transport stream." 主機可能因採取保護措施而關閉可能暫時暫停的連線,例如等待其他資料來源連線進行加入或附加操作時,造成這些錯誤。 為了避免這些錯誤,可以嘗試新增 Binary.Buffer (建議)或 Table.Buffer 呼叫。 這些函式會下載檔案,載入記憶體,然後立即關閉連線。 此操作可防止下載過程中暫停,並防止主機在內容取回前強制關閉連線。

下列範例說明此因應措施。 在產生的數據表傳遞至 Table.PromoteHeaders 之前,必須先進行此緩衝處理。

  • 原始文件:
Csv.Document(Web.Contents("https://.../MyFile.csv"))
  • 使用 Binary.Buffer
Csv.Document(Binary.Buffer(Web.Contents("https://.../MyFile.csv")))
  • 使用 Table.Buffer
Table.Buffer(Csv.Document(Web.Contents("https://.../MyFile.csv")))