Typy danych obsługiwane w skoroszytach programu PowerPivot
W tej sekcji opisano typy danych, których można używać w programie PowerPivot for Excel, oraz omówiono kwestię niejawnej konwersji typów danych podczas obliczania danych lub ich używania w formule języka DAX (Data Analysis Expressions).
Typy danych używane w programie PowerPivot for Excel
W programie PowerPivot można używać poniższych typów danych. W przypadku importu danych lub użycia wartości w formule, nawet jeśli oryginalne źródło danych zawiera inny typ danych, dane są konwertowane na jeden z poniższych typów danych. Dla wartości wynikających z formuł również są używane te typy danych.
Na ogół te typy danych zaimplementowano w celu umożliwienia przeprowadzania dokładnych obliczeń w kolumnach obliczeniowych, lecz dla zapewnienia spójności te same ograniczenia dotyczą również pozostałych danych w programie PowerPivot.
Formaty używane dla liczb, walut, dat i godzin powinny być zgodne z formatem wynikającym z ustawień regionalnych określonych na komputerze użytym do otwarcia skoroszytu. Do sterowania sposobem wyświetlania wartości można używać opcji formatowania w arkuszu.
Typ danych w interfejsie użytkownika programu PowerPivot |
Typ danych w języku DAX |
Opis |
Liczba całkowita |
64-bitowa (ośmiobajtowa) wartość całkowita 1, 2 |
Liczby bez miejsc dziesiętnych. Liczby całkowite mogą być dodatnie lub ujemne, ale muszą być liczbami całkowitymi z zakresu 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ą szeroką gamę wartości: Wartości ujemne z zakresu od -1,79E +308 do -2,23E -308 Zero Wartości dodatnie z zakresu od 2,23E -308 do 1,79E + 308 Jednak maksymalna liczba cyfr znaczących to 15 cyfr dziesiętnych. |
PRAWDA/FAŁSZ |
Boolean |
Wartość Prawda lub Fałsz. |
Tekst |
String |
Ciąg danych zawierający znaki w formacie Unicode. Mogą to być ciągi, liczby lub daty wyrażone w formacie tekstowym. Maksymalna długość ciągu to 268 435 456 znaków Unicode (256 megaznaków) lub 536 870 912 bajtów. |
Data |
Date/time |
Daty i godziny w akceptowanym formacie daty/godziny. Prawidłowe daty są późniejsze niż 1 stycznia 1900 roku. |
Waluta |
Currency |
Typ danych Waluta umożliwia używanie wartości z zakresu od -922 337 203 685 477,5808 do 922 337 203 685 477,5807 z czterema cyframi dziesiętnymi stałej dokładności. |
Brak |
Blank |
Blank (wartość pusta) to typ danych w języku DAX reprezentujący i zastępujący wartości null języka SQL. Wartości puste można tworzyć za pomocą funkcji BLANK, a do sprawdzania, czy dana wartość jest wartością pustą, służy funkcja logiczna ISBLANK. |
1 Formuły języka DAX nie obsługują typów danych mniejszych niż wymienione w tabeli.
2 Próba zaimportowania danych zawierających bardzo duże wartości liczbowe może zakończyć się następującym błędem:
Błąd bazy danych w pamięci: Kolumna <nazwa kolumny> tabeli <nazwa tabeli> zawiera wartość 1.7976931348623157e+308, która nie jest obsługiwana. Operacja została anulowana.
Ten błąd występuje, ponieważ program PowerPivot używa wymienionej w komunikacie wartości do przedstawiania wartości null. Wartości przedstawione na poniższej liście są synonimami wspomnianej uprzednio wartości null:
Wartość |
9223372036854775807 |
-9223372036854775808 |
1,7976931348623158e+308 |
2,2250738585072014e-308 |
Należy usunąć wartość z danych i ponownie podjąć próbę importu.
Typ danych Table
Dodatkowo w języku DAX jest używany typ danych Table. Ten typ danych jest używany w języku DAX w wielu funkcjach, takich jak agregacje i obliczenia analizy czasowej. Niektóre funkcje wymagają odwołania do tabeli; inne funkcje zwracają tabelę, której można następnie używać jako danych wejściowych innych funkcji. W niektórych funkcjach wymagających tabeli jako danych wejściowych można określić wyrażenie, którego wynikiem jest tabela; w przypadku niektórych innych funkcji wymagane jest odwołanie do tabeli podstawowej. Aby uzyskać więcej informacji dotyczących wymagań określonych funkcji, zobacz temat Funkcje języka DAX — kompendium.
Niejawna i jawna konwersja 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 jako pewnych argumentów i dat jako 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 języku DAX w wielu przypadkach jest zwracany błąd. Jednak ilekroć to możliwe, w języku DAX następuje próba niejawnej konwersji danych na wymagany typ danych. Na przykład:
Można wpisać datę jako ciąg, a w języku DAX ciąg ten zostanie zanalizowany i nastąpi próba zrzutowania go na jeden z formatów daty i godziny systemu Windows.
Można wykonać dodawanie PRAWDA + 1 i otrzymać wynik 2, ponieważ wartość PRAWDA jest niejawnie konwertowana na liczbę 1 i przeprowadzana jest operacja 1+1.
W przypadku dodawania wartości w dwóch kolumnach, gdy jedna wartość jest przedstawiona jako tekst („12”), a druga jako liczba (12), w języku DAX następuje niejawna konwersja ciągu na liczbę i przeprowadzane jest dodawanie dające wynik liczbowy. Poniższe wyrażenie zwraca wartość 44 ("22" + 22).
Przy próbie połączenia dwóch liczb dodatek PowerPivot przedstawia te liczby jako ciągi, a następnie je łączy. Poniższe wyrażenie zwraca wartość 1234 (12 & 34).
W poniższej tabeli podsumowano niejawne konwersje typów danych przeprowadzane w formułach. Na ogół program PowerPivot zachowuje się podobnie do programu Microsoft Excel i przeprowadza niejawne konwersje, ilekroć jest to możliwie, jeśli wymaga tego określona operacja.
Tabela niejawnych konwersji typów danych
O typie przeprowadzanej konwersji decyduje operator, który przed wykonaniem żądanej operacji rzutuje wymagane przez siebie wartości. Poniższe tabele zawierają listę operatorów i wskazują, jaka konwersja jest przeprowadzana dla danego typu danych w kolumnie, jeśli „spotka się on” z innym typem danych w przecinającym ją wierszu.
[!UWAGA]
Tekstowe typy danych nie są uwzględnione w tych tabelach. Jeśli wartość liczbowa jest przedstawiona w formacie tekstowym, w niektórych przypadkach program PowerPivot próbuje ustalić typ tej wartości i przedstawić ją jako liczbę.
Dodawanie (+)
Operator (+) |
Liczba całkowita |
Waluta |
Liczba rzeczywista |
Data/godzina |
Liczba całkowita |
Liczba całkowita |
Waluta |
Liczba rzeczywista |
Data/godzina |
Waluta |
Waluta |
Waluta |
Liczba rzeczywista |
Data/godzina |
Liczba rzeczywista |
Liczba rzeczywista |
Liczba rzeczywista |
Liczba rzeczywista |
Data/godzina |
Data/godzina |
Data/godzina |
Data/godzina |
Data/godzina |
Data/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 liczby rzeczywiste i wynikiem jest wartość typu Liczba rzeczywista.
Odejmowanie (-)
W poniższej tabeli nagłówek wiersza jest odjemną (lewa strona), a nagłówek kolumny jest odjemnikiem (prawa strona).
Operator (-) |
Liczba całkowita |
Waluta |
Liczba rzeczywista |
Data/godzina |
Liczba całkowita |
Liczba całkowita |
Waluta |
Liczba rzeczywista |
Liczba rzeczywista |
Waluta |
Waluta |
Waluta |
Liczba rzeczywista |
Liczba rzeczywista |
Liczba rzeczywista |
Liczba rzeczywista |
Liczba rzeczywista |
Liczba rzeczywista |
Liczba rzeczywista |
Data/godzina |
Data/godzina |
Data/godzina |
Data/godzina |
Data/godzina |
Jeśli na przykład data jest używana w operacji odejmowania razem z jakimkolwiek innym typem danych, obie wartości są konwertowane na daty i zwracana wartość jest również datą.
[!UWAGA]
Program PowerPivot obsługuje także operator jednoargumentowy - (negacja), ale ten operator nie zmienia typu danych argumentu.
Mnożenie (*)
Operator (*) |
Liczba całkowita |
Waluta |
Liczba rzeczywista |
Data/godzina |
Liczba całkowita |
Liczba całkowita |
Waluta |
Liczba rzeczywista |
Liczba całkowita |
Waluta |
Waluta |
Liczba rzeczywista |
Waluta |
Waluta |
Liczba rzeczywista |
Liczba rzeczywista |
Waluta |
Liczba rzeczywista |
Liczba rzeczywista |
Jeśli na przykład liczba całkowita jest używana w operacji mnożenia w połączeniu z liczbą rzeczywistą, obie liczby są konwertowane na liczby rzeczywiste i zwracana wartość jest również liczbą rzeczywistą.
Dzielenie (/)
W poniższej tabeli nagłówek wiersza jest licznikiem, a nagłówek kolumny jest mianownikiem.
Operator (/) (Wiersz/Kolumna) |
Liczba całkowita |
Waluta |
Liczba rzeczywista |
Data/godzina |
Liczba całkowita |
Liczba rzeczywista |
Waluta |
Liczba rzeczywista |
Liczba rzeczywista |
Waluta |
Waluta |
Liczba rzeczywista |
Waluta |
Liczba rzeczywista |
Liczba rzeczywista |
Liczba rzeczywista |
Liczba rzeczywista |
Liczba rzeczywista |
Liczba rzeczywista |
Data/godzina |
Liczba rzeczywista |
Liczba rzeczywista |
Liczba rzeczywista |
Liczba rzeczywista |
Jeśli na przykład liczba całkowita jest używana w operacji dzielenia w połączeniu z wartością walutową, obie wartości są konwertowane na liczby rzeczywiste i wynik jest również liczbą rzeczywistą.
Operatory porównania
W wyrażeniach porównania wartości logiczne są traktowane jako większe niż wartości ciągu, a wartości ciągu są traktowane jako większe niż wartości daty/godziny. Wartości liczbowe i wartości daty/godziny są traktowane jako równe. W przypadku wartości logicznych lub wartości ciągu nie są wykonywane niejawne konwersje. Wartość pusta (BLANK) jest konwertowana na wartość 0/""/fałsz, w zależności od typu danych drugiej porównywanej wartości.
Poniższe wyrażenia języka DAX pokazują to zachowanie:
=IF(FALSE()>"true","Expression is true", "Expression is false") zwraca "Expression is true"
=IF("12">12,"Expression is true", "Expression is false") zwraca "Expression is true"
=IF("12"=12,"Expression is true", "Expression is false") zwraca "Expression is false"
Konwersje typów liczbowych i daty/godziny są wykonywane niejawnie, tak jak pokazano w poniższej tabeli:
Operator porównania |
Liczba całkowita |
Waluta |
Liczba rzeczywista |
Data/godzina |
Liczba całkowita |
Liczba całkowita |
Waluta |
Liczba rzeczywista |
Liczba rzeczywista |
Waluta |
Waluta |
Waluta |
Liczba rzeczywista |
Liczba rzeczywista |
Liczba rzeczywista |
Liczba rzeczywista |
Liczba rzeczywista |
Liczba rzeczywista |
Liczba rzeczywista |
Data/godzina |
Liczba rzeczywista |
Liczba rzeczywista |
Liczba rzeczywista |
Data/godzina |
Obsługa wartości pustych, ciągów pustych i wartości zerowych
Sposób obsługi wartości zerowych, wartości null i ciągów pustych w języku DAX jest inny niż w programach Microsoft Excel i SQL Server. W tej sekcji opisano różnice oraz sposób obsługi tych typów danych.
Ważną rzeczą, o której należy pamiętać, jest to, że w programie PowerPivot wartość pusta, pusta komórka i wartość brakująca są reprezentowane przez ten sam nowy typ wartości, BLANK. Sposób obsługi wartości pustych w operacjach, takich jak dodawanie i łączenie, zależy od indywidualnej funkcji. Można również generować wartości puste — za pomocą funkcji BLANK, a do sprawdzania, czy dana wartość jest wartością pustą, służy funkcja ISBLANK. Bazodanowe wartości null nie są obsługiwane w programie PowerPivot i wartości null są konwertowane na wartości puste, jeśli formuła języka DAX odwołuje się do wartości null.
Definiowanie wartości pustych, wartości null i ciągów pustych
W poniższej tabeli podsumowano różnice w sposobie obsługi wartości pustych w języku DAX i programie Microsoft Excel.
Wyrażenie |
Język DAX |
Program Excel |
Wartość pusta + Wartość pusta |
Wartość pusta |
0 (zero) |
Wartość pusta + 5 |
5 |
5 |
Wartość pusta * 5 |
Wartość pusta |
0 (zero) |
5/Wartość pusta |
Nieskończoność |
Błąd |
0/Wartość pusta |
NaN |
Błąd |
Wartość pusta/Wartość pusta |
Wartość pusta |
Błąd |
Fałsz LUB Wartość pusta |
Fałsz |
Fałsz |
Fałsz ORAZ Wartość pusta |
Fałsz |
Fałsz |
Prawda LUB Wartość pusta |
Prawda |
Prawda |
Prawda ORAZ Wartość pusta |
Fałsz |
Prawda |
Wartość pusta LUB Wartość pusta |
Wartość pusta |
Błąd |
Wartość pusta ORAZ Wartość pusta |
Wartość pusta |
Błąd |
Aby uzyskać szczegółowe informacje dotyczące sposobu obsługi wartości pustych przez określoną funkcję lub operator, zobacz tematy dotyczące poszczególnych funkcji języka DAX w sekcji Funkcje języka DAX — kompendium.