Compreender a linguagem DAX
A linguagem DAX é uma biblioteca de funções e operadores que podem ser combinados para criar fórmulas e expressões. Por outras palavras, é uma coleção de funções, operadores e constantes que nos ajudam a criar informações novas a partir de dados já existentes no nosso modelo de dados. O DAX é a linguagem de fórmulas do Power Pivot que usamos numa fórmula ou numa expressão para calcular e devolver um ou mais valores.
No separador Power Pivot, temos o botão de função, exatamente como no Excel. Clicamos neste botão e inserimos as funções DAX disponíveis.
A importância do DAX
Podemos criar tabelas dinâmicas ou gráficos dinâmicos, com informações importantes, sem utilizar a linguagem DAX no Power Pivot. No entanto, se precisarmos de combinar a análise de dados provenientes de diferentes tabelas e de diferentes origens, será oportuno termos a ajuda do DAX.
O DAX permite-nos analisar a informação crítica do nosso negócio e é uma verdadeira ferramenta de Business Intelligence.
O início
Estando familiarizados com as fórmulas do Excel, não teremos dificuldades em aplicar os mesmos princípios para entender o conceito de fórmulas no DAX.
Vamos analisar os 3 conceitos fundamentais do DAX, para podermos compreender melhor esta linguagem:
- Sintaxe
- Funções
- Contexto
Sintaxe
A sintaxe é composta por vários elementos que, em conjunto, compõem uma fórmula. A sintaxe é, basicamente, a forma como a fórmula é escrita. Vamos, agora, observar uma fórmula simples do DAX, utilizada para obter valores para cada linha duma coluna calculada (podemos chamar Margem), de uma determinada tabela, por exemplo.
A sintaxe desta fórmula inclui os seguintes elementos:
- O sinal de igual (=) indica o início da fórmula e, quando esta fórmula for calculada, irá devolver um resultado ou um valor. Todas as fórmulas que calculam um valor irão começar com um sinal de igual.
- A coluna referenciada [VendasTotais] contém os valores aos quais pretendemos subtrair. Numa fórmula, a referência à coluna é sempre escrita entre parênteses retos [ ]. Uma fórmula DAX referencia sempre uma coluna. As fórmulas do Excel referenciam uma célula.
- O operador matemático de subtração (-).
- A coluna referenciada [CustosTotais] contém os valores que pretendemos subtrair aos valores existentes na coluna [VendasTotais].
E como poderemos ler esta fórmula?
Para cada linha da coluna VendasLiquidas, calculamos (=) um novo valor, subtraindo (-) aos valores da coluna [VendasTotais] os valores da coluna [CustosTotais].
Desta forma, percebemos que é importante que as fórmulas tenham a sintaxe correta para que o cálculo seja efetuado sem devolução de erro de sintaxe ou para que, estando a sintaxe correta, os valores devolvidos não sejam os esperados.
Funções
As funções são fórmulas predefinidas que efetuam cálculos utilizando valores específicos, chamados argumentos, definidos numa ordem ou estrutura própria. Os argumentos podem ser outras funções, outra fórmula, referências de coluna, números, texto e valores lógicos, como TRUE ou FALSE, ou constantes.
O DAX inclui as seguintes categorias de funções: funções de Data e Hora, Informativas, Lógicas, Matemáticas, Estatísticas, de Texto e de Filtro.
Contexto
Existem, basicamente, três tipos de contexto no DAX: contexto de linha, contexto de filtro e contexto de consulta:
- Contexto de linha
De uma forma simplista, o contexto de linha é a linha atual.
No nosso exemplo, que vimos anteriormente, a fórmula que analisamos calculava um valor para cada linha da coluna Margem, tendo em conta os valores existentes nas mesmas linhas das outras colunas.
É este o contexto: O DAX calcula, para cada linha da tabela VendasLiquidas, o valor obtido da subtração dos valores da coluna [VendasTotais] pelos da coluna [CustosTotais].
Este tipo de contexto de linha aplica-se com mais frequência para medidas.
- Contexto de filtro
Basicamente, o contexto de filtro é um ou mais filtros aplicados a um cálculo que determina um resultado ou valor.
O contexto de filtro é aplicado adicionalmente ao contexto de linha e não em sua substituição.
Assim, para reduzir os valores a incluir num cálculo, podemos aplicar um contexto de filtro que especificar não apenas o contexto de linha, mas também apenas um valor específico (filtro) nesse contexto de linha.
Por exemplo, se adicionássemos os nossos CustosTotais à área de valores de uma tabela dinâmica e, depois, arrastávamos o campo Ano e região para as áreas de Linhas ou Colunas, estávamos a definir um contexto de filtro. Ou seja, estávamos a selecionar um subconjunto de dados baseado num ano e numa região específicos.
- Contexto de consulta
O contexto de consulta refere-se ao subconjunto de dados criado implicitamente para cada célula de uma Tabela Dinâmica, dependendo dos cabeçalhos de linha e de coluna. Quando colocamos uma medida ou outro campo de valor numa célula numa tabela dinâmica, o motor Power Pivot examina os cabeçalhos de linha e coluna, segmentação de dados e filtros de relatório para determinar o contexto. Em seguida, o Power Pivot faz os cálculos necessários para preencher cada célula da tabela dinâmica. O conjunto de dados recuperados é o contexto de consulta para cada célula.
Regras de operacionalidade
Tabelas
- Uma janela pode conter várias tabelas, cada uma com um separador próprio
- Na base de dados do Power Pivot, todas as tabelas têm de ter nomes exclusivos.
- Várias tabelas podem ter colunas com os mesmos nomes (a desambiguação é efetuada pelo nome da tabela).
- Os nomes das tabelas têm de ser escritos entre plicas se contiverem espaços, outros carateres especiais, ou quaisquer carateres alfanuméricos não ingleses.
Medidas
- Os nomes das medidas têm de ser sempre escritos entre parênteses.
- Os nomes das medidas podem conter espaços.
- O nome de cada medida tem de ser exclusivo numa base de dados. Consequentemente, o nome da tabela é opcional em frente do nome de uma medida ao referenciar uma medida existente. No entanto, quando criar uma medida tem de especificar sempre uma tabela onde a definição da medida será armazenada.
Colunas
- Os nomes das colunas têm de ser exclusivos no contexto de uma tabela
- As colunas, em cada tabela, também têm de ter nomes exclusivos
- É possível referenciar colunas sem referenciar a tabela base a que estas pertencem, exceto quando existir um conflito de nomes para resolver ou quando determinadas funções necessitem que os nomes das colunas sejam totalmente qualificados.
Carateres Especiais
Os carateres e tipos de carateres seguintes não são válidos nos nomes de tabelas, colunas ou medidas:
- Espaços à esquerda ou à direita, a menos que sejam escritos entre delimitadores de nomes, parênteses retos ou plicas.
- Carateres de controlo
- Os carateres seguintes são inválidos nos nomes de objetos Power Pivot:
Fórmulas e expressões
- As fórmulas e expressões do DAX não podem modificar nem inserir valores individuais em tabelas.
- Não é possível criar linhas calculadas utilizando o DAX. Só é possível criar colunas calculadas e medidas.
- Quando definir colunas calculadas, é possível aninhar funções a qualquer nível.
- O DAX tem várias funções que devolvem uma tabela. Normalmente, é possível utilizar os valores devolvidos por estas funções como entrada para outras funções que necessitam de uma tabela como entrada.
Operadores e Precedências no DAX
A linguagem Data Analysis Expression (DAX) utiliza operadores para criar expressões que comparam valores, efetuam cálculos aritméticos ou trabalham com cadeias.
Existem quatro tipos diferentes de operadores de cálculo: aritméticos, de comparação, de concatenação de texto e lógicos.
Em alguns casos, a ordem pela qual o cálculo é efetuado pode afetar o valor devolvido. Assim, é importante compreendermos o modo como a ordem é determinada e como esta pode ser alterada para a obtenção dos resultados pretendidos.
Vamos descrever a utilização de cada operador, que mencionamos anteriormente.
Basicamente, a ordem de precedência das operações em fórmulas do DAX é a mesma utilizada no Excel. No entanto, alguns operadores do Excel (tal como a percentagem) não são suportados, bem como os intervalos.
A ordem de cálculo e a precedência dos operadores são fatores determinantes no resultado final de qualquer expressão, uma vez que os operadores e os valores, são avaliados por uma ordem específica.
Sabemos que as expressões começam sempre com um sinal de igual (=), o que indica que os carateres seguintes compõem uma expressão. A seguir ao sinal de igual encontram-se os elementos a calcular (os operandos), que estão separados por operadores de cálculo. As expressões são sempre lidas da esquerda para a direita, mas a ordem pela qual os elementos são agrupados pode ser controlada, até determinado nível, pela utilização de parênteses.
Se combinarmos vários operadores numa só fórmula, estes serão ordenados pelo valor de precedência e da esquerda para a direita, respetivamente. Por exemplo, se uma expressão contiver um operador de multiplicação e um operador de divisão, estes serão avaliados pela ordem em que aparecem na expressão, da esquerda para a direita.
Quando copiamos e colamos fórmulas a partir do Excel, temos de nos certificar que analisamos as fórmulas com atenção, uma vez que alguns operadores ou elementos poderão não ser válidos. Se tivermos dúvidas sobre a ordem de execução das operações, devemos utilizar parênteses para controlar a ordem das operações e evitar qualquer incerteza quanto ao resultado.