Utilizar funções de modificador de filtro
Ao utilizar a CALCULATE
função, pode transmitir funções de modificação de filtro, que lhe permitem realizar mais do que adicionar filtros sozinho.
Remover filtros
Utilize a REMOVEFILTERS
função DAX como uma expressão de CALCULATE
filtro para remover filtros do contexto de filtro. Esta função permite remover filtros de uma ou mais colunas ou de todas as colunas de uma única tabela.
Nota
A REMOVEFILTERS
função é relativamente nova. Em versões anteriores do DAX, removeu filtros com a ALL
função DAX ou variantes, incluindo as ALLEXCEPT
funções DAX e ALLNOBLANKROW
. Estas funções funcionam como modificadores de filtro e como funções que apresentam objetos da tabela com valores distintos. Estas funções são mencionadas agora, porque é provável que encontre documentação e exemplos de fórmulas que removem filtros com recurso às mesmas.
No exemplo seguinte, irá adicionar uma nova medida à tabela Vendas que avalia a medida Receita , mas que o faz ao remover filtros da tabela Território de Vendas . Formate a medida como moeda com duas casas decimais.
Revenue Total Region = CALCULATE([Revenue], REMOVEFILTERS('Sales Territory'))
Agora, adicione a medida Receita Total por Região ao elemento visual de matriz que se encontra na Página 2 do relatório. O elemento visual de matriz será agrupado em três colunas da tabela Território de Vendas nas linhas: Grupo, País e Região.
Repare que todos os valores de Receita Total por Região são iguais. Este é o valor da receita total.
Embora este resultado não seja útil de forma independente, quando utilizado como um denominador num rácio, calcula uma percentagem do total geral. Assim, vai agora substituir a definição da medida Receita Total por Região pela definição seguinte. (Esta nova definição altera o nome da medida e declara duas variáveis. Certifique-se de que formatar a medida como uma percentagem com duas casas decimais.)
Revenue % Total Region =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalRegionRevenue =
CALCULATE(
[Revenue],
REMOVEFILTERS('Sales Territory')
)
RETURN
DIVIDE(
CurrentRegionRevenue,
TotalRegionRevenue
)
Confirme que o elemento visual de matriz agora mostra os valores de Receita Total por Região em %.
Agora, vai criar outra medida, mas, desta vez, vai calcular o rácio da receita de uma região dividido pela receita do país correspondente.
Antes de concluir esta tarefa, repare que o valor de Receita Total por Região em % para a região Sudoeste é de 22,95%. Investigue o contexto de filtro desta célula. Mude para a vista de dados e, em seguida, no painel Campos , selecione a tabela Território de Vendas .
Aplique os seguintes filtros de colunas:
- Grupo – América do Norte
- País – Estados Unidos
- Região – Sudoeste
Repare que os filtros reduzem a tabela a apenas uma linha. Agora, enquanto determina o novo objetivo de criar um rácio da receita da região relativamente à receita do país correspondente, limpe o filtro da coluna Região.
Repare que agora existem cinco linhas, cada uma pertencente ao país Estados Unidos. Em conformidade, quando limpa os filtros da coluna Região, ao preservar os filtros nas colunas País e Grupo, fica com um novo contexto de filtro para o país da região.
Na definição de medida seguinte, repare como pode limpar ou remover um filtro de uma coluna. Na lógica DAX, é uma pequena e subtil alteração efetuada à fórmula de medida % da Receita Total da Região : a REMOVEFILTERS
função remove agora os filtros da coluna Região em vez de todas as colunas da tabela Território de Vendas .
Revenue % Total Country =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalCountryRevenue =
CALCULATE(
[Revenue],
REMOVEFILTERS('Sales Territory'[Region])
)
RETURN
DIVIDE(
CurrentRegionRevenue,
TotalCountryRevenue
)
Adicione a medida % de Receita Total do País à tabela Vendas e, em seguida, formate-a como uma percentagem com duas casas decimais. Adicione a nova medida ao elemento visual de matriz.
Repare que todos os valores, exceto os valores para as regiões dos Estados Unidos, estão a 100%. Tal deve-se ao facto de, na empresa Adventure Works, os Estados Unidos terem regiões, enquanto os outros países não têm.
Nota
Os modelos tabulares não suportam hierarquias desequilibradas, que são hierarquias com profundidades variáveis. Portanto, repetir valores principais (ou outros predecessores) em níveis inferiores da hierarquia é uma prática de conceção comum. Por exemplo, a Austrália não tem uma região, pelo que o valor país/região é repetido como o nome da região. É sempre preferível guardar um valor com significado do que o valor EM BRANCO.
O exemplo seguinte é a última medida que criará. Adicione a medida Receita Total por Grupo em % e, em seguida, formate-a como uma percentagem com duas casas decimais. Em seguida, adicione a nova medida ao elemento visual de matriz.
Revenue % Total Group =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalGroupRevenue =
CALCULATE(
[Revenue],
REMOVEFILTERS(
'Sales Territory'[Region],
'Sales Territory'[Country]
)
)
RETURN
DIVIDE(
CurrentRegionRevenue,
TotalGroupRevenue
)
Quando remove filtros das colunas Região e País na tabela Território de Vendas , a medida calculará a receita da região como um rácio das receitas do grupo.
Preservar os filtros
Pode utilizar a KEEPFILTERS
função DAX como uma expressão de filtro na CALCULATE
função para preservar os filtros.
Para verificar como pode realizar esta tarefa, mude para a Página 1 do relatório. Em seguida, modifique a definição de medida Receita Vermelha para utilizar a KEEPFILTERS
função.
Revenue Red =
CALCULATE(
[Revenue],
KEEPFILTERS('Product'[Color] = "Red")
)
No elemento visual de tabela, repare que existe apenas um valor Receita a Vermelho. O motivo deve-se ao facto de a expressão de filtro booleano preservar os filtros existentes na coluna Cor na tabela Produto . As outras cores além do vermelho estão EM BRANCO devido aos contextos de filtro e às expressões de filtro estarem combinados para estes dois filtros. A cor preta e a cor vermelha são interseccionadas e, uma vez que ambas não podem ser TRUE
ao mesmo tempo, a expressão é filtrada sem linhas de produto. Só é possível que ambos os filtros vermelhos possam ser TRUE
ao mesmo tempo, o que explica o motivo pelo qual o valor Receita Vermelha é apresentado.
Utilizar relações inativas
Uma relação de modelo inativa só pode propagar filtros quando a USERELATIONSHIP
função DAX é transmitida como uma expressão de filtro para a CALCULATE
função. Quando utiliza esta função para criar uma relação inativa, a relação ativa fica inativa automaticamente.
Observe um exemplo de uma definição de medida que utiliza uma relação inativa para calcular a medida Receita por datas de envio:
Revenue Shipped =
CALCULATE (
[Revenue],
USERELATIONSHIP('Date'[DateKey], Sales[ShipDateKey])
)
Modificar o comportamento da relação
Pode modificar o comportamento da relação do modelo quando uma expressão é avaliada ao transmitir a CROSSFILTER
função DAX como uma expressão de filtro para a CALCULATE
função. Esta é uma capacidade avançada.
A CROSSFILTER
função pode modificar as direções do filtro (de um para um ou de um único para ambos) e até mesmo desativar uma relação.