Escrever fórmulas DAX

Concluído

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 Table ou um valor escalar. As fórmulas de tabela calculada precisam retornar um objeto de tabela; as fórmulas de coluna e medida calculadas precisam retornar um valor escalar (ú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 "AF" (abreviação para ano fiscal)
  • 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. Recomendamos que você use o IntelliSense para ajudar a criar fórmulas precisas rapidamente.

Funções DAX

Semelhante ao Microsoft Excel, o DAX é uma linguagem funcional, ou seja, 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 dentro de outras funções.

Em uma fórmula, os nomes de função devem ser seguidos por parênteses. Dentro dos parênteses, as variáveis são passadas.

Observação

Algumas funções não usam argumentos ou os argumentos podem ser opcionais.

Trabalhar 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 mais detalhadamente adiante neste módulo.

Referências a objetos de modelo

As fórmulas só podem fazer referência a três tipos de objetos 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 as seguintes duas condições forem verdadeiras:

  1. O nome da tabela não inclui espaços inseridos.
  2. O nome da tabela não é uma palavra reservada que é usada pelo DAX. Todos os nomes e operadores de função DAX são palavras reservadas. Date é um nome de função DAX, o que explica por quê, ao fazer referência a uma tabela denominada Date, ela precisa ser colocada entre aspas simples.

Na seguinte definição de tabela calculada, é possível omitir as aspas simples ao referenciar a tabela Airport:

Arrival Airport = Airport

Referências de coluna

Quando você faz referência a uma coluna em uma fórmula, o nome da coluna precisa ser colocado entre colchetes. Opcionalmente, ele pode ser precedido pelo seu nome de tabela. Por exemplo, a definição de medida a seguir refere-se à coluna Valor de Vendas.

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 seu nome de tabela na frente. Essa coluna desambiguada é 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 seu nome de tabela.

A definição de medida de exemplo anterior pode ser reescrita como:

Revenue = SUM(Sales[Sales Amount])

Referências de medida

Quando você faz referência a uma medida em uma fórmula, como referências de nome de coluna, o nome da medida precisa ser colocado entre colchetes. Por exemplo, a definição de medida a seguir refere-se às medidas Receita e Custo.

Profit = [Revenue] - [Cost]

Se você for um iniciante em DAX, o fato de as referências de coluna e de medida sempre serem colocadas entre colchetes poderá causar confusão quando você tentar ler uma fórmula. No entanto, quando você for proficiente nos conceitos básicos do DAX, poderá determinar qual é o tipo de objeto porque, em fórmulas DAX, colunas e medidas são usadas de maneiras diferentes.

Dica

É possível preceder uma referência de medida pelo seu nome de tabela. No entanto, as medidas são um objeto no nível de modelo. Embora elas são atribuídas a uma tabela inicial, é apenas uma relação superficial para organizar logicamente as medidas no painel Campos.

Portanto, embora seja recomendável sempre preceder uma referência de coluna pelo seu nome de tabela, o inverso é verdadeiro para as medidas: É recomendável nunca preceder uma referência de medida pelo seu nome de 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
  • Tabulações
  • Retornos de carro

O espaço em branco é opcional e não modifica a lógica da fórmula nem afeta negativamente o desempenho. É altamente recomendável que você adote um estilo de formato e aplique-o de modo consistente e considere 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. A formatação dessa maneira torna mais simples solucionar problemas, especialmente quando a fórmula não tem um parêntese.
  • Prefira errar por incluir espaço em branco demais do que de menos.

Dica

Na barra de fórmulas, para inserir um retorno de carro, pressione Shift+Enter. Pressionar apenas Enter confirmará sua fórmula.

Considere a seguinte definição de medida que é gravada em uma única linha e que 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 você mesmo formatar a medida. Abra o arquivo do Power BI Desktop Adventure Works DW 2020 M02.pbix e, no painel Campos, expanda a tabela Sales e selecione a medida Revenue YoY %. Na barra de fórmulas, use tabulação e caracteres de retorno de carro para produzir o mesmo resultado do exemplo anterior. Ao adicionar um retorno de carro, lembre-se de pressionar Shift+Enter.

Essa definição de medida pode ser aprimorada ainda mais para facilitar a leitura e o desempenho, o que será explicado posteriormente neste módulo.

Dica

Uma ferramenta de formatação excelente de outra fonte que pode ajudar você a formatar seus cálculos é o Formatador DAX. A ferramenta permite colar seu cálculo e formatá-lo. Em seguida, você pode copiar o cálculo formatado para a área de transferência e colá-lo de volta no Power BI Desktop.