文字/CSV

摘要

項目 說明
發行狀態 正式發行
產品 Excel
Power BI (語意模型)
Power BI (數據流)
網狀架構 (資料流 Gen2)
Power Apps (數據流)
Dynamics 365 Customer Insights
Analysis Services
函式參考檔 File.Contents
Lines.FromBinary
Csv.Document

注意

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

支援的功能

  • Import

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

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

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

    文字文件選取範圍。

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

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

    導覽器中的文字。

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

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

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

  2. [連線 ion 設定] 中,輸入您想要之本機文字或 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 BOM開頭時,才會推斷UTF-8。

文字/CSV 的檔案文化特性選取專案。

CSV

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

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

從 csv 檔案載入數據。

可用的分隔符包括冒號、逗號、等號、分號、空格、製表元、自定義分隔符(可以是任何字串),以及固定寬度(以某些標準字元數分割文字)。

csv 檔案的分隔符選取專案。

最後一個下拉式清單可讓您選取要如何處理數據類型偵測。 它可以根據前 200 個數據列、整個數據集來完成,或者您可以選擇不進行自動數據類型偵測,而是讓所有數據行預設為 「文字」。 警告:如果您在整個數據集上執行此動作,可能會導致編輯器中數據的初始載入速度變慢。

csv 檔案的數據類型推斷選取專案。

由於推斷可能不正確,因此在載入之前,值得仔細檢查設定。

結構化文字

當 Power Query 可以偵測文本文件的結構時,它會將文字檔視為分隔符分隔值檔案,並在開啟 CSV 時提供相同的選項,這基本上只是擴展名為指出分隔符類型的檔案。

例如,如果您將下列範例儲存為文本檔,則會將它讀取為具有製表符分隔符,而不是非結構化文字。

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

從結構化文本檔載入數據。

這可用於任何類型的其他分隔符型檔案。

編輯來源

編輯來源步驟時,您會看到與一開始載入時略有不同的對話框。 根據您目前將檔案視為 (也就是文字或 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 的結構化檔案(例如儲存為文字檔的索引標籤分隔值檔案),您仍應將 [開啟檔案] 設定為 CSV。 此設定也會決定對話框其餘部分可用的下拉式清單。

變更文件類型。

文字/CSV 範例

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

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

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

注意

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

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

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

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

疑難排解

從 Web 載入檔案

如果您要從 Web 要求文字/csv 檔案並提升標頭,而且您正在擷取足夠的檔案,而您需要擔心潛在的節流,您應該考慮使用 Binary.Buffer()包裝您的Web.Contents呼叫。 在此情況下,在升級標頭之前緩衝處理檔案會導致檔案只要求一次。

使用大型 CSV 檔案

如果您在 Power Query Online 編輯器中處理大型 CSV 檔案,您可能會收到內部錯誤。 建議您先使用較小的 CSV 檔案、套用編輯器中的步驟,一旦完成,請將路徑變更為較大的 CSV 檔案。 此方法可讓您更有效率地工作,並減少在在線編輯器中遇到逾時的機會。 我們不希望您在重新整理期間遇到此錯誤,因為我們允許較長的逾時持續時間。

要解譯為結構化的非結構化文字

在罕見的情況下,在段落中具有類似逗號的檔可能會解譯為 CSV。 如果發生此問題,請在 Power Query 編輯器中編輯 [來源] 步驟,然後在 [開啟檔案為] 下拉式清單中選取 [文字],而不是 CSV。

Power BI Desktop 中的數據行

當您匯入 CSV 檔案時,Power BI Desktop 會產生 columns=x(其中 x 是初始匯入期間 CSV 檔案中的數據行數目),作為 Power Query 編輯器 的步驟。 如果您後續新增更多數據行,且數據源設定為重新整理,則不會重新整理超過初始 x 個數據行計數的任何數據行。

錯誤:主機關閉 連線

從 Web 來源載入文字/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")))