Udostępnij za pośrednictwem


Typy i konwersja typów

Dodatek Power Query M używa typów do klasyfikowania wartości w celu uzyskania bardziej ustrukturyzowanego zestawu danych. W tym artykule opisano najczęściej używane typy języka M i sposób konwertowania jednego typu na inny typ.

Często używane typy

Typy danych odnoszą się do dowolnego typu używanego do wyjaśnienia struktury określonych danych. Najczęściej używane typy danych to typy pierwotne. Te typy obejmują:

  • type any, który klasyfikuje dowolną wartość.
  • type null, który klasyfikuje wartość zerową.
  • type logical, który klasyfikuje wartości true i false.
  • type number, który klasyfikuje wartości liczbowe.
  • type time, który klasyfikuje wartości czasu.
  • type date, który klasyfikuje wartości daty.
  • type datetime, która klasyfikuje wartości daty/godziny.
  • type datetimezone, który klasyfikuje wartości daty/godziny/strefy czasowej.
  • type duration, który klasyfikuje wartości czasu trwania.
  • type text, który klasyfikuje wartości tekstowe.
  • type binary, który klasyfikuje wartości binarne.
  • type type, który klasyfikuje wartości typu.
  • type list, który klasyfikuje wartości listy.
  • type record, który klasyfikuje wartości rekordów.
  • type table, który klasyfikuje wartości tabeli.
  • type function, który klasyfikuje wartości funkcji.
  • type anynonnull, który klasyfikuje wszystkie wartości z wyłączeniem wartości null.
  • type none, która klasyfikuje brak wartości.

Aby uzyskać więcej informacji na temat tych typów, przejdź do Types.

Oprócz tych typowych typów danych istnieje również zestaw typów danych korzystających z formatu *.Type. Najczęściej używane typy danych tego formatu to:

  • Byte.Type, który klasyfikuje wartość 8-bitowej liczby.
  • Int8.Type, który klasyfikuje wartość 8-bitowej liczby.
  • Int16.Type, który klasyfikuje 16-bitową wartość liczbową.
  • Int32.Type, który klasyfikuje wartość 32-bitowej liczby.
  • Int64.Type, który klasyfikuje wartość 64-bitowej liczby.
  • Single.Type, który klasyfikuje 9-cyfrową wartość liczb zmiennoprzecinkową.
  • Double.Type, która klasyfikuje 17-cyfrową liczbę zmiennoprzecinkową.
  • Decimal.Type, który klasyfikuje wartość 15-cyfrową liczby zmiennoprzecinkowej.
  • Currency.Type, która klasyfikuje 19-cyfrową wartość liczbową z czterema cyframi po prawej stronie separatora ".".
  • Percentage.Type, która klasyfikuje 15-cyfrową wartość liczbową z maską, aby sformatować wartość jako wartość procentową.
  • Guid.Type, który klasyfikuje wartość tekstową identyfikatora GUID.

Typy pierwotne można również zapisywać w formacie *.Type. W związku z tym można napisać number jako Number.Type, record jako Record.Typeitd.

Podczas używania któregokolwiek z tych typów należy pamiętać, że te typy, podobnie jak cały kod w języku M, rozróżniają wielkość liter.

Poniższa tabela zawiera więcej informacji na temat każdego z tych typów.

