Utilizar funções de iterador de agregação

Concluído

Cada função de resumo de coluna única tem uma função de iterador equivalente. As secções seguintes consideram dois cenários de agregação quando as funções de iterador são úteis: resumo complexo e resumo de grãos superior.

Resumo complexo

Nesta secção, vai criar a primeira medida, que utiliza uma função de iterador. Primeiro, transfira e abra o ficheiro Adventure Works DW 2020 M05.pbix. Em seguida, adicione a seguinte definição de medida:

Revenue =
SUMX(
    Sales,
    Sales[Order Quantity] * Sales[Unit Price] * (1 - Sales[Unit Price Discount Pct])
)

Formate a medida Receita como moeda com duas casas decimais e, em seguida, adicione-a ao elemento visual de tabela que se encontra na Página 1 do relatório.

Imagem a mostrar um elemento visual de tabela com duas colunas: Mês e Receita. São apresentados os dados de um ano.

Ao utilizar uma função de iterador, a fórmula de medida Receita agrega mais do que os valores de uma única coluna. Para cada linha, utiliza os valores de contexto de linha de três colunas para produzir a quantidade de receita.

Agora, adicione outra medida:

Discount =
SUMX(
    Sales,
    Sales[Order Quantity]
    * (
        RELATED('Product'[List Price]) - Sales[Unit Price]
    )
)

Formate a medida Desconto como moeda com duas casas decimais e, em seguida, adicione-a ao elemento visual de tabela.

Imagem a mostrar um elemento visual de tabela com três colunas: Mês, Receita e Desconto. São apresentados os dados de um ano.

Repare que a fórmula utiliza a RELATED função. Tenha em atenção que o contexto de linha não se estende além da tabela. Se a sua fórmula precisar de referenciar colunas noutras tabelas e as relações de modelo existirem entre as tabelas, utilize a RELATED função para a relação de um lado ou a RELATEDTABLE função para a relação de muitos lados.

Resumo de granulação mais elevada

O exemplo seguinte considera um requisito para gerar relatórios de receita média. Adicione a seguinte medida:

Revenue Avg =
AVERAGEX(
    Sales,
    Sales[Order Quantity] * Sales[Unit Price] * (1 - Sales[Unit Price Discount Pct])
)

Formate a medida Receita Média como moeda com duas casas decimais e, em seguida, adicione-a ao elemento visual de tabela.

Imagem a mostrar um elemento visual de tabela com quatro colunas: Mês, Receita, Desconto e Receita Média. São apresentados os dados de um ano.

Considere que média significa a soma dos valores dividida pela contagem de valores. No entanto, essa teoria levanta uma questão: O que representa a contagem de valores? Neste caso, a contagem de valores é o número de expressões que não foram avaliadas como BLANK. Além disso, uma vez que a função iterador enumera as linhas da tabela Vendas , a média significaria receita por linha. Levando esta lógica um passo mais além, uma vez que cada linha na tabela Vendas regista uma linha de encomendas de vendas, pode ser descrita com mais precisão como receita por linha de encomenda.

Em conformidade, deve mudar o nome da medida Receita Média para Receita Média por Linha de Encomendas de forma a que seja claro para os utilizadores do relatório o que é que está a ser utilizado como base da média.

O exemplo seguinte utiliza uma função de iterador para criar uma nova medida que gera a granularidade ao nível das encomendas de vendas (uma encomenda de vendas consiste numa ou mais linhas de encomenda). Adicione a seguinte medida:

Revenue Avg Order =
AVERAGEX(
    VALUES('Sales Order'[Sales Order]),
    [Revenue]
)

Formate a medida Receita Média por Encomenda como moeda com duas casas decimais e, em seguida, adicione-a ao elemento visual de tabela.

Imagem a mostrar um elemento visual de tabela com cinco colunas: Mês, Receita, Desconto, Receita Média por Linha de Encomendas e Receita Média por Encomenda. São apresentados os dados de um ano.

Conforme esperado, a receita média de uma encomenda é sempre maior do que a receita média de uma única linha de encomendas.

Repare que a fórmula utiliza a VALUES função DAX. Esta função permite que as fórmulas determinem quais os valores que estão no contexto de filtro. Neste caso, a AVERAGEX função itera cada ordem de vendas no contexto de filtro. Por outras palavras, itera sobre cada encomenda de vendas do mês. O contexto de filtro e a VALUES função são introduzidos no módulo de contexto de filtro.