Поделиться через


Типы и преобразование типов

Power Query M использует типы для классификации значений для более структурированного набора данных. В этой статье описаны наиболее часто используемые типы M и способы преобразования одного типа в другой тип.

Часто используемые типы

Типы данных относятся к любому типу, который используется для уточнения структуры конкретных данных. Наиболее часто используемые типы данных — это примитивные типы. К этим типам относятся:

  • type any, который классифицирует любое значение.
  • type nullклассифицирует значение NULL.
  • type logical, который классифицирует значения true и false.
  • type number, который классифицирует значения чисел.
  • type time, который классифицирует значения времени.
  • type date, который классифицирует значения дат.
  • type datetime, который классифицирует значения даты и времени.
  • type datetimezone, который классифицирует значения временной зоны и даты.
  • type duration, который классифицирует значения длительности.
  • type text, который классифицирует текстовые значения.
  • type binary, который классифицирует двоичные значения.
  • type type, который служит для классификации значений типов.
  • type list, который классифицирует значения списка.
  • type record, который классифицирует значения записей.
  • type table, который классифицирует табличные значения.
  • type function, который классифицирует значения функций.
  • type anynonnull, который классифицирует все значения, за исключением null.
  • type none, который не классифицирует значения.

Дополнительные сведения об этих типах см. в типах.

Помимо этих распространенных типов данных, существует также набор типов данных с использованием формата *.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.Type, record как Record.Typeи т. д.

При использовании любого из этих типов следует учитывать, что, как и весь код M, эти типы чувствительны к регистру.

В следующей таблице содержатся дополнительные сведения о каждом из этих типов.

Тип данных Description
any Тип данных any — это состояние, заданное, если значение не имеет явного определения типа данных. Тип any — это тип данных, который классифицирует все значения.
binary Тип данных binary можно использовать для представления других данных с двоичным форматом.
type Значение, которое классифицирует другие значения. Дополнительные сведения см. в типов.
null Представляет отсутствие значения или значения неопределенного или неизвестного состояния.
anynonnull Представляет любой тип, который является ненуклюемым.
date Представляет только дату (без части времени).
time Представляет только время (нет части даты).
datetime Представляет одновременно дату и время. Временная часть даты хранится в виде дроби от целых кратных 1/300 секунды (3,33 мс). Поддерживаются даты между 1900 и 9999 годами.
datetimezone Представляет дату и время в формате UTC со смещением часового пояса.
duration Представляет длительность времени. Этот тип можно добавить или вычесть из поля datetime с правильными результатами. Дополнительные сведения см. в длительности.
text Строка данных символов Юникода. Может быть строками, числами или датами, представленными в текстовом формате. Максимальная длина строки составляет 268 435 456 символов Юникода (где каждый символ Юникода составляет два байта) или 536 870 912 байт.
logical Логическое значение true или false.
list Значение, которое создает последовательность значений при перечислении. Дополнительные сведения см. в типах списков и в значениях списков.
record Упорядоченная последовательность полей. Каждое поле содержит имя поля и значение поля. Дополнительные сведения см. в типах записей и значениях записей.
table Упорядоченная последовательность строк, разделенная на столбцы. Дополнительные сведения см. в разделах Типы таблиц и Значения таблиц.
function Значение, которое сопоставляет набор аргументов с одним значением. Дополнительные сведения см. в Функции и Типы функций.
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.Type, Currency.Type всегда точный и, таким образом, полезен в случаях, когда отсутствие нотации с плавающей запятой может привести к ошибкам.
Percentage.Type По сути то же, что и Decimal.Type, но он имеет маску для форматирования значений в виде процентного значения.
Int8.Type Представляет 8-разрядное (однобайтовое) целое число со знаком. Так как это целое число, оно не имеет цифр справа от десятичного разряда. Число может содержать до 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 Представляет 128-разрядное текстовое значение, состоящее из 32 шестнадцатеричных значений с помощью форм-фактора <8 шестнадцатеричных значений>-<4 шестнадцатеричных значений>-<4 шестнадцатеричных значений>-<4 шестнадцатеричных значений>-<12 шестнадцатеричных значений>, составляющих значение GUID.
none Тип данных, который не представляет никаких значений.

Единственными другими часто используемыми значениями *.Type являются перечисления. Дополнительную информацию см. в перечислениях .

Преобразование типов

Язык формул Power Query M содержит формулы для преобразования между типами. Ниже приведена сводка формул преобразования в M.

Число

Преобразование типов Description
Number.FromText(текст в виде текста) как число Возвращает число из текстового значения.
Number.ToText(число как текст) Возвращает текстовое значение из числа.
Number.From(значение типа any) в формате числа Возвращает числовое значение из значения.
Byte.From(значение типа any) в формате числа Возвращает 8-разрядное целое число по заданному значению.
Int8.From(значение типа any) в формате числа Возвращает 8-разрядное целое число по заданному значению.
Int16.From(значение типа any) в формате числа Возвращает 16-разрядное целочисленное значение из заданного значения.
Int32.From(значение типа any) в формате числа Возвращает 32-разрядное целочисленное значение из заданного значения.
Int64.From(значение типа any) в формате числа Возвращает 64-разрядное целое число из заданного значения.
Single.From(значение типа any) в формате числа Возвращает одно число из заданного значения.
Double.From(значение типа any) в формате числа Возвращает значение двойного числа из заданного значения.
Decimal.From(значение типа any) в формате числа Возвращает десятичное число из заданного значения.
Currency.From(значение типа any) в формате числа Возвращает значение номера валюты из заданного значения.
Percentage.From(значение типа any) в формате числа Возвращает значение процентного числа из заданного значения.

Текст

Преобразование типов Description
Text.From(любое значение) в виде текста Возвращает текстовое представление числа, даты, времени, даты и времени, даты и времени, логического, длительности или двоичного значения.
Guid.From(значение в виде текста) в виде текста Возвращает представление GUID указанного текста.

Логический

Преобразование типов Description
Logical.FromText(текст в виде текста) в качестве логического Возвращает логическое значение true или false из текстового значения.
Logical.ToText(логический как логический) в виде текста Возвращает текстовое значение из логического значения.
Logical.From(значение как любое) в качестве логического Возвращает логическое значение из значения.

Date, Time, DateTime и DateTimeZone

Преобразование типов Description
. FromText(text as text) в виде даты, времени, даты и времени или даты и времени Возвращает значение даты, времени, даты и даты или даты и даты и даты из набора форматов даты и региональных параметров.
. ToText(date, time, dateTime или dateTimeZone в виде даты, времени, даты и даты и даты) в виде текста Возвращает текстовое значение из значения даты, времени, даты и времени или даты и времени.
. From(value as any) Возвращает значение даты, времени, даты и времени или даты и времени из значения.
. ToRecord(date, time, dateTime или dateTimeZone в качестве даты, времени, даты и даты и даты) Возвращает запись, содержащую части значения даты, времени, даты и времени или даты и времени.