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 vão considerar dois cenários de agregação em que as funções de iterador são úteis: resumo complexo e resumo de granulação mais elevada.

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 função RELATED. Tenha em atenção que o contexto de linha não se estende além da tabela. Se a fórmula precisar de referenciar colunas noutras tabelas e existirem relações de modelo entre as tabelas, utilize a função RELATED para a relação de um lado ou a função RELATEDTABLE 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, como a função de iterador enumera linhas da tabela Vendas, a média representaria a receita por linha. Aprofundando esta lógica, como cada linha da tabela Vendas regista uma linha de encomendas de venda, pode ser descrita de forma mais precisa como receita por linha de encomendas.

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 função DAX VALUES. Esta função permite que as fórmulas determinem quais os valores que estão no contexto de filtro. Neste caso, esta função AVERAGEX itera sobre cada encomenda de vendas no contexto de filtro. Por outras palavras, itera sobre cada encomenda de vendas do mês. O contexto de filtro e a função VALUES serão apresentados no módulo do contexto de filtro.