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.