Udostępnij za pośrednictwem


Funkcja ALLNOBLANKROW

Zwraca z nadrzędnej tabeli relacji wszystkie wiersze, oprócz pustych, albo wszystkie unikatowe wartości kolumny, oprócz pustych wierszy, i ignoruje wszystkie filtry kontekstowe.

Składnia

ALLNOBLANKROW(<table>|<column>)

Parametry

Termin

Definicja

table

Tabela, dla której zostaną usunięte wszystkie filtry kontekstowe.

column

Kolumna, dla której zostaną usunięte wszystkie filtry kontekstowe.

Należy przekazać tylko jeden parametr, którym jest tabela lub kolumna.

Wartość zwracana

Tabela, jeśli jako parametr przekazano tabelę, lub kolumna wartości, jeśli jako parametr przekazano kolumnę.

Uwagi

Funkcja ALLNOBLANKROW filtruje tylko puste wiersze w nadrzędnej tabeli relacji i wyświetla informację, gdy w tabeli podrzędnej istnieje co najmniej jeden wiersz niemający wartości pasującej do kolumny nadrzędnej. W poniższym przykładzie przedstawiono dokładne wyjaśnienie.

W poniższej tabeli podsumowano odmiany funkcji ALL dostępne w języku DAX oraz różnice między nimi.

Funkcja i użycie

Opis

ALL(kolumna)

Usuwa wszystkie filtry z określonej kolumny w tabeli; wszystkie inne filtry dotyczące innych kolumn w tabeli są nadal stosowane.

ALL(tabela)

Usuwa wszystkie filtry z określonej tabeli.

ALLEXCEPT(tabela,kol1,kol2...)

Zastępuje wszystkie filtry kontekstowe w tabeli z wyjątkiem filtrów zastosowanych do określonych kolumn.

ALLNOBLANK(tabela|kolumna)

Zwraca z nadrzędnej tabeli relacji wszystkie wiersze, oprócz pustych, albo wszystkie różne wartości kolumny, oprócz pustych wierszy, i ignoruje wszystkie filtry kontekstowe.

Aby zapoznać się z ogólnym opisem działania funkcji ALL oraz przykładami krok po kroku, w których są używane funkcje ALL(tabela) i ALL(kolumna), zobacz temat Funkcja ALL.

Przykład

W przykładowych danych znajduje się tabela ResellerSales_USD zawierająca jeden wiersz, który nie ma wartości, przez co nie można go powiązać z żadną tabelą nadrzędną w relacjach w skoroszycie. Ta tabela będzie używana w tabeli przestawnej, dzięki czemu będzie można zobaczyć zachowanie pustego wiersza oraz sposób obsługi liczebności w przypadku niepowiązanych danych.

Krok 1. Weryfikowanie niepowiązanych danych.

Otwórz okno programu PowerPivot, a następnie wybierz tabelę ResellerSales_USD. W kolumnie ProductKey odfiltruj puste wartości. Pozostanie jeden wiersz. W tym wierszu wszystkie wartości kolumny, oprócz SalesOrderLineNumber, powinny być puste.

Krok 2. Tworzenie tabeli przestawnej.

Utwórz nową tabelę przestawną, a następnie przeciągnij kolumnę datetime.[Calendar Year] do okienka Etykiety wierszy. W poniższej tabeli pokazano oczekiwane wyniki:

Etykiety wierszy

2005

2006

2007

2008

 

Suma końcowa

Należy zwrócić uwagę na pustą etykietę między pozycjami 2008 i Suma końcowa. Ta pusta etykieta przedstawia wartość Nieznany element członkowski, która jest specjalną grupą utworzoną w celu obsługi wartości w tabeli podrzędnej, które nie mają pasujących wartości w tabeli nadrzędnej. W tym przykładzie dotyczy to kolumny datetime.[Calendar Year].

Jeśli w tabeli przestawnej jest widoczna ta pusta etykieta, wiadomo że w niektórych tabelach powiązanych z kolumną datetime.[Calendar Year] znajdują się puste lub niepasujące wartości. Pusta etykieta jest widoczna w tabeli nadrzędnej, ale niepasujące wiersze znajdują się w co najmniej jednej tabeli podrzędnej.

Wiersze dodawane do tej grupy z pustą etykietą są wartościami, które nie pasują do żadnej wartości w tabeli nadrzędnej (na przykład jest to data, która nie istnieje w tabeli datetime), lub wartościami null, które oznaczają całkowity brak wartości daty. W tym przykładzie wartość pusta znajduje się we wszystkich kolumnach podrzędnej tabeli sprzedaży. Jeśli w tabeli nadrzędnej znajduje się więcej wartości niż w tabelach podrzędnych, nie powoduje to problemu.

Krok 3. Zliczanie wierszy przy użyciu funkcji ALL i ALLNONBLANK.

Do tabeli datetime należy dodać następujące dwie mary, aby zliczyć wiersze tabeli: Countrows ALLNOBLANK of datetime i Countrows ALL of datetime. Formuły, których można użyć w celu zdefiniowania tych miar podano w sekcji kodu poniżej.

W pustej tabeli przestawnej dodaj kolumnę datetime.[Calendar Year] do obszaru etykiet wierszy, a następnie dodaj nowo utworzone miary. Wyniki powinny przypominać poniższą tabelę:

Etykiety wierszy

Countrows ALLNOBLANK of datetime

Countrows ALL of datetime

2005

1280

1281

2006

1280

1281

2007

1280

1281

2008

1280

1281

 

1280

1281

Suma końcowa

1280

1281

W wynikach można zauważyć, że różnica w wyznaczonych liczbach wierszy w tabeli wynosi 1. Jednak po otwarciu okna programu PowerPivot i wybraniu tabeli datetime nie będzie można odnaleźć żadnego pustego wiersza w tabeli, ponieważ wspomniany specjalny pusty wiersz ma wartość Nieznany element członkowski.

Krok 4. Weryfikowanie dokładności liczebności.

Aby udowodnić, że funkcja ALLNOBLANKROW nie zlicza faktycznie pustych wierszy i obsługuje tylko specjalny pusty wiersz w tabeli nadrzędnej, należy dodać do tabeli ResellerSales_USD dwie następujące miary: Countrows ALLNOBLANKROW of ResellerSales_USD i Countrows ALL of ResellerSales_USD.

Utwórz nową tabelę przestawną, a następnie przeciągnij kolumnę datetime.[Calendar Year] do okienka Etykiety wierszy. Teraz dodaj nowo utworzone miary. Wyniki powinny przypominać poniższą tabelę:

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 obie miary mają taki sam wynik. Jest to spowodowane tym, że funkcja ALLNOBLANKROW nie zlicza faktycznie pustych wierszy w tabeli, ale jedynie obsługuje pusty wiersz będący wygenerowanym w tabeli nadrzędnej specjalnym przypadkiem dotyczącym sytuacji, gdy co najmniej jedna tabela podrzędna w relacji zawiera niepasujące lub puste wartości.

// 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'))

Zobacz także

Odwołanie

Funkcja ALL

Funkcja FILTER

Inne zasoby

Funkcje filtru (język DAX)