共用方式為


類型和類型轉換

Power Query M 會使用類型來分類值,以擁有更結構化的數據集。 本文說明最常用的 M 類型,以及如何將某個類型轉換成另一個類型。

常用的類型

數據類型是指用來釐清特定數據結構的任何類型。 最常使用的資料類型是基本類型。 這些類型包括:

  • type any,它會分類任何值。
  • type null,其用來分類空值。
  • type logical,它會將值分類為 true 和 false。
  • type number,它會分類數位值。
  • type time,其會分類時間值。
  • type date,其會分類日期值。
  • type datetime,會分類日期時間值。
  • type datetimezone,它會分類 datetimezone 值。
  • type duration,其會分類持續時間值。
  • type text,它會將文字值分類。
  • type binary,它會分類二進位值。
  • type type,它會分類類型值。
  • type list,它會分類清單值。
  • type record,它會分類記錄值。
  • type table,它會分類數據表值。
  • type function,其會分類函式值。
  • type anynonnull,它會分類排除 null 的所有值。
  • type none,其不會分類任何值。

如需這些類型的詳細資訊,請移至 Types

除了這些常見的資料類型之外,還有一組使用*.Type格式的資料類型。 此格式最常使用的資料類型如下:

  • Byte.Type,其會分類 8 位數位值。
  • Int8.Type,其會分類 8 位數位值。
  • Int16.Type,其會分類 16 位數位值。
  • Int32.Type,它會分類 32 位數位值。
  • Int64.Type,其會分類64位數位值。
  • Single.Type,它會分類 9 位數的浮點數值。
  • Double.Type,它會分類 17 位數的浮點數值。
  • Decimal.Type,它會分類 15 位數的浮點數值。
  • Currency.Type,它會將19位數的數位值分類為 「.」 分隔符右邊的四位數。
  • Percentage.Type,將15位數的數值使用遮罩進行分類並格式化為百分比。
  • Guid.Type,它會分類 GUID 文字值。

基本類型也可以以 *.Type 格式撰寫。 因此,您可以將 number 寫入為 Number.TyperecordRecord.Type等等。

當您使用上述任何類型時,請注意,就像所有 M 程式代碼一樣,這些類型會區分大小寫。

下表包含這些類型的詳細資訊。

數據類型 描述
any 當值沒有明確的數據類型定義時,any 數據類型是指定的狀態。 any 類型是分類所有值的數據類型。
binary binary 數據類型可用來表示具有二進位格式的任何其他數據。
type 可用來分類其他值的值。 如需詳細資訊,請前往 Types
null 表示沒有值,或不確定或未知狀態的值。
anynonnull 表示不可為 Null 的任何類型。
date 只代表日期(沒有時間部分)。
time 僅表示時間(不包括日期部分)。
datetime 表示日期和時間值。 日期的時間部分會以 1/300 秒(3.33 毫秒)的倍數分數形式儲存。 支援 1900 年至 9999 年之間的日期。
datetimezone 表示具有時區位移的UTC日期和時間。
duration 表示時間長度。 此類型可以從具有正確結果的 datetime 欄位新增或減去。 如需詳細資訊,請移至 Duration
text Unicode 字元數據字串。 可以是以文字格式表示的字串、數位或日期。 字串長度上限為 268,435,456 個 Unicode 字元(其中每個 Unicode 字元都是兩個字節),或 536,870,912 個字節。
logical 布林值為 truefalse
list 在列舉時能產生一系列值的值。 如需詳細資訊,請移至 清單類型清單值
record 已排序的欄位序列。 每個欄位都包含欄位名稱和欄位值。 如需詳細資訊,請移至 記錄類型記錄值
table 已排序的數據列序列,分割成數據行。 如需詳細資訊,請移至 資料表類型資料表值
function 一個將一組參數映射到單一值的值。 如需詳細資訊,請移至 Functions函式類型
number 表示用於數值和算術運算的任何數位。 如需詳細資訊,請前往
Decimal.Type 表示 64 位 (八位元組) 浮點數。 這是最常見的數字類型,且與您通常想像的數字相對應。 雖然設計用來處理分數值的數位,但它也會處理整數。 Decimal.Type 可以處理從 –1.79E +308 到 –2.23E –308、0 和 2.23E –308 到 1.79E + 308 的負值。 例如,34、34.01 和 34.000367063 等數位是有效的十進位數。 Decimal.Type 中可表示的最大精度是 15 位數。 小數分隔符可以在數位中的任何位置發生。 Decimal.Type 對應至 Excel 儲存其數位的方式。 請注意,二進位浮點數不能代表其支援範圍內具有100% 精確度的所有數位。 因此,代表特定十進位數時,可能會發生精確度的次要差異。
Currency.Type 此數據類型具有小數分隔符的固定位置。 小數分隔符的右邊一律有四位數,並允許 19 位數的顯著性。 它可以表示的最大值為 922,337,203,685,477.5807(正數或負數)。 不同於 Decimal.TypeCurrency.Type 一律精確,因此在浮點表示法不精確可能會造成錯誤的情況下很有用。
Percentage.Type 基本上與 Decimal.Type相同,但它具有遮罩,將值格式化為百分比值。
Int8.Type 表示一個8位元(1位元組)的有符號整數值。 因為它是整數,所以在小數點右邊沒有數字。 它允許3位數;介於 –128 和 127 之間的正數或負整數。 如同 Currency.Type一樣,當您需要控制四捨五入時,Int8.Type 會很有用。
Int16.Type 表示16位元(雙位元組)帶符號的整數值。 因為它是整數,所以在小數點右邊沒有數字。 它允許6位數;介於 –32,768 (–2^15) 和 32,767 (2^15-1) 之間的正數或負整數。 如同 Currency.Type一樣,當您需要控制四捨五入時,Int16.Type 會很有用。
Int32.Type 表示32位(四位元組)帶正負號的整數值。 因為它是整數,所以在小數點右邊沒有數字。 它允許10位數;介於 –2,147,483,648(–2^31) 和 2,147,483,647 (2^31–1) 之間的正整數或負整數。 如同 Currency.Type一樣,當您需要控制四捨五入時,Int32.Type 會很有用。
Int64.Type 表示64位(八位元組)帶正負號的整數值。 因為它是整數,所以在小數點右邊沒有數字。 它允許19位數;介於 –9,223,372,036,854,775,808 (–2^63) 和 9,223,372,036,854,775,807(2^63–1) 之間的正整數。 它可以代表各種數值數據類型的最大可能精度。 如同 Currency.Type一樣,當您需要控制四捨五入時,Int64.Type 會很有用。
Byte.Type 表示一個 8 位元的無符號整數值。 因為它是不帶正負號的整數,所以小數點右邊沒有數位,而且只能包含正值。 它允許3位數;介於 0 到 255 之間的正數。
Single.Type 表示單精度浮點數。 其範圍大約為 –3.99 X 1038 到 3.99 X 1038,並具有大約 9 位有效數字的精確度。 它也可以代表正數和負無限大,以及 NaN(不是數位)。
Double.Type 表示雙精度浮點數。 其範圍大約為 –1.7976931348623158 X 10307 到 1.7976931348623158 X 10307,並可支援大約 17 位數的有效數字。 它也可以代表正數和負無限大,以及 NaN(不是數位)。
Guid.Type 代表由 32 個十六進位值組成的 128 位文字值,其採用 <8 十六進位值>-<4 十六進位值>-<4 十六進位值>-<4 十六進位>值<->12 十六進位值,構成 GUID 值。
none 分類無值的數據類型。

