Função ALLNOBLANKROW
Da tabela pai de uma relação, retorna todas as linhas, exceto a linha em branco, ou todos os valores distintos de uma coluna, exceto a linha em branco, e desconsidera todos os filtros de contexto que possam existir.
Sintaxe
ALLNOBLANKROW(<table>|<column>)
Parâmetros
Termo |
Definição |
---|---|
table |
A tabela na qual todos os filtros de contexto são removidos. |
column |
A coluna na qual todos os filtros de contexto são removidos. |
Somente um parâmetro deve ser passado; o parâmetro é uma tabela ou uma coluna.
Valor de retorno
Uma tabela, quando o parâmetro passado era uma tabela, ou uma coluna de valores, quando o parâmetro passado era uma coluna.
Comentários
A função ALLNOBLANKROW filtra apenas a linha em branco que uma tabela pai, em uma relação, mostrará quando houver uma ou mais linhas na tabela filho que tenha valores não correspondentes à coluna pai. Consulte o exemplo abaixo para obter uma explicação completa.
A tabela a seguir resume as variações de ALL fornecidas em DAX e suas diferenças:
Função e uso |
Descrição |
---|---|
ALL(Column) |
Remove todos os filtros da coluna especificada na tabela; todos os outros filtros na tabela, sobre outras colunas, ainda se aplicam. |
ALL(Table) |
Remove todos os filtros da tabela especificada. |
ALLEXCEPT(Table,Col1,Col2...) |
Substitui todos os filtros de contexto na tabela, exceto sobre as colunas especificadas. |
ALLNOBLANK(table|column) |
Da tabela pai de uma relação, retorna todas as linhas, exceto a linha em branco, ou todos os valores distintos de uma coluna, exceto a linha em branco, e desconsidera todos os filtros de contexto que possam existir |
Para obter uma descrição geral sobre como a função ALL funciona, junto com exemplos passo a passo que usam ALL(Table) e ALL(Column), consulte Função ALL.
Exemplo
Nos dados de exemplo, a tabela ResellerSales_USD contém uma linha que não tem valores e, portanto, não pode ser relacionada a nenhuma das tabelas pai nas relações dentro da pasta de trabalho. Você usará essa tabela em uma Tabela Dinâmica para que possa ver o comportamento de linha em branco e como tratar contagens em dados não relacionados.
Etapa 1: verificar os dados não relacionados
Abra a Janela do PowerPivot e selecione a tabela ResellerSales_USD. Na coluna ProductKey, filtre para obter valores em branco. Uma linha permanecerá. Nessa linha, todos os valores da coluna devem estar em branco, com exceção de SalesOrderLineNumber.
Etapa 2: criar uma Tabela Dinâmica
Crie uma nova Tabela Dinâmica e arraste a coluna datetime.[Calendar Year] até o painel Rótulos de Linha. A tabela a seguir mostra os resultados esperados:
Rótulos de Linha |
---|
2005 |
2006 |
2007 |
2008 |
|
Grand Total |
Observe o rótulo em branco entre 2008 e Grand Total. Esse rótulo em branco representa o membro desconhecido, que é um grupo especial criado para justificar os valores na tabela filho sem valor correspondente na tabela pai; neste exemplo, a coluna datetime.[Calendar Year].
Quando você vir esse rótulo em branco na Tabela Dinâmica, saberá que em algumas tabelas relacionadas à coluna datetime.[Calendar Year], haverá valores em branco ou valores não correspondentes. A tabela pai é a que mostra o rótulo em branco, mas as linhas que não correspondem estão em uma ou mais tabelas filho.
As linhas adicionadas a esse grupo de rótulos em branco são valores que não correspondem a nenhum valor na tabela pai -- por exemplo, uma data que não existe na tabela datetime -- ou valores nulos, que significam que não há nenhum valor para data. Neste exemplo, colocamos um valor em branco em todas as colunas da tabela de vendas filho. A existência de mais valores na tabela pai do que nas tabelas filho não causa um problema.
Etapa 3: contar linhas usando ALL e ALLNONBLANK
Adicione estas duas medidas à tabela datetime, para contar as linhas da tabela: Countrows ALLNOBLANK de datetime, Countrows ALL of datetime. São dadas as fórmulas que é possível usar para definir essas medidas nesta seção de código.
Em uma Tabela Dinâmica em branco, adicione a coluna datetime.[Calendar Year] aos rótulos de linha e adicione as medidas recém-criadas. Os resultados deverão ser semelhantes a esta tabela:
Rótulos de Linha |
Countrows ALLNOBLANK de datetime |
Countrows ALL of datetime |
---|---|---|
2005 |
1280 |
1281 |
2006 |
1280 |
1281 |
2007 |
1280 |
1281 |
2008 |
1280 |
1281 |
|
1280 |
1281 |
Grand Total |
1280 |
1281 |
Os resultados mostram uma diferença de 1 linha na contagem das linhas da tabela. Porém, se você abrir a Janela do PowerPivot e selecionar a tabela datetime, não poderá localizar nenhuma linha em branco na tabela, pois a linha em branco especial mencionada aqui é o membro desconhecido.
Etapa 4: verificar se a contagem é precisa
Para provar que ALLNOBLANKROW não conta linhas realmente em branco e apenas manipula a linha em branco especial na tabela pai, acrescente estas duas medidas à tabela ResellerSales_USD: Countrows ALLNOBLANKROW de ResellerSales_USD, Countrows ALL of ResellerSales_USD.
Crie uma nova Tabela Dinâmica e arraste a coluna datetime.[Calendar Year] até o painel Rótulos de Linha. Agora adicione as medidas recém-criadas. Os resultados deverão ser semelhantes ao seguinte:
Rótulos de Linha |
Countrows ALLNOBLANKROW de ResellerSales_USD |
Countrows ALL of ResellerSales_USD |
---|---|---|
2005 |
60856 |
60856 |
2006 |
60856 |
60856 |
2007 |
60856 |
60856 |
2008 |
60856 |
60856 |
|
60856 |
60856 |
Grand Total |
60856 |
60856 |
Agora as duas medidas têm os mesmos resultados. Isso ocorre porque a função ALLNOBLANKROW não conta as linhas verdadeiramente em branco em uma tabela, mas apenas manipula a linha em branco que é um caso especial gerado em uma tabela pai, quando um ou mais tabelas filho na relação contêm valores não correspondentes ou valores em branco.
// 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'))