Introdução

Concluído

Assista ao vídeo seguinte para saber mais sobre as funções de iterador.

As DAX (Data Analysis Expressions) incluem um conjunto de funções conhecidas como funções de iterador. As funções de iterador enumeram todas as linhas de uma determinada tabela e avaliam uma determinada expressão para cada linha. Proporcionam-lhe flexibilidade e controlo sobre a forma como os cálculos de modelo vão resumir os dados.

Agora, já conhece as funções de resumo de coluna única, incluindo SUM, COUNT, MIN, MAX e outras. Cada uma destas funções tem uma função de iterador equivalente que é identificada pelo sufixo “X”, como SUMX, COUNTX, MINX, MAXX e outras. Além disso, existem funções de iterador especializadas que executam filtragem, classificação, cálculos semiaditivos ao longo do tempo e muito mais.

Uma caraterística de todas as funções de iterador é o facto de ter de transmitir uma tabela e uma expressão. A tabela pode ser uma referência de tabela de modelo ou uma expressão que devolva um objeto de tabela. A expressão tem de ser avaliada como um valor escalar.

As funções de resumo de coluna única, como SUM, são funções abreviadas. Internamente, o Microsoft Power BI converte a função SUM em SUMX. Como resultado, as duas definições de medida seguintes vão produzir o mesmo resultado. O Power BI não diferencia estas definições de medida ao avaliá-las ou ao avaliar o desempenho.

Revenue = SUM(Sales[Sales Amount])
Revenue =
SUMX(
    Sales,
    Sales[Sales Amount]
)

É importante compreender a forma como o contexto funciona com as funções de iterador. Como as funções de iterador são enumeradas nas linhas da tabela, a expressão é avaliada para cada linha no contexto de linha, tal como acontece com as fórmulas de colunas calculadas. A tabela é avaliada no contexto de filtro, por isso, se estiver a utilizar o exemplo anterior da definição de medida Receita, se um elemento visual de relatório tiver sido filtrado por ano fiscal AF2020, a tabela Vendas conterá as linhas de vendas que foram ordenadas nesse ano. O contexto de filtro é descrito no módulo do contexto de filtro.

Importante

Quando estiver a utilizar funções de iterador, evite utilizar tabelas grandes (de linhas) com expressões que utilizam funções DAX expansivas. Algumas funções, como a função DAX SEARCH, que analisa um valor de texto que procura carateres específicos ou texto, podem resultar numa implementação lenta. Além disso, a função DAX LOOKUPVALUE pode resultar numa obtenção de valores lenta e linha a linha. Neste segundo caso, em alternativa, utilize a função DAX RELATED, sempre que possível.