其他唯一常用的 *.Type 值是列舉。 如需詳細資訊,請移至 列舉

類型轉換

Power Query M 公式語言包含在類型間進行轉換的公式。 下列是 M 中轉換公式的摘要。

數值

類型轉換 描述
Number.FromText(將文字視為文字) 作為數字 根據文字值傳回數值。
Number.ToText(數字為數位) 作為文字 根據數值傳回文字值。
Number.From(值任意) 作為數位 根據指定的值傳回數值。
Byte.From(值任意) 作為數位 根據指定值傳回 8 位元整數值。
Int8.From(值任意) 作為數位 根據指定值傳回 8 位元整數值。
Int16.From(值任意) 作為數位 根據指定值傳回 16 位元的整數值。
Int32.From(值任意) 作為數位 根據指定的值傳回 32 位元整數值。
Int64.From(值任意) 作為數位 根據指定的值傳回 64 位元整數值。
Single.From(值任意) 作為數位 根據指定的值傳回單精確度數值。
Double.From(值任意) 作為數位 根據指定的值傳回雙精確度數值。
Decimal.From(值任意) 作為數位 根據指定的值傳回十進位數值。
Currency.From(值任意) 作為數位 根據指定的值傳回貨幣數值。
Percentage.From(值任意) 作為數位 從指定的值傳回百分比數位值。

Text

類型轉換 描述
Text.From(任何值) 作為文字 傳回數字、日期、時間、日期時間、日期時區、邏輯、持續時間或二進位值的文字表示。
Guid.From(文字值) 作為文字 傳回指定文字的 GUID 表示。

邏輯

類型轉換 描述
Logical.FromText(文字作為文本) 邏輯處理 從文字值傳回 true 或 false 的邏輯值。
Logical.ToText(作為邏輯來看) 作為文字 從邏輯值傳回文字值。
Logical.From(任何值)作為邏輯運算 從值傳回邏輯值。

日期、時間、日期時間和日期時區

類型轉換 描述
.FromText(text as text) as date、time、datetime 或 datetimezone 從一組日期格式和文化特性值傳回日期、時間、日期時間或日期時區值。
.ToText(date、time、dateTime 或 dateTimeZone as date、time、datetime 或 datetimezone) 作為文字 從日期、時間、日期時間或日期時區值傳回文字值。
.From(value as any) 從值傳回日期、時間、日期時間或日期時區值。
.ToRecord(date、time、dateTime 或 dateTimeZone as date、time、datetime 或 datetimezone) 傳回記錄,其包含日期、時間、日期時間或日期時區值的部分。