Você está na página 1de 1

DAX Tradutor Vitor Klein

O que é DAX? Colunas calculadas Avaliação de contexto Grupos de cálculo Hierarquia


› Eles são muito similares aos Membros Calculados do MDX. No › A linguagem DAX, por si só, não tem capacidade hierárquica
“ Data Analysis Expressions (DAX) é uma › Elas se comportam como qualquer outra coluna na tabela. › Todos os cálculos são realizados em uma base e Power BI, não é possível criá-los diretamente no ambiente para automaticamente converter os cálculos para níveis de
Porém, ao invés de vir de uma fonte de dados, elas são criadas dentro do contexto que o ambiente insere o cálculo
biblioteca de funções e operações Desktop, sendo necessária uma ferramenta externa chamada pais ou filhos. Por isso, cada nível deve ser preparado e
através de uma expressão DAX, que é calculada no contexto de (avaliação de contexto). Tabular Editor. demonstrado de acordo com a função ISINSCOPE. Ela testa em
combinadas para criar fórmulas e linha atual. Sendo assim, não podemos obter valores de outra › Contexto de filtro - › Eles são um conjunto de itens calculados e agrupados de qual nível está antes de realizar o cálculo. A validação começa
linha diretamente. A seguinte fórmula calcula o lucro
expressões “ acordo com a definição de uma expressão, que pode ser do nível mais baixo para o mais alto..
› Modo de importação. O cálculo e armazenamento são para cada venda. utilizada com diferentes argumentos de entrada, para que ela › O modelo de dados nativo utilizado pelo DAX não suporta
realizados no momento de processamento dos dados.
não precise ser escrita várias vezes. Onde seria a medida, diretamente a hierarquia pai/filho. Por outro lado, a
Introdução ao DAX › Modo de DirectQuery. O cálculo é realizado em tempo de Lucro =
SUMX( Vendas, podemos utilizar a função SELECTEDMEASURE(). linguagem DAX contém funções que podem converter essa
execução, o que pode deixar o modelo lento. Vendas[Quantidade]* hierarquia entre colunas separadas..
Lucro = Vendas[Quantidade]*Vendas[Preço Unitário] Vendas[Valor Unitario] Exemplo: › PATH – Essa função aceita dois parâmetros, sendo o primeiro a coluna
› Onde achar ) com a chave primária da tabela. O segundo parâmetro é a coluna que
› Power BI, Power Pivot no Excel, Microsoft Analysis Services CALCULATE ( SELECTEDMEASURE(), contém a chave do nível pai da linha. O resultado dessa função se parece
› Propósito Se essa medida for adicionada em Trocas[Fornecedor] = 1) com : 1 | 2 | 3 | 4
› DAX foi criado para enumerar fórmulas sobre um modelo de Medidas uma tabela sem a coluna Country, o
resultado será 5.784.491,77. Com essa coluna, nós obtemos o
› Visualmente, o Grupo de Cálculo se parece com uma tabela
Sintaxe: PATH (<Coluna chave primária>,<Coluna com chave pai>)
› PATHITEM – Essa função retorna um item específico baseado na posição
dados, que são armazenados em forma de tabelas, e podem com apenas duas colunas (Nome e Ordinal) e linhas que do texto, resultado da função PATH. As posições são contadas da
ser ligados através de relacionamentos. Estes podem ter › Elas não comparam cálculos a nível de linha, mas realizam “Total” igualmente a medida anterior. Mesmo assim, os
indicam os itens individuais calculados. esquerda para a direita. A leitura invertida pode ser feita através da
diferentes cardinalidades 1:1, 1:N ou M:N, e a sua direção que agregações de valores em contextos repassados pelo registros individuais aplicam um contexto de FILTRO que é função PATHITEMREVERSE.
› Para facilitar a reutilização das expressões também é possível
determina qual tabela filtra qual. Relacionamentos podem ser ambiente. Por causa disso, não há resultado pré-calculado. Ela aplicado na entrada da função SUMX. Eles se comportam da Sintaxe: PATHITEM (<caminho>,<posição>[,<tipo>])
modificar o formato de saída de cálculos individuais. Dentro
ativos ou inativos. O ativo automaticamente participa dos é calculada apenas no momento que a medida é utilizada. mesma maneira, por exemplo, com AXES no gráfico. › PATHLENGTH – Retorna o número de elementos pais do item
da seção “Format string expression”, frequentemente utiliza- especificado no caminho, incluindo ele próprio.
cálculos. Já o inativo é utilizado quando chamado, por › A condição é que elas devem sempre estar relacionadas à › O contexto de filtro pode ser alterado com várias funções,
se a função DAX SELECTEDMEASUREFORMATSTRING(), da Sintaxe: PATHLENGTH (<caminho>)
exemplo, pela função USERELATIONSHIP(). tabela para gravar seu código, que é possível de ser alterado a como FILTER, ALL, ALLSELECTED.
qual retorna um formato de texto associado com a medida › PATHCONTAINS – retorna verdadeiro caso o item especificado exista no
qualquer momento. Por seu cálculo não ser diretamente › Contexto de linha - Diferentemente do contexto anterior, o caminho determinado.
sendo calculada.
dependente, é uma prática comum obter uma tabela de contexto de linha não filtra a tabela. Ele é utilizado para iterar Sintaxe: PATHCONTAINS (<caminho>,<item>)
medidas separada, que une todas as medidas. Para entre tabelas e calcular valores. Um exemplo específico são as
organização, elas são divididas também em pastas. colunas calculadas, que são calculadas linha a linha da tabela.
A criação manual não é necessária para criar um contexto de Exemplo: Consultas em DAX
Exemplo de Medidas: linha pois o DAX cria isso. No exemplo acima, o uso da › O bloco básico de construção de uma consulta em DAX é a
VAR _selectedCurrency = SELECTEDVALUE( Tabela[Coluna] )
Volume de Vendas = SUM(Vendas[Quantidade]) expressão SUMX também utiliza contexto de linha. Com a RETURN expressão EVALUATE seguida de qualquer expressão cuja saída
função SUMX, a expressão é calculada a cada linha da tabela
Conceitos básicos
SELECTEDMEASUREFORMATSTRING() & „ “ & _selectedCurrency seja uma tabela.
especificada no primeiro parâmetro. O contexto de linha pode Exemplo:
ser utilizado alinhadamente. Ou, para cada linha da tabela, › No Power BI, eles podem ser validados como itens pré-
preparados, ou também é possível utilizar a seção transversal
Variáveis avalia cada linha de uma tabela diferente. EVALUATE
› Elementos e notações para definir itens que estão sendo atualmente calculados. ALL (Vendas[Fornecedor])
› Tabelas – ‘Tabela‘
› Colunas – [Colunas] -> ‘Tabela‘[Colunas] › A confirmação da expressão EVALUATE pode ser dividida em
› Medidas – [Nome da Medida] › Variáveis em fórmulas DAX permitem reutilizar os
cálculos dentro da mesma medida. Podem ser
Funções CALCULATE Algumas vezes é necessário validar o cálculo de um item
somente para medidas específicas. Nesses casos, é possível
três seções principais. Cada seção tem propósitos e palavras
› Comentários introdutórias específicas.
utilizar a função ISSELECTEDMEASURE(), cuja saída é um valor
› Linha única – (CTRL + ´) – // or -- criadas dessa maneira: › CALCULATE e CALCULATETABLE são funções que podem booleano ou o
› Definição – Sempre começa com a palavra DEFINE. Essa seção determina
entidades locais como tabelas, colunas, variáveis e medidas. Pode haver
› Múltiplas linhas – /* */ Medida =
ativar o contexto de filtro. Ela também pode converter o SELECTEDMEASURENAME(), uma seção definida para toda a consulta, porém uma consulta pode
› Tipos de dados VAR _numero_selecionado = contexto de linha para contexto de filtro. cuja saída é o nome da conter múltiplos EVALUATEs.
› INTEGER SELECTEDVALUE( Tabela[Coluna] ) Sintaxe da Calculate e Calculatetable: medida em texto. › Consulta – Sempre começa com a palavra EVALUATE. Essa seção contém
RETURN CALCULATE / CALCULATETABLE ( a expressão da tabela calculada e a retorna como resultado.
› DECIMAL IF(_numero_selecionado < 4, _numero_selecionado , 5 ) <expressão> [ ,<filtro1>, [,...]] › Resultado – Essa seção é opcional e começa com a palavra ORDER BY.
› CURRENCY ) Ela possibilita organizar o resultado de acordo com as entradas definidas.
› DATETIME
› BOOLEAN
› Para declarar uma variável, utilize a palavra VAR › A seção de filtro dentro da expressão CALCULATE não é do
tipo booleano, mas sim uma tabela. Todavia, booleano pode
Condições Examplo:
seguida do nome, “=” e da expressão. Após utilizar a DEFINE
› STRING ser utilizado como argumento.. › Como na maioria das linguagens, o DAX utiliza a função IF.
palavra VAR, é criada um seção em que podem ser VAR _taxa = 0.79
› VARIANT (não implementada no Power BI) › Exemplo de utilização de uma função Calculate é para Nele, a sintaxe é: EVALUATE
› BINARY declaradas 1 até n variáveis. Para cada variável, ADDCOLUMNS(
determinar o total cumulativo das vendas nos últimos 12 IF ( <teste lógico>, <valor se verdadeiro>[, <valor se falso>])
deve-se utilizar uma palavra VAR, seguida de seu meses: O resultado para uma condição falsa é opcional. A função IF
Vendas,
› O DAX consegue trabalhar muito bem com alguns tipos e „Valor de vendas“,
suas combinações. Digamos que, por exemplo, os tipos nome. Para finalizar a seção, a palavra CALCULATE ( calcula explicitamente somente a parte que é relevante de
SUM ( Vendas[Quantidade] ), (Vendas[Quantidade] * Vendas[Preço unitário] ) * _taxa
DATETIME e INTEGER sejam suportados pelo operador “+”, RETURN é necessária para retornar os cálculos. acordo com a condição lógica determinada. )
DATESINPERIOD(
então podemos utilizá-los juntos. › Variáveis são apenas locais. Calendario[Data], › Se ambas as partes precisam ser calculadas, podemos utilizar a ORDER BY [Valor de Vendas]
› Se houver uma variável na fórmula que não é MAX (Calendario[Data] ), função IF.EAGER(), que possui a mesma sintaxe, porém é › Esse tipo de notação é utilizado, por exemplo, no DAX Studio
Exemplo: DATETIME ( [Data] ) + INTEGER ( 1 ) = DATETIME ( [Data] + 1)
-1, calculada como: (daxstudio.org). É uma ferramenta pública que permite a
utilizada no resultado final, ela não é calculada. (Isso YEAR VAR _ valor_se_verdadeiro = < valor se verdadeiro > validação de consultas, dos códigos e também da
se chama Lazy evaluation)
Operadores
)) VAR _ valor_se_falso = < valor se falso > performance em DAX.
› O cálculo de variáveis é realizado no contexto de › Dica de sintaxe:
RETURN › O DAX Studio pode se conectar diretamente no
IF <teste lógico> _ valor_se_verdadeiro, _ valor_se_falso )
validação, e não no contexto em que a variável é › [Volume de troca](Trocas[Fornecedor]=1) › A função IF também tem uma variação chamada IFERROR. O
Analysis Services, Power BI e no Power Pivot do Excel.
› Aritméticos { + , - , / , * , ^ } diretamente utilizada. Dentro de uma expressão =
Fontes recomendadas
cálculo é realizado e a saída é o valor <valor se erro> somente
› Comparação { = , == , > , < , >= , <= , <> } pode haver múltiplas seções VAR / RETURN que CALCULATE ( [Volume de troca], Trocas[Fornecedor]=1) se a expressão retornar um erro. Caso contrário, ela retorna o
› Combinação de texto { & } servirão para avaliação do contexto atual. = valor da própria expressão.
CALCULATE ([Volume de troca], FILTER ( › Marco Russo & Alberto Ferrari
› Lógicos { && , II , IN, NOT } › Elas podem armazenar tanto valores quanto tabelas. ALL (Trocas[Fornecedor] ) ,
› DAX suporta a concatenação de condições, tanto por funções
› Daxpatterns.com
› Priorização { ( , ) } Trocas[Fornecedor]=1) ) IFs alinhadas quanto com a função SWITCH. Ela valida a
› dax.guide
expressão de acordo com uma lista de valores, e retorna um › The Definitive Guide to DAX
resultado dentre várias possíveis expressões.

JAK NA POWER BI CHEATSHEET

Você também pode gostar