ALLNOBLANKROW
Dotyczy: Obliczanie kolumny obliczeniowej tabeli Obliczeniowej Obliczenie wizualizacji
Z tabeli nadrzędnej relacji zwraca wszystkie wiersze, ale pusty wiersz lub wszystkie odrębne wartości kolumny, ale pusty wiersz i ignoruje wszystkie filtry kontekstu, które mogą istnieć.
Składnia
ALLNOBLANKROW( {<table> | <column>[, <column>[, <column>[,…]]]} )
Parametry
Termin | Definicja |
---|---|
table | Tabela, w której są usuwane wszystkie filtry kontekstowe. |
column | Kolumna, w której są usuwane wszystkie filtry kontekstowe. |
Należy przekazać tylko jeden parametr; parametr jest tabelą lub kolumną.
Wartość zwracana
Tabela, gdy przekazany parametr był tabelą lub kolumną wartości, kiedy przekazany parametr był kolumną.
Uwagi
Funkcja ALLNOBLANKROW filtruje tylko pusty wiersz, który tabela nadrzędna w relacji będzie pokazywać, gdy w tabeli podrzędnej znajduje się co najmniej jeden wiersz, który nie pasuje do kolumny nadrzędnej. Zapoznaj się z poniższym przykładem, aby uzyskać dokładne wyjaśnienie.
W poniższej tabeli przedstawiono podsumowanie odmian wszystkich, które są dostępne w języku DAX, oraz ich różnice:
Funkcja i użycie opis ALL(Kolumna) Usuwa wszystkie filtry z określonej kolumny w tabeli; wszystkie inne filtry w tabeli, w innych kolumnach, nadal mają zastosowanie. ALL(Tabela) Usuwa wszystkie filtry z określonej tabeli. ALLEXCEPT(Table,Col1,Col2...) Zastępuje wszystkie filtry kontekstowe w tabeli z wyjątkiem określonych kolumn. ALLNOBLANK(tabela|kolumna) Z tabeli nadrzędnej relacji zwraca wszystkie wiersze, ale pusty wiersz lub wszystkie odrębne wartości kolumny, ale pusty wiersz i ignoruje wszystkie filtry kontekstu, które mogą istnieć Ogólny opis działania funkcji ALL wraz z przykładami krok po kroku, które używają funkcji ALL(Table) i ALL(Column), zobacz ALL function (ALL).
Ta funkcja nie jest obsługiwana w trybie DirectQuery w przypadku użycia w kolumnach obliczeniowych lub regułach zabezpieczeń na poziomie wiersza.
Przykład
W przykładowych danych tabela ResellerSales_USD zawiera jeden wiersz, który nie zawiera wartości i dlatego nie może być powiązany z żadną z tabel nadrzędnych w relacjach w skoroszycie. Użyjesz tej tabeli w tabeli przestawnej, aby zobaczyć zachowanie pustego wiersza i sposób obsługi liczby niepowiązanych danych.
Krok 1. Weryfikowanie niepowiązanych danych
Otwórz okno dodatku Power Pivot, a następnie wybierz tabelę ResellerSales_USD. W kolumnie ProductKey odfiltruj puste wartości. Pozostanie jeden wiersz. W tym wierszu wszystkie wartości kolumn powinny być puste z wyjątkiem kolumn SalesOrderLineNumber.
Krok 2. Tworzenie tabeli przestawnej
Utwórz nową tabelę przestawną, a następnie przeciągnij kolumnę datetime. [Rok kalendarzowy] w okienku Etykiety wierszy. W poniższej tabeli przedstawiono oczekiwane wyniki:
Etykiety wierszy |
---|
2005 |
2006 |
2007 |
2008 |
Suma końcowa |
Zwróć uwagę na pustą etykietę z zakresu od 2008 do sumy końcowej. Ta pusta etykieta reprezentuje nieznany element członkowski, który jest grupą specjalną utworzoną w celu uwzględnienia wszystkich wartości w tabeli podrzędnej, które nie mają pasującej wartości w tabeli nadrzędnej, w tym przykładzie data/godzina. [Rok kalendarzowy] kolumna.
Gdy ta pusta etykieta zostanie wyświetlona w tabeli przestawnej, wiesz, że w niektórych tabelach powiązanych z kolumną data/godzina. [Rok kalendarzowy] istnieją puste wartości lub wartości niezgodne. Tabela nadrzędna to ta, która pokazuje pustą etykietę, ale wiersze, które nie są zgodne, znajdują się w co najmniej jednej tabeli podrzędnej.
Wiersze dodawane do tej pustej grupy etykiet to wartości, które nie są zgodne z żadną wartością w tabeli nadrzędnej — na przykład datą, która nie istnieje w wartościach tabeli datetime lub null, co oznacza brak wartości daty w ogóle. W tym przykładzie umieściliśmy pustą wartość we wszystkich kolumnach podrzędnej tabeli sprzedaży. Posiadanie większej liczby wartości w tabeli nadrzędnej niż w tabelach podrzędnych nie powoduje problemu.
Krok 3. Zlicz wiersze przy użyciu funkcji ALL i ALLNOBLANK
Dodaj następujące dwie miary do tabeli datetime, aby zliczyć wiersze tabeli: Countrows ALLNOBLANK daty/godziny, Countrows ALL of datetime. Formuły, których można użyć do zdefiniowania tych miar, to:
// Countrows ALLNOBLANK of datetime
= COUNTROWS(ALLNOBLANKROW('DateTime'))
// Countrows ALL of datetime
= COUNTROWS(ALL('DateTime'))
// Countrows ALLNOBLANKROW of ResellerSales_USD
= COUNTROWS(ALLNOBLANKROW('ResellerSales_USD'))
// Countrows ALL of ResellerSales_USD
= COUNTROWS(ALL('ResellerSales_USD'))
W pustej tabeli przestawnej dodaj datę/godzinę. [Rok kalendarzowy] kolumna do etykiet wierszy, a następnie dodaj nowo utworzone miary. Wyniki powinny wyglądać podobnie do poniższej tabeli:
Etykiety wierszy | Countrows ALLNOBLANK daty/godziny | Countrows ALL of datetime |
---|---|---|
2005 | 1280 | 1281 |
2006 | 1280 | 1281 |
2007 | 1280 | 1281 |
2008 | 1280 | 1281 |
1280 | 1281 | |
Suma końcowa | 1280 | 1281 |
Wyniki pokazują różnicę 1 wierszy w liczbie wierszy tabeli. Jeśli jednak otworzysz okno dodatku Power Pivot i wybierzesz tabelę datetime, nie będzie można odnaleźć pustego wiersza w tabeli, ponieważ specjalny pusty wiersz wymieniony tutaj jest elementem członkowskim Nieznany.
Krok 4. Sprawdzanie, czy liczba jest dokładna
Aby udowodnić, że funkcja ALLNOBLANKROW nie zlicza naprawdę pustych wierszy i obsługuje tylko specjalny pusty wiersz w tabeli nadrzędnej, dodaj następujące dwie miary do tabeli ResellerSales_USD: Countrows ALLNOBLANKROW ResellerSales_USD, Countrows ALL of ResellerSales_USD.
Utwórz nową tabelę przestawną i przeciągnij kolumnę datetime. [Rok kalendarzowy] w okienku Etykiety wierszy. Teraz dodaj miary, które zostały właśnie utworzone. Wyniki powinny wyglądać następująco:
Etykiety wierszy | Countrows ALLNOBLANKROW of ResellerSales_USD | Countrows ALL of ResellerSales_USD |
---|---|---|
2005 | 60856 | 60856 |
2006 | 60856 | 60856 |
2007 | 60856 | 60856 |
2008 | 60856 | 60856 |
60856 | 60856 | |
Suma końcowa | 60856 | 60856 |
Teraz te dwie miary mają te same wyniki. Wynika to z faktu, że funkcja ALLNOBLANKROW nie liczy naprawdę pustych wierszy w tabeli, ale obsługuje tylko pusty wiersz, który jest specjalnym przypadkiem wygenerowanym w tabeli nadrzędnej, gdy co najmniej jedna tabela podrzędna w relacji zawiera niepasujące wartości lub puste wartości.