São funções utilizadas para gerenciar e manipular tabelas com fórmulas DAX.

Algumas funções utilizadas são: filter, addcolumn, calculate e etc.

Antes de adentrar no assunto, fixem na cabeça que sempre que se cria uma medida ou uma coluna calculada, estamos criando um resultado scalar, ou seja, linha única. Então tenha cuidado quando for utilizar alguma função de tabela com o resultado escalar para não tomar mensagem de erro na sua função.

Funções de agrupamento e iterações são funções que acabam retornando uma única linha para todas as linhas da coluna, isso também pode causar erro, dependendo de como está manipulando o cálculo.

UTILIZANDO FUNÇÕES DE TABELA

Neste primeiro exemplo em que criei uma expressão básica de teste, veja que para ter o valor correto, precisei utilizar a função row, já que o resultado é scalar e estou utilizando filter, que é uma função ‘tabular‘.

Como quero que a expressão me retorne apenas o valor único preciso destacar a função row 

Se por algum motivo, eu esquecesse ou não soubesse como utilizar, teria uma mensagem de erro.

Já quando utilizamos funções de tabela o resultado é diferente. Além de adicionar a coluna que apelidamos, o resultado como desejado também o é. 

“Então, porque utilizando filter não retornou a tabela inteira e com addcolumns, sim?” 

Por que a função de filter aja de forma iterativa, escaneando a tabela e reunindo os valores que satisfazem a sua lógica – diferente de sua função addcolumns.

Mas isso não impede por exemplo, de unir as duas funções, criar uma nova tabela com filtro. Estaríamos aqui, unindo duas funções tabulares.

Além do uso padrão das funções de tabela, ainda podemos armazenar em variáveis para utilizar em cálculos ou funções.

Outro exemplo de uso prático aplicado com variável é armazenar uma tabela filtrada por alguma coluna e utilizá-la em uma outra expressão.

Lembrando que a função filter retorna tabela. 

Como a função sumx age sobre coluna de tabelas, e atribuímos uma tabela à variável, nossa expressão funcionou perfeitamente.

RELACIONANDO TABELAS DENTRO DE EXPRESSÕES

No conjunto de funções da linguagem DAX temos funções que permitem relacionar tabelas para criar boas expressões ou análises lógicas, uma das mais utilizadas é a função relatedtable.

Quando utilizamos esta função, conseguimos pegar colunas da tabela utilizada para criar cálculos.

Veja nesta expressão em que busquei dentro da tabela tableconstructor colunas da tabela medida, dentro de uma função addcolumns.

Outra forma de utilizar é dentro de um filter para uma função. se quiser adicionar uma coluna em outra tabela estabelecendo alguns critérios, é completamente possível.

De um modo geral, não podemos utilizar o resultado de uma função de tabela dentro de uma medida ou coluna calculada. como vocês viram, para poder obter o resultado, precisei da função row.

Como as medidas e as colunas são scalares, se tornam incompatíveis.

A única forma de utilizar um resultado gerado por uma função de tabela, seria desta maneira.

Outras duas situações que a função tabular de filtro permite é aninhar e utilizar operadores lógicos, veja no resultado do primeiro exemplo que ele atende perfeitamente os requisitos de filtro da expressão.

Utilizando o operador lógico and.

Existe um consenso de que filtros complexos ou volumosos devem vir em primeiro, no bloco mais interno, essa adoção prática torna o código mais rápido de ser executado, apresentando uma melhora de performance, de uma forma geral.

DAX STUDIO

Para o post de hoje e os próximos, irei utilizar a ferramenta chamada DAX STUDIO que pode ser baixada aqui.

A ferramenta é um bom ambiente para desenvolver códigos DAX e muito mais rápida do que trabalhar no POWER BI.

Para utilizar, basta abrir seu modelo de dados dentro do Power BI normalmente, abrir o DAX STUDIO e conectar no modelo tabular.

Após conectar, basta digitar seus códigos e executar normalmente. O ponto positivo que nada que seja criado ou executado aqui, altera o modelo de dados original; é bem um ambiente de desenvolvimento mesmo.

Espero que tenham gostado, saúde!