Typ danych opis
any Typ danych any jest stanem, gdy wartość nie ma jawnej definicji typu danych. Typ any to typ danych, który klasyfikuje wszystkie wartości.
binary Typ danych binary może służyć do reprezentowania innych danych w formacie binarnym.
type Wartość, która klasyfikuje inne wartości. Aby uzyskać więcej informacji, przejdź do Types.
null Reprezentuje brak wartości lub wartość nieokreślonego lub nieznanego stanu.
anynonnull Reprezentuje dowolny typ, który jest niemożliwy do zniesienia.
date Reprezentuje tylko datę (bez części godziny).
time Reprezentuje tylko czas (bez części daty).
datetime Reprezentuje zarówno wartość daty, jak i godziny. Część czasu daty jest przechowywana jako ułamek do całych wielokrotności 1/300 sekund (3,33 ms). Obsługiwane są daty między latami 1900 i 9999.
datetimezone Reprezentuje datę i godzinę UTC z przesunięciem strefy czasowej.
duration Reprezentuje czas. Ten typ można dodawać lub odejmować od pola datetime z poprawnymi wynikami. Aby uzyskać więcej informacji, przejdź do Duration.
text Ciąg danych znaków Unicode. Może to być ciągi, liczby lub daty reprezentowane w formacie tekstowym. Maksymalna długość ciągu to 268 435 456 znaków Unicode (gdzie każdy znak Unicode to dwa bajty) lub 536 870 912 bajtów.
logical Wartość boolowska true lub false.
list Wartość, która tworzy sekwencję wartości podczas wyliczania. Aby uzyskać więcej informacji, zobacz Typy list i wartości listy .
record Uporządkowana sekwencja pól. Każde pole zawiera nazwę pola i wartość pola. Aby uzyskać więcej informacji, zobacz Typy rekordów i wartości rekordów .
table Uporządkowana sekwencja wierszy podzielonych na kolumny. Aby uzyskać więcej informacji, zobacz Typy tabel i Wartości tabeli.
function Wartość, która odnosi zestaw argumentów do pojedynczej wartości. Aby uzyskać więcej informacji, zobacz Functions i typy funkcji .
number Reprezentuje dowolną liczbę używaną do operacji liczbowych i arytmetycznych. Aby uzyskać więcej informacji, przejdź do .
Decimal.Type Reprezentuje liczbę zmiennoprzecinkową 64-bitową (osiem bajtów). Jest to najbardziej typowy typ liczbowy i odpowiada liczbom, ponieważ zwykle o nich myślisz. Chociaż jest przeznaczony do obsługi liczb z wartościami ułamkowymi, obsługuje również liczby całkowite. Decimal.Type może obsługiwać wartości ujemne od –1,79E +308 do –2,23E –308, 0 i dodatnich z zakresu od 2,23E –308 do 1,79E + 308. Na przykład liczby takie jak 34, 34.01 i 34.000367063 są prawidłowymi liczbami dziesiętowymi. Największa precyzja, którą można przedstawić w Decimal.Type, wynosi 15 cyfr. Separator dziesiętny może wystąpić w dowolnym miejscu liczby. Decimal.Type odpowiada sposobom przechowywania liczb przez program Excel. Należy pamiętać, że liczba zmiennoprzecinkowa binarna nie może reprezentować wszystkich liczb w obsługiwanym zakresie z dokładnością 100%. W związku z tym drobne różnice w precyzji mogą wystąpić podczas reprezentowania niektórych liczb dziesiętnych.
Currency.Type Ten typ danych ma stałą lokalizację separatora dziesiętnego. Separator dziesiętny zawsze ma cztery cyfry po prawej stronie i pozwala na 19 cyfr znaczących. Największą wartością, którą może reprezentować, jest 922 337 203 685 477,5807 (dodatnie lub ujemne). W przeciwieństwie do Decimal.Type, Currency.Type jest zawsze precyzyjny i dlatego jest przydatny w przypadkach, gdy niedokładność notacji zmiennoprzecinkowej może powodować błędy.
Percentage.Type Zasadniczo jest tym samym co Decimal.Type, ale ma maskę do formatowania wartości procentowych.
Int8.Type Reprezentuje 8-bitową (jedno bajtową) podpisaną wartość całkowitą. Ponieważ jest to liczba całkowita, nie ma cyfr po prawej stronie miejsca dziesiętnego. Umożliwia to 3 cyfry; dodatnia lub ujemna liczba całkowita z zakresu od –128 do 127. Podobnie jak w przypadku Currency.Type, Int8.Type może być przydatna w przypadkach, gdy trzeba kontrolować zaokrąglanie.
Int16.Type Reprezentuje 16-bitową (dwu bajtową) podpisaną wartość całkowitą. Ponieważ jest to liczba całkowita, nie ma cyfr po prawej stronie miejsca dziesiętnego. Umożliwia to 6 cyfr; dodatnia lub ujemna liczba całkowita z zakresu od –32 768 (–2^15) do 32 767 (2^15–1). Podobnie jak w przypadku Currency.Type, Int16.Type może być przydatna w przypadkach, gdy trzeba kontrolować zaokrąglanie.
Int32.Type Reprezentuje 32-bitową (cztero bajtową) podpisaną wartość całkowitą. Ponieważ jest to liczba całkowita, nie ma cyfr po prawej stronie miejsca dziesiętnego. Umożliwia to 10 cyfr; dodatnia lub ujemna liczba całkowita z zakresu od –2 147 483 648 (–2^31) do 2 147 483 647 (2^31–1). Podobnie jak w przypadku Currency.Type, Int32.Type może być przydatna w przypadkach, gdy trzeba kontrolować zaokrąglanie.
Int64.Type Reprezentuje 64-bitową (osiem bajtów) podpisaną wartość całkowitą. Ponieważ jest to liczba całkowita, nie ma cyfr po prawej stronie miejsca dziesiętnego. Umożliwia to 19 cyfr; dodatnia lub ujemna liczba całkowita z zakresu od –9 223 372 036 854 775 808 (–2^63) do 9 223 372 036 854 775 807 (2^63–1). Może reprezentować największą możliwą precyzję różnych typów danych liczbowych. Podobnie jak w przypadku Currency.Type, Int64.Type może być przydatna w przypadkach, gdy trzeba kontrolować zaokrąglanie.
Byte.Type Reprezentuje 8-bitową (jedno bajtową) niepodpisaną wartość całkowitą. Ponieważ jest to niepodpisane liczby całkowite, nie ma cyfr z prawej strony miejsca dziesiętnego i może zawierać tylko wartości dodatnie. Umożliwia to 3 cyfry; liczba dodatnia z zakresu od 0 do 255.
Single.Type Reprezentuje liczbę zmiennoprzecinkową o pojedynczej precyzji. Ma przybliżony zakres –3,99 X 1038 do 3,99 X 1038 i obsługuje około 9 cyfr dokładności. Może również reprezentować nieskończoność dodatnią i ujemną oraz NaN (Nie liczba).
Double.Type Reprezentuje liczbę zmiennoprzecinkową o podwójnej precyzji. Ma przybliżony zakres –1,7976931348623158 X 10307 do 1,7976931348623158 X 10307 i obsługuje około 17 cyfr dokładności. Może również reprezentować nieskończoność dodatnią i ujemną oraz NaN (Nie liczba).
Guid.Type Reprezentuje 128-bitową wartość tekstową składającą się z 32 wartości szesnastkowych, używając formatu <8 wartości szesnastkowych>-<4 wartości szesnastkowe>-<4 wartości szesnastkowe>-<4 wartości szesnastkowe>-<12 wartości szesnastkowych>, które tworzą wartość identyfikatora GUID.
none Typ danych, który nie zawiera żadnych wartości.

Jedynymi często używanymi wartościami *.Type są wyliczenia. Aby uzyskać więcej informacji, przejdź do Wyliczenia.

Konwersja typu

Język formuł Power Query M ma formuły do konwersji między typami. Poniżej przedstawiono podsumowanie formuł konwersji w języku M.

Liczba

Konwersja typu opis
Number.FromText(tekst jako tekst) jako liczba Zwraca wartość liczbową z wartości tekstowej.
Number.ToText(liczba jako liczba) jako tekst Zwraca wartość tekstową z wartości liczbowej.
Number.From(wartość dowolna) jako liczba Zwraca wartość liczbową z wartości.
Byte.From(wartość dowolna) jako liczba Zwraca wartość 8-bitowej liczby całkowitej z danej wartości.
Int8.From(wartość dowolna) jako liczba Zwraca wartość 8-bitowej liczby całkowitej z danej wartości.
Int16.From(wartość dowolna) jako liczba Zwraca 16-bitową wartość liczb całkowitych z danej wartości.
Int32.From(wartość dowolna) jako liczba Zwraca wartość liczby całkowitej 32-bitowej z danej wartości.
Int64.From(wartość dowolna) jako liczba Zwraca wartość 64-bitowej liczby całkowitej z danej wartości.
Single.From(wartość dowolna) jako liczba Zwraca pojedynczą wartość liczbową z danej wartości.
Double.From(wartość dowolna) jako liczba Zwraca wartość podwójnej liczby z danej wartości.
Decimal.From(wartość dowolna) jako liczba Zwraca wartość liczby dziesiętnej z danej wartości.
Currency.From(wartość dowolna) jako liczba Zwraca wartość liczby waluty z danej wartości.
Percentage.From(wartość dowolna) jako liczba Zwraca wartość procentową liczby z danej wartości.

Text

Konwersja typu opis
Text.From(wartość dowolna) jako tekst Zwraca reprezentację tekstową liczby, daty, godziny, daty/godziny, daty/godziny, strefy czasowej, logicznej, czasu trwania lub wartości binarnej.
Guid.From(wartość jako tekst) jako tekst Zwraca reprezentację identyfikatora GUID określonego tekstu.

Wartość logiczna

Konwersja typu opis
Logical.FromText(tekst jako tekst) jako logiczny Zwraca wartość logiczną true lub false z wartości tekstowej.
Logical.ToText(logiczne jako logiczne) jako tekst Zwraca wartość tekstową z wartości logicznej.
Logical.From(dowolna wartość) jako logiczna Zwraca wartość logiczną z wartości.

Date, Time, DateTime i DateTimeZone

Konwersja typu opis
. FromText(tekst jako tekst) jako data, godzina, data/godzina lub data/strefa czasowa Zwraca wartość daty, godziny, daty/godziny lub daty/godziny/strefy czasowej z zestawu formatów daty i wartości kultury.
. ToText(date, time, dateTime lub dateTimeZone jako data, godzina, data/godzina lub data/strefa czasowa) jako tekst Zwraca wartość tekstową z wartości daty, godziny, daty/godziny lub daty/godziny/ strefy czasowej.
. From(wartość jako dowolna) Zwraca wartość daty, godziny, daty/godziny lub daty/godziny/strefy czasowej z wartości.
. ToRecord(data, godzina, data/godzina lub dataTimeZone jako data, godzina, data/godzina lub data/strefa czasowa) Zwraca rekord zawierający części wartości daty, godziny, daty/godziny lub strefy czasowej daty/godziny.