W modelu danych z każdą kolumną jest skojarzony typ danych określający typ danych, które mogą być przechowywane w kolumnie: liczby całkowite, liczby dziesiętne, tekst, dane finansowe, daty i godziny itp. Typ danych określa również, jakiego rodzaju operacje można wykonywać na kolumnie, a także ilość pamięci wymaganej do przechowywania wartości w kolumnie.
Jeśli używasz dodatku Power Pivot, możesz zmienić typ danych kolumny. Może to być konieczne, jeśli kolumna dat została zaimportowana jako ciąg, ale musi to być coś innego. Aby uzyskać więcej informacji, zobacz Ustawianie typu danych kolumny w dodatku Power Pivot.
W tym artykule
Konwersja niejawnych i jawnych typów danych w formułach języka DAX
Obsługa wartości pustych, pustych ciągów i wartości zerowych
Podsumowanie typów danych
W poniższej tabeli wymieniono typy danych obsługiwane w modelu danych. W przypadku 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 tych typów. Wartości wynikające z formuł również używają tych typów danych.
| Typ danych w programie Excel | Typ danych w języku DAX | Opis |
|---|---|---|
| Pełna liczba | 64-bitowa (ośmiobajtowa) liczba całkowita 1, 2 | Liczby, które nie mają miejsc dziesiętnych. Liczby całkowite mogą być liczbami dodatnimi lub ujemnymi, ale muszą być liczbami całkowitymi z przedziału od -9 223 372 036 854 775 808 (-2^63) do 9 223 372 036 854 775 807 (2^63-1). |
| Liczba dziesiętna | 64-bitowa (ośmiobajtowa) liczba rzeczywista 1, 2 | Liczby rzeczywiste to liczby, które mogą mieć miejsca dziesiętne. Liczby rzeczywiste obejmują szeroki zakres wartości: Ujemne wartości od -1,79E +308 do -2,23E -308 Zero Wartości dodatnie od 2,23E -308 do 1,79E + 308 Liczba cyfr znaczących jest jednak ograniczona do 15 cyfr dziesiętnych. |
| PRAWDA/FAŁSZ | wartość logiczna | Wartość Prawda lub Fałsz. |
| Text (Tekst) | Ciąg | Ciąg danych znaku Unicode. Mogą to być ciągi, liczby lub daty reprezentowane w formacie tekstowym. Maksymalna długość ciągu wynosi 268 435 456 znaków Unicode (256 megaznaków) lub 536 870 912 bajtów. |
| Data | Data/godzina | Daty i godziny w akceptowanej reprezentacji daty i godziny. Prawidłowe daty to wszystkie daty po 1 stycznia 1900 roku. |
| Waluta | Waluta | Typ danych Waluta dopuszcza wartości z zakresu od -922 337 203 685 477,5808 do 922 337 203 685 477,5807 z czterema cyframi dziesiętnymi o stałej precyzji. |
| Nie dotyczy | Pusty | Pusta to typ danych w języku DAX, który reprezentuje i zamienia wartości null języka SQL. Za pomocą funkcji PUSTE można utworzyć puste wartości, a następnie sprawdzić wartości puste przy użyciu funkcji logicznej CZY.PUSTA. |
1 Formuły języka DAX nie obsługują typów danych mniejszych niż wymienione w tabeli.
2 Próba importowania danych zawierających bardzo duże wartości liczbowe może zakończyć się niepowodzeniem z powodu następującego błędu:
Błąd bazy danych w pamięci: Kolumna "<nazwa> kolumny" tabeli<> tabeli zawiera wartość "1,7976931348623157e+308", która nie jest obsługiwana. Operacja została anulowana.
Ten błąd występuje, ponieważ dodatek Power Pivot używa tej wartości do reprezentowania wartości null. Wartości na poniższej liście są synonimami wartości null:
| Value (Wartość) |
|---|
| 9223372036854775807 |
| -9223372036854775808 |
| 1,7976931348623158e+308 |
| 2.2250738585072014E-308 |
Usuń wartość z danych i spróbuj zaimportować ponownie.
Typ danych tabeli
Język DAX używa typu danych tabela w wielu funkcjach, takich jak agregacje i obliczenia analizy czasowej. 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 dla innych funkcji. W niektórych funkcjach, które wymagają tabeli jako danych wejściowych, można określić wyrażenie, którego wynikiem jest tabela; W przypadku niektórych funkcji jest wymagane odwołanie do tabeli podstawowej. Aby uzyskać informacje o wymaganiach poszczególnych funkcji, zobacz Dokumentacja funkcji języka DAX.
Konwersja niejawnych i jawnych typów danych w formułach języka DAX
Każda funkcja języka DAX ma określone wymagania dotyczące typów danych używanych jako dane wejściowe i wyjściowe. Na przykład niektóre funkcje wymagają liczb całkowitych dla jednych argumentów, a dat dla innych; Inne funkcje wymagają tekstu lub tabel.
Jeśli dane w kolumnie wskazanej jako argument są niezgodne z typem danych wymaganym przez funkcję, język DAX w wielu przypadkach zwraca błąd. Jednak tam, gdzie jest to możliwe, język DAX będzie próbował niejawnie przekonwertować dane na wymagany typ danych. Na przykład:
- Możesz wpisać datę jako ciąg, a język DAX przeanalizuje ten ciąg i podejmie próbę rzutowania go jako jednego z formatów daty i godziny systemu Windows.
- Możesz dodać wartość PRAWDA + 1 i otrzymać wynik 2, ponieważ wartość PRAWDA jest niejawnie konwertowana na liczbę 1 i jest wykonywana operacja 1+1.
- Jeśli dodasz wartości w dwóch kolumnach, z których jedna będzie przedstawiona jako tekst ("12"), a druga jako liczba (12), język DAX niejawnie przekonwertuje ciąg na liczbę, a następnie wykona dodawanie dla wyniku liczbowego. Następujące wyrażenie zwraca wartość 44: = "22" + 22
- Jeśli spróbujesz połączyć dwie liczby, program Excel przedstawi je jako ciągi, a następnie połączy je. Następujące wyrażenie zwraca wartość "1234": = 12 & 34
W poniższej tabeli podsumowano niejawne konwersje typów danych wykonywane w formułach. Program Excel wykonuje konwersje niejawne, gdy tylko jest to możliwe, zgodnie z wymaganiami określonej operacji.
Tabela konwersji danych niejawnych
Typ wykonywanej konwersji jest określany przez operatora, który emituje wymagane wartości przed wykonaniem żądanej operacji. W tych tabelach wymieniono operatory i wskazano konwersję wykonywaną dla każdego typu danych w kolumnie, gdy jest on sparowany z typem danych w przecinającym się wierszu.
Uwaga
Typy danych tekstowych nie są uwzględnione w tych tabelach. Gdy liczba jest reprezentowana w formacie tekstowym, w niektórych przypadkach dodatek Power Pivot podejmie próbę określenia typu liczby i przedstawi ją jako liczbę.
Dodawanie (+)
| Operator (+) | INTEGER | CURRENCY | REAL | Data/godzina |
|---|---|---|---|---|
| INTEGER | INTEGER | CURRENCY | REAL | Data/godzina |
| CURRENCY | CURRENCY | CURRENCY | REAL | Data/godzina |
| REAL | REAL | REAL | REAL | Data/godzina |
| Data/godzina | Data/godzina | Data/godzina | Data/godzina | Data/godzina |
Jeśli na przykład liczba rzeczywista zostanie użyta w operacji dodawania w połączeniu z danymi walutowymi, obie wartości zostaną przekonwertowane na funkcję REAL, a wynik zostanie zwrócony jako REAL.
Odejmowanie (-)
W poniższej tabeli nagłówek wiersza to nagłówek minimalny (lewa strona), a nagłówek kolumny to odejmownik (po prawej stronie).
| Operator (-) | INTEGER | CURRENCY | REAL | Data/godzina |
|---|---|---|---|---|
| INTEGER | INTEGER | CURRENCY | REAL | REAL |
| CURRENCY | CURRENCY | CURRENCY | REAL | REAL |
| REAL | REAL | REAL | REAL | REAL |
| Data/godzina | Data/godzina | Data/godzina | Data/godzina | Data/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 zwracana wartość również jest datą.
Uwaga
Modele danych obsługują również operator jednoargumentowy - (ujemny), ale ten operator nie zmienia typu danych operandu.
Mnożenie (*)
| Operator (*) | INTEGER | CURRENCY | REAL | Data/godzina |
|---|---|---|---|---|
| INTEGER | INTEGER | CURRENCY | REAL | INTEGER |
| CURRENCY | CURRENCY | REAL | CURRENCY | CURRENCY |
| REAL | REAL | CURRENCY | REAL | REAL |
Jeśli na przykład liczba całkowita zostanie połączona z liczbą rzeczywistą w operacji mnożenia, obie liczby zostaną przekonwertowane na liczby rzeczywiste, a zwrócona wartość również będzie równa REAL.
Dzielenie (/)
W poniższej tabeli nagłówek wiersza jest licznikiem, a nagłówek kolumny jest mianownikiem.
| Operator (/) (Wiersz/kolumna) |
INTEGER | CURRENCY | REAL | Data/godzina |
|---|---|---|---|---|
| INTEGER | REAL | CURRENCY | REAL | REAL |
| CURRENCY | CURRENCY | REAL | CURRENCY | REAL |
| REAL | REAL | REAL | REAL | REAL |
| Data/godzina | REAL | REAL | REAL | REAL |
Jeśli na przykład w operacji dzielenia liczba całkowita zostanie połączona z wartością walutową, obie wartości zostaną przekonwertowane na liczby rzeczywiste, a wynik również będzie liczbą rzeczywistą.
Operatory porównania
W wyrażeniach porównań wartości logiczne są uznawane za większe niż wartości ciągów, a wartości ciągów są uważane za większe niż wartości liczbowe lub wartości daty/godziny; Przyjmuje się, że liczby oraz wartości daty/godziny mają taką samą pozycję. Nie są wykonywane żadne konwersje niejawne dla wartości logicznych lub ciągów; Wartość pusta lub wartość pusta jest konwertowana na 0/""/fałsz w zależności od typu danych drugiej porównywanej wartości.
Następujące wyrażenia języka DAX ilustrują to zachowanie:
=JEŻELI(FAŁSZ()>"prawda";"Wyrażenie jest prawdziwe"; "Wyrażenie jest fałszywe"), zwraca wartość "Wyrażenie jest prawdziwe"
=JEŻELI("12">12;"Wyrażenie jest prawdziwe"; "Wyrażenie jest fałszywe"), zwraca wartość "Wyrażenie jest prawdziwe".
=JEŻELI("12"=12;"Wyrażenie jest prawdziwe"; "Wyrażenie jest fałszywe"), zwraca wartość "Wyrażenie jest fałszywe"
Konwersje są wykonywane niejawnie w przypadku typów liczbowych lub daty/godziny, zgodnie z opisem w poniższej tabeli:
| Operator porównania | INTEGER | CURRENCY | REAL | Data/godzina |
|---|---|---|---|---|
| INTEGER | INTEGER | CURRENCY | REAL | REAL |
| CURRENCY | CURRENCY | CURRENCY | REAL | REAL |
| REAL | REAL | REAL | REAL | REAL |
| Data/godzina | REAL | REAL | REAL | Data/godzina |
Obsługa wartości pustych, pustych ciągów i wartości zerowych
W języku DAX wartość null, pusta wartość, pusta komórka lub brakująca wartość są reprezentowane przez ten sam nowy typ wartości — wartość pustą. Puste komórki można również wygenerować przy użyciu funkcji BLANK lub wygenerować wartości puste przy użyciu funkcji ISBLANK.
Sposób obsługi pustych miejsc w operacjach, takich jak dodawanie lub łączenie, zależy od danej funkcji. W poniższej tabeli podsumowano różnice między formułami języka DAX i programu Microsoft Excel dotyczące sposobu obsługi wartości pustych.
| Expression | Język DAX | Excel |
|---|---|---|
| PUSTE + PUSTE | BLANK (Puste) | 0 (zero) |
| PUSTE +5 | 5 | 5 |
| PUSTE * 5 | BLANK (Puste) | 0 (zero) |
| 5/BLANK | Nieskończoność | Błąd |
| 0/PUSTE | NaN | Błąd |
| PUSTE/PUSTE | BLANK (Puste) | Błąd |
| FAŁSZ LUB WARTOŚĆ PUSTA | FALSE | FALSE |
| FALSE AND BLANK | FALSE | FALSE |
| PRAWDA LUB PUSTE | TRUE | TRUE |
| PRAWDA I PUSTE | FAŁSZ | PRAWDA |
| PUSTE LUB PUSTE | BLANK (Puste) | Błąd |
| PUSTE I PUSTE | BLANK (Puste) | Błąd |
Aby uzyskać szczegółowe informacje na temat sposobu obsługi pustych pól przez określoną funkcję lub operator, zobacz poszczególne tematy dotyczące poszczególnych funkcji języka DAX w sekcji Dokumentacja funkcji języka DAX.