訓練
Power Query 中的數據類型
Power Query 中的數據類型可用來分類值,以擁有更結構化的數據集。 數據類型是在欄位層級定義,欄位內的值會設定為 符合 欄位的數據類型。
數據行的數據類型會顯示在數據行標題的左側,並具有符號化數據類型的圖示。
注意
Power Query 會根據數據行的數據類型,提供一組內容相關轉換和選項。 例如,當您選取資料類型為 Date 的數據行時,您會取得套用至該特定資料類型的轉換和選項。 這些轉換和選項會在整個 Power Query 介面中進行,例如在 [轉換] 和 [新增數據行] 索引標籤和智慧篩選選項上。
下表列出 Power Query 中使用的最常見數據類型。 雖然超出本文的範圍,但您可以在Power Query M公式語言 類型一文中找到數據類型的完整清單。
資料類型 | Icon | 描述 |
---|---|---|
Text | Unicode 字元資料字串。 可以是以文字格式表示的字串、數位或日期。 字串長度上限為 268,435,456 個 Unicode 字元(其中每個 Unicode 字元都是兩個字節),或 536,870,912 個字節。 | |
True/False | True 或 False 的布爾值。 | |
十進位數 | 表示 64 位 (八位元組) 浮點數。 這是最常見的數字類型,且與您通常想像的數字相對應。 雖然設計用來處理分數值的數位,但它也會處理整數。 十進位數類型可以處理從 –1.79E +308 到 –2.23E –308、0 和 2.23E –308 到 1.79E + 308 的負值。 例如,34、34.01 和 34.000367063 等數位是有效的十進位數。 可以在十進位數類型中表示的最大有效位數為15位數。 小數分隔符可以在數位中的任何位置發生。 十進位數類型會對應至 Excel 儲存其數位的方式。 請注意,二進位浮點數不能代表其支援範圍內具有100%精確度的所有數位。 因此,代表特定十進位數時,可能會發生精確度的次要差異。 | |
固定的十進位數 | 也稱為 Currency 類型,此數據類型具有小數分隔符的固定位置。 小數分隔符的右邊一律有四位數,並允許 19 位數的顯著性。 它可以表示的最大值為 922,337,203,685,477.5807(正數或負數)。 與 Decimal Number 不同,固定十進位數類型一律精確,因此在浮點表示法不精確可能會造成錯誤的情況下很有用。 | |
神秘 個數位 | 表示 64 位 (八位元組) 整數值。 因為它是整數,所以小數字數右邊沒有位數。 它允許19位數;介於 –9,223,372,036,854,775,807(–2^63+1) 和 9,223,372,036,854,775,806 (2^63–2) 之間為正整數或負整數。 它可以代表各種數值數據類型的最大可能有效位數。 如同固定十進位數類型,神秘 le Number 類型在您需要控制四捨五入的情況下很有用。 | |
百分比 | 基本上與十進位數類型相同,但它具有遮罩,可格式化數據行中的值,以 Power Query 編輯器 視窗中的百分比表示。 | |
日期/時間 | 表示日期和時間值。 實際上,日期/時間值會儲存為十進位數類型,因此您可以實際在兩者之間轉換。 日期的時間部分會儲存為 1/300 秒 (3.33 毫秒) 的整數倍數。 支援 1900 年至 9999 年之間的日期。 | |
日期 | 只代表日期(沒有時間部分)。 轉換成模型時,Date 與分數值的 Date/Time 值相同。 | |
Time | 代表 just time (沒有日期部分)。 轉換成模型時,Time 值與日期/時間值相同,沒有小數位數左邊的數位。 | |
日期/時間/時區 | 表示具有時區位移的UTC日期/時間。 當載入模型時,它會轉換成日期/時間。 | |
期間 | 表示載入模型時,會轉換成十進位數類型的時間長度。 做為十進位數類型,可以從日期/時間字段新增或減去具有正確結果。 因為它是十進位數類型,所以您可以在顯示大小視覺效果中輕鬆使用它。 | |
二進位 | Binary 數據類型可用來表示任何其他具有二進位格式的數據。 | |
任何 | Any 數據類型是提供給沒有明確數據類型定義之數據行的狀態。 任何是分類所有值的數據類型。 我們建議您一律從非結構化來源明確定義查詢的數據行數據類型,並避免將任何數據類型的數據行當做查詢的輸出。 |
連接到下列專案時,會自動偵測資料類型:
結構化數據源,例如資料庫,Power Query 會從數據源讀取數據表架構,並使用每個數據行的正確數據類型自動顯示數據。
Power Query 會藉由檢查數據表中的值,自動偵測數據類型的非結構化來源,例如 Excel、CSV 和文本檔。 根據預設,非結構化來源的Power Query中會啟用自動數據類型偵測。
您也可以在 [轉換] 索引標籤的 [任何資料行] 群組中使用 [偵測數據類型] 命令,自動偵測數據表中數據行的數據類型。
您可以在四個位置中定義或變更資料行的資料類型:
在 [首頁] 索引標籤的 [轉換] 群組中,於 [數據類型] 下拉功能表上。
在 [轉換] 索引標籤的 [任何數據行] 群組的 [數據類型] 下拉功能表中。
選取數據列標題左側的圖示。
在資料行快捷方式功能表上的 [變更類型] 底下。
此設定特別適用於非結構化來源。 其可協助您根據數據表的前 200 個數據列自動檢查和偵測數據行類型和標頭。 啟用此設定時,Power Query 會自動將兩個步驟新增至您的查詢:
- 升級數據行標頭:將數據表的第一個數據列升階為數據行行首。
- 已變更的類型:根據每個數據行的值檢查,將值從Any數據類型轉換成數據類型。
根據預設會啟用此設定。 若要停用或啟用此設定,請遵循套用至 Power Query 體驗的步驟。
在 Power Query Online 中設定自動數據類型偵測
在 [ 首頁] 索引標籤上,選取 [ 選項],然後選取 [ 項目選項]。 在 [ 項目選項] 視窗中,選取 [ 自動偵測非結構化來源 的數據行類型和標頭] 複選框。
在 Power Query for Desktop 中設定自動數據類型偵測
您可以在 [選項] 視窗的全域和每個檔案層級定義此行為(在 [Power Query 編輯器] 索引標籤上,選取 [選項和設定>選項]。
全域:在 [全域] 下方的左窗格中,選取 [數據載入]。 在 [類型偵測] 下方的右窗格中,您可以選取三種類型偵測組態中的任何一個,這些組態將套用至應用程式中建立的每個新檔案:
- 一律偵測非結構化來源的數據行類型和標頭
- 根據每個檔案的設定,偵測非結構化來源的數據行類型和標頭
- 永不偵測非結構化來源的數據行類型和標頭
目前檔案:在 [目前檔案] 下方的左窗格中,選取 [數據載入]。 在 [類型偵測] 下方的右窗格中,選取您要啟用或停用目前檔案的類型偵測。
Power Query 會處理兩個不同的元件,這些元件會管理外觀和解譯的方式:
- 當地語系化:會以應該顯示的語言告訴Power Query的元件。
- 全球化:除了文字值的解譯之外,處理值格式設定的元件。
地區設定 是保留當地語系化和全球化元件的單一值。 地區設定可用來解譯文字值,並將其轉換成其他數據類型。 例如,地區設定英文 (美國) 表示本地化是 美國 英文,或值的全球化或值格式,是以 美國 中使用的標準為基礎。
當 Power Query 定義資料行數據類型或從某個數據類型轉換成另一個數據類型時,必須先解譯要轉換的值,才能將其轉換成不同的數據類型。
在 Power Query Online 中,此解譯定義於 [項目選項] 底下的 [地區設定]。
在 Power Query for Desktop 中,Power Query 會自動辨識您的作業系統區域格式,並使用該格式來解譯數據類型轉換的值。 若要覆寫此地區設定,請開啟 [查詢選項] 視窗,然後在 [目前檔案] 下的左窗格中,選取 [區域設定]。 您可以從這裡將地區設定變更為您想要的設定。
此地區設定對於將文字值解譯為特定數據類型很重要。 例如,假設您已將地區設定為英文 (美國),但其中一個 CSV 檔案中的數據行已格式化為英國日期/月/年格式。
當您嘗試將 Date 資料行的資料類型設定為 Date 時,您會收到錯誤值。
發生這些錯誤的原因是使用的地區設定正嘗試以英文 (美國) 格式來解譯日期,也就是月/日/年。 因為行事曆中沒有第 22 個月,所以會造成錯誤。
您可以以滑鼠右鍵按下數據行標題,選取 [變更類型],然後選取 [使用地區設定],而不是只選取 [日期] 數據類型。
在 [ 使用地區 設定變更資料行類型] 對話框中,您可以選取您想要設定的數據類型,但您也可以選取要使用的地區設定,在此情況下必須是 英文 (英國) 。
使用此地區設定,Power Query 將能夠正確解譯值,並將這些值轉換成正確的數據類型。
確認最終日期值
值的格式化是由全球化值所驅動。 如果您對 Power Query 所顯示的值有任何疑慮,您可以藉由從值新增日期、月份和年份的新數據行來驗證日期值的轉換。 若要這樣做,請選取 [日期] 數據 行,然後移至功能區上的 [ 新增數據行 ] 索引標籤。 在 [ 日期和時間] 資料行 群組中,您會看到日期數據行的選項。
您可以從這裡擷取日期值的一部分,例如年號、月號、日數,或從 Date 數據行擷 取的更多數據 行。
藉由使用這些資料行,您可以確認日期值已正確轉換。
下列矩陣的設計目的是讓您快速查看從某個數據類型轉換成另一個數據類型之值的數據類型轉換的可行性。
注意
此矩陣中的轉換會從 [資料類型] 資料行中的 原始數據類型 開始。 轉換成新類型的每個結果都會顯示在原始數據類型的數據列中。
資料類型 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
十進位數 | — | ||||||||||
貨幣 | — | ||||||||||
神秘 個數位 | — | ||||||||||
百分比 | — | ||||||||||
日期/時間 | — | ||||||||||
日期 | — | ||||||||||
時間 | — | ||||||||||
日期/時間/時區 | — | ||||||||||
時間 | — | ||||||||||
文本 | — | ||||||||||
True/False | — |
Icon | 描述 |
---|---|
可能 | |
不可行 | |
可能,但它會將值新增至原始值 | |
可能,但它會截斷原始值 |