Escrever fórmulas DAX
Cada tipo de cálculo de modelo, tabela calculada, coluna calculada ou medida é definido por seu nome, seguido pelo símbolo de igual (=), que é seguido por uma fórmula DAX. Use o seguinte modelo para criar um cálculo de modelo:
<Calculation name> = <DAX formula>
Por exemplo, a definição da tabela calculada Ship Date que duplica os dados da tabela Date é:
Ship Date = 'Date'
Uma fórmula DAX consiste em expressões que retornam um resultado. O resultado é um objeto de tabela ou um valor escalar. Fórmulas de tabela calculadas devem retornar um objeto de tabela; fórmulas de coluna e medida calculadas devem retornar um valor escalar (valor único).
As fórmulas são montadas usando:
- Funções DAX
- Operadores DAX
- Referências a objetos de modelo
- Valores constantes, como o número 24 ou o texto literal "FY" (abreviação de ano fiscal em inglês)
- Variáveis DAX
- Espaço em branco
Dica
Ao inserir fórmulas DAX no Power BI Desktop, você tem o benefício do IntelliSense. O IntelliSense é um recurso de finalização de código que lista funções e recursos de modelo. Quando você seleciona uma função DAX, ela também fornece uma definição e uma descrição. É recomendável usar o IntelliSense para ajudar a criar fórmulas precisas rapidamente.
Funções DAX
Assim como o Microsoft Excel, o DAX é uma linguagem funcional, o que significa que as fórmulas dependem de funções para atingir metas específicas. Normalmente, as funções DAX têm argumentos que permitem a passagem de variáveis. As fórmulas podem usar várias chamadas de função e, muitas vezes, aninharão funções em outras funções.
Em uma fórmula, os nomes de função devem ser seguidos por parênteses. As variáveis são passadas dentro dos parênteses.
Observação
Algumas funções não usam argumentos, ou os argumentos podem ser opcionais.
O trabalho com funções DAX é descrito posteriormente neste módulo.
Operadores DAX
As fórmulas também contam com operadores, que podem executar cálculos aritméticos, comparar valores, trabalhar com cadeias de caracteres ou condições de teste.
Os operadores DAX são descritos em detalhes mais adiante neste módulo.
Referências a objetos de modelo
As fórmulas podem fazer referência apenas a três tipos de objeto de modelo: tabelas, colunas ou medidas. Uma fórmula não pode fazer referência a uma hierarquia ou a um nível de hierarquia. (Lembre-se de que um nível de hierarquia é baseado em uma coluna, portanto, sua fórmula pode se referir a uma coluna de nível de hierarquia.)
Referências de tabela
Quando você faz referência a uma tabela em uma fórmula, oficialmente, o nome da tabela é colocado entre aspas simples. Na definição de tabela calculada a seguir, observe que a tabela Date está entre aspas simples.
Ship Date = 'Date'
No entanto, as aspas simples poderão ser omitidas quando estas duas condições forem verdadeiras:
- O nome da tabela não inclui espaços incorporados.
- O nome da tabela não é uma palavra reservada usada pelo DAX. Todos os nomes e operadores da função DAX são palavras reservadas.
Date é um nome de função DAX, que explica por que, ao fazer referência a uma tabela chamada
Date, você deve colocá-la entre aspas simples.
Na definição de tabela calculada a seguir, é possível omitir as aspas simples ao fazer referência à tabela Airport:
Arrival Airport = Airport
Referências de coluna
Ao fazer referência a uma coluna em uma fórmula, o nome da coluna deve estar entre colchetes. Se desejar, ele pode ser precedido pelo nome de sua tabela. Por exemplo, a definição de medida a seguir refere-se à coluna Sales Amount.
Revenue = SUM([Sales Amount])
Como os nomes de coluna são exclusivos em uma tabela, mas não necessariamente exclusivos no modelo, você pode eliminar a ambiguidade da referência de coluna colocando o nome de sua tabela na frente. Essa coluna sem ambiguidade é conhecida como uma coluna totalmente qualificada. Algumas funções DAX exigem a passagem de colunas totalmente qualificadas.
Dica
Para melhorar a legibilidade de suas fórmulas, é recomendável sempre preceder uma referência de coluna pelo nome de sua tabela.
A definição de medida de exemplo anterior pode ser reescrita como:
Revenue = SUM(Sales[Sales Amount])
Referências de medida
Ao fazer referência a uma medida em uma fórmula, como referências de nome de coluna, o nome da medida deve ser colocado entre colchetes. Por exemplo, a definição de medida a seguir refere-se às medidas Revenue e Cost.
Profit = [Revenue] - [Cost]
Caso não esteja familiarizado com o DAX, o fato de as referências de coluna e medida estarem sempre entre colchetes poderá causar confusão quando você estiver tentando entender uma fórmula. No entanto, à medida que se tornar proficiente nos fundamentos do DAX, você poderá determinar o tipo de objeto, já que nas fórmulas DAX, colunas e medidas são usadas de maneiras diferentes.
Dica
É possível preceder uma referência de medida pelo nome de sua tabela. No entanto, as medidas são um objeto no nível de modelo. Embora elas sejam atribuídas a uma tabela inicial, é apenas um relacionamento superficial para organizar de modo lógico as medidas no painel Dados.
Portanto, embora seja recomendável sempre preceder uma referência de coluna com o nome de sua tabela, o inverso é verdadeiro para medidas: é aconselhável nunca preceder uma referência de medida com o nome de sua tabela.
Para obter mais informações, confira Referências de coluna e medida.
Variáveis DAX
As fórmulas podem declarar variáveis DAX para armazenar resultados.
Como e quando usar variáveis DAX é descrito posteriormente neste módulo.
Espaço em branco
O espaço em branco refere-se aos caracteres que você pode usar para formatar suas fórmulas de modo rápido e simples de entender. Os caracteres de espaço em branco incluem:
- Espaços
- Guias
- Retornos de carro
O espaço em branco é opcional e não modifica a lógica da sua fórmula nem afeta negativamente o desempenho. É altamente recomendável adotar um estilo de formato e aplicá-lo de modo consistente, além de considerar as seguintes recomendações:
- Use espaços entre operadores.
- Use tabulações para recuar chamadas de função aninhadas.
- Use retornos de carro para separar argumentos de função, especialmente quando ele é muito longo para caber em uma única linha. Formatar dessa maneira torna mais fácil solucionar problemas, especialmente quando a fórmula está com um parêntese faltando.
- É melhor pecar pelo excesso de espaços em branco do que pela falta deles.
Dica
Na barra de fórmulas, para inserir um retorno de carro, pressione Shift+Enter. Pressionar apenas Enter confirma sua fórmula.
Observe como a seguinte definição de medida é escrita em uma única linha e inclui cinco chamadas de função DAX:
Revenue YoY % = DIVIDE([Revenue] - CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date])), CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date])))
O exemplo a seguir é a mesma definição de medida, mas agora formatada, o que ajuda a facilitar a leitura e a compreensão:
Revenue YoY % =
DIVIDE(
[Revenue]
- CALCULATE(
[Revenue],
SAMEPERIODLASTYEAR('Date'[Date])
),
CALCULATE(
[Revenue],
SAMEPERIODLASTYEAR('Date'[Date])
)
)
Tente formatar a medida por conta própria. Abra o arquivo do Power BI Desktop Adventure Works DW 2020 M02.pbix e, no painel Dados, expanda a tabela Sales e selecione a medida Revenue YoY %. Na barra de fórmulas, use os caracteres de retorno de carro e tabulação para produzir o mesmo resultado do exemplo anterior. Ao adicionar um retorno de carro, lembre-se de pressionar Shift+Enter.
A legibilidade e o desempenho dessa definição de medida podem ser melhorados ainda mais, como será explicado mais adiante neste módulo.
Dica
Uma ferramenta de formatação excelente de outra fonte que pode ajudar você a formatar seus cálculos é o DAX Formatter. Essa ferramenta permite colar no seu cálculo e formatá-lo. Você pode, então, copiar o cálculo formatado na área de transferência e colá-lo de volta no Power BI Desktop.