Udostępnij przez


Typy danych obsługiwane w modelach tabelarycznych

Dotyczy: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

W tym artykule opisano typy danych, które mogą być używane w modelach tabelarycznych, oraz omówiono niejawną konwersję typów danych, gdy dane są obliczane lub używane w formule języka DAX (Data Analysis Expressions).

Typy danych używane w modelach tabelarycznych

Podczas importowania danych lub używania wartości w formule, nawet jeśli oryginalne źródło danych zawiera inny typ danych, dane są konwertowane na jeden z następujących typów danych. Wartości wynikające z formuł używają również tych typów danych.

Ogólnie rzecz biorąc, te typy danych są implementowane w celu umożliwienia dokładnych obliczeń w kolumnach obliczeniowych, a w celu zapewnienia spójności te same ograniczenia dotyczą reszty danych w modelach.

Formaty używane dla liczb, waluty, dat i godzin powinny być zgodne z formatem ustawień regionalnych określonych na kliencie używanym do pracy z danymi modelu. Opcje formatowania w modelu umożliwiają kontrolowanie sposobu wyświetlania wartości.

Typ danych w modelu Typ danych w języku DAX Opis
Liczba całkowita 64-bitowa liczba całkowita (ośmiobajtowa)

Uwaga:
Formuły języka DAX nie obsługują typów danych, które są zbyt małe, aby przechowywać minimalną wartość wymienioną w opisie.
Liczby, które nie mają miejsc dziesiętnych. Liczby całkowite mogą być liczbami dodatnimi lub ujemnymi, ale muszą być liczbami całkowitymi z zakresu od -9 223 372 036 854 775 807 (-2^63+1) do 9 223 372 036 854 775 806 (2^63-2).
Liczba dziesiętna 64-bitowa rzeczywista liczba (czyli osiem bajtów)

Uwaga:
Formuły języka DAX nie obsługują typów danych, które są zbyt małe, aby przechowywać minimalną wartość wymienioną w opisie.
Liczby rzeczywiste to liczby, które mogą mieć miejsca dziesiętne. Liczby rzeczywiste obejmują szeroki zakres wartości:

Wartości ujemne z -1,79E +308 do -2,23E -308

Zero

Wartości dodatnie od 2,23E -308 do 1,79E + 308

Jednak liczba cyfr znaczących jest ograniczona do 15 cyfr dziesiętnych.
Boolean Boolean Wartość albo Prawda, albo Fałsz.
Tekst Sznurek Ciąg danych znaków Unicode. Może to być ciągi, liczby lub daty reprezentowane w formacie tekstowym. Obowiązujący maksymalny rozmiar ciągu podlega limitowi 32767 bajtów.
Dwójkowy Sznurek Nieustrukturyzowane dane binarne, na przykład obrazy. Kolumny o tym typie danych mają ograniczoną funkcjonalność w języku DAX. Efektywny maksymalny rozmiar wartości danych binarnych podlega limitowi 67108864 bajtów.
Data kalendarzowa Data i godzina Daty i godziny w zaakceptowanej reprezentacji daty i godziny.

Prawidłowe daty to wszystkie daty po 1 marca 1900 r.
Waluta Waluta Typ danych waluty umożliwia wartości z zakresu od -922 337 203 685 477,5807 do 922 337 203 685 477,5806 z czterema cyframi dziesiętnymi o stałej dokładności.
Wariant Wariant Służy do wyrażeń języka DAX, takich jak miary DAX, które mogą zwracać różne typy danych. Na przykład miara języka DAX zwracająca liczbę całkowitą lub ciąg będzie typu wariant.
N/A Pusty Wartość pusta to typ danych w języku DAX reprezentujący i zastępujący wartości null SQL. Możesz utworzyć pustą wartość za pomocą funkcji BLANK i sprawdzić, czy są puste wartości, używając funkcji logicznej ISBLANK.

* Jeśli próbujesz zaimportować dane zawierające duże wartości liczbowe, importowanie może zakończyć się niepowodzeniem z powodu następującego błędu:

Błąd bazy danych w pamięci: kolumna '<nazwa kolumny>' w tabeli '<nazwa tabeli>' zawiera wartość '1.7976931348623157e+308', która nie jest obsługiwana. Operacja została anulowana.

Ten błąd występuje, ponieważ projektant modelu używa tej wartości do reprezentowania wartości null. Wartości na poniższej liście są synonimami wymienionej wcześniej wartości null:

Wartość
9223372036854775807
-9223372036854775808
1.7976931348623158e+308
-1.7976931348623158e+308

Usuń wartość z danych i spróbuj zaimportować ją ponownie.

Uwaga

Nie można zaimportować z kolumny varchar(max), która zawiera długość ciągu o długości przekraczającej 131 072 znaków.

Typ danych tabeli

Ponadto DAX używa typu danych tabeli. Ten typ danych jest używany przez język DAX w wielu funkcjach, takich jak agregacje i obliczenia związane z inteligencją czasową. Niektóre funkcje wymagają odwołania do tabeli; inne funkcje zwracają tabelę, która może być następnie używana jako dane wejściowe do innych funkcji. W niektórych funkcjach, które wymagają tabeli jako danych wejściowych, można określić wyrażenie, które daje w wyniku tabelę; w przypadku niektórych funkcji wymagane jest odwołanie do tabeli podstawowej. Aby uzyskać informacje na temat wymagań określonych funkcji, zobacz Dokumentacja funkcji języka DAX.

Niejawna i jawna konwersja typu danych w formułach języka DAX

Każda funkcja języka DAX ma określone wymagania dotyczące typów danych, które są używane jako dane wejściowe i wyjściowe. Na przykład niektóre funkcje wymagają liczb całkowitych dla niektórych argumentów i dat dla innych; inne funkcje wymagają tekstu lub tabel.

Jeśli dane w kolumnie określonej jako argument są niezgodne z typem danych wymaganym przez funkcję, w wielu przypadkach język DAX zwraca błąd. Jednak w miarę możliwości język DAX próbuje niejawnie przekonwertować dane na wymagany typ danych. Na przykład:

  • Możesz wpisać liczbę, na przykład "123", jako ciąg. Język DAX analizuje ciąg i stara się określić go jako typ danych liczbowych.

  • Możesz dodać wartość TRUE + 1 i uzyskać wynik 2, ponieważ wartość TRUE jest niejawnie konwertowana na liczbę 1, a operacja 1+1 jest wykonywana.

  • Jeśli dodasz wartości w dwóch kolumnach, a jedna wartość będzie reprezentowana jako tekst ("12"), a druga jako liczba (12), język DAX niejawnie konwertuje ciąg na liczbę, a następnie wykonuje dodanie wyniku liczbowego. Następujące wyrażenie zwraca wartość 44: = "22" + 22

  • Jeśli próbujesz połączyć dwie liczby, są one prezentowane jako ciągi, a następnie łączone. Następujące wyrażenie zwraca wartość "1234": = 12 i 34

Poniższa tabela zawiera podsumowanie niejawnych konwersji typów danych wykonywanych w formułach. Ogólnie rzecz biorąc, semantyczny projektant modelu zachowuje się jak program Microsoft Excel i wykonuje niejawne konwersje, gdy jest to możliwe, jeśli jest to wymagane przez określoną operację.

Tabela niejawnych konwersji danych

Typ wykonywanej konwersji jest określany przez operator, który rzutuje wymagane wartości przed wykonaniem żądanej operacji. Te tabele zawierają listę operatorów i wskazują konwersję wykonywaną na każdym typie danych w kolumnie, gdy jest ona sparowana z typem danych w wierszu przecinającym się.

Uwaga

Typy danych tekstowych nie są uwzględniane w tych tabelach. Gdy liczba jest reprezentowana jako w formacie tekstowym, w niektórych przypadkach projektant modelu próbuje określić typ liczbowy i przedstawić go jako liczbę.

Dodawanie (+)

LICZBA CAŁKOWITA WALUTA PRAWDZIWY Data i godzina
LICZBA CAŁKOWITA LICZBA CAŁKOWITA WALUTA PRAWDZIWY Data i godzina
waluty WALUTA WALUTA PRAWDZIWY Data i godzina
PRAWDZIWY PRAWDZIWY PRAWDZIWY PRAWDZIWY Data i godzina
data i godzina Data i godzina Data i godzina Data i godzina Data i godzina

Jeśli na przykład liczba rzeczywista jest używana w operacji dodawania w połączeniu z danymi walutowymi, obie wartości są konwertowane na RZECZYWISTE, a wynik jest zwracany jako REAL.

Odejmowanie (-)

W poniższej tabeli nagłówek wiersza to minuend (lewa strona), a nagłówek kolumny jest odejmowany (po prawej stronie):

LICZBA CAŁKOWITA WALUTA PRAWDZIWY Data i godzina
LICZBA CAŁKOWITA LICZBA CAŁKOWITA WALUTA PRAWDZIWY PRAWDZIWY
waluty WALUTA WALUTA PRAWDZIWY PRAWDZIWY
PRAWDZIWY PRAWDZIWY PRAWDZIWY PRAWDZIWY PRAWDZIWY
data i godzina Data i godzina Data i godzina Data i godzina Data i godzina

Jeśli na przykład data jest używana w operacji odejmowania z dowolnym innym typem danych, obie wartości są konwertowane na daty, a wartość zwracana również będzie datą.

Uwaga

Modele tabelaryczne obsługują również operator jednoargumentowy — (ujemny), ale ten operator nie zmienia typu danych operandu.

Mnożenie (*)

LICZBA CAŁKOWITA WALUTA PRAWDZIWY Data i godzina
LICZBA CAŁKOWITA LICZBA CAŁKOWITA WALUTA PRAWDZIWY LICZBA CAŁKOWITA
waluty WALUTA PRAWDZIWY WALUTA WALUTA
PRAWDZIWY PRAWDZIWY WALUTA PRAWDZIWY PRAWDZIWY

Jeśli na przykład liczba całkowita jest połączona z liczbą rzeczywistą w operacji mnożenia, obie liczby są konwertowane na liczby rzeczywiste, a wartość zwracana jest również RZECZYWISTĄ.

Dzielenie (/)

W poniższej tabeli nagłówek wiersza jest licznikiem, a nagłówek kolumny jest mianownikiem: (Wiersz/kolumna)

LICZBA CAŁKOWITA WALUTA PRAWDZIWY Data i godzina
LICZBA CAŁKOWITA PRAWDZIWY WALUTA PRAWDZIWY PRAWDZIWY
waluty WALUTA PRAWDZIWY WALUTA PRAWDZIWY
PRAWDZIWY PRAWDZIWY PRAWDZIWY PRAWDZIWY PRAWDZIWY
data i godzina PRAWDZIWY PRAWDZIWY PRAWDZIWY PRAWDZIWY

Jeśli na przykład liczba całkowita jest połączona z wartością waluty w operacji dzielenia, obie wartości są konwertowane na liczby rzeczywiste, a wynik jest również liczbą rzeczywistą.

Operatory porównania

Obsługiwany jest tylko ograniczony zestaw mieszanych kombinacji typów danych dla operacji porównania. Aby dowiedzieć się więcej, zobacz Referencja operatorów DAX.

Obsługa wartości pustych, pustych ciągów i wartości zerowych

Poniższa tabela zawiera podsumowanie różnic między językiem DAX i programem Microsoft Excel w sposobie obsługi pustych elementów.

Wyrażenie DAX Excel
Puste + Puste PUSTY 0 (zero)
PUSTE +5 5 5
PUSTE * 5 PUSTY 0 (zero)
5/PUSTE Nieskończoność Błąd
0/PUSTE Nan Błąd
PUSTE/PUSTE PUSTY Błąd
FAŁSZ LUB PUSTE FAŁSZYWY FAŁSZYWY
FAŁSZ I PUSTO FAŁSZYWY FAŁSZYWY
PRAWDA LUB PUSTA PRAWIDŁOWE PRAWIDŁOWE
TRUE I BLANK FAŁSZYWY PRAWIDŁOWE
PUSTE LUB NIEOKREŚLONE PUSTY Błąd
PUSTE I PUSTKA PUSTY Błąd

Aby uzyskać szczegółowe informacje na temat sposobu obsługi wartości pustych przez określoną funkcję lub operator, zobacz poszczególne tematy dla każdej funkcji języka DAX w sekcji Dokumentacja funkcji języka DAX.