Compartilhar via


visão geral do DAX

Expressões de Análise de Dados (DAX) é uma linguagem de expressão de fórmula usada no Analysis Services, no Power BI e no Power Pivot no Excel. DAX as fórmulas incluem funções, operadores e valores para executar cálculos e consultas avançadas em dados em tabelas e colunas relacionadas em modelos de dados tabulares.

Este artigo fornece apenas uma introdução básica aos conceitos mais importantes em DAX. Ele descreve DAX como se aplica a todos os produtos que o usam. Algumas funcionalidades podem não se aplicar a determinados produtos ou casos de uso. Consulte a documentação do produto que descreve sua implementação específica de DAX.

Cálculos

Fórmulas DAX são usadas em medidas, colunas calculadas, tabelas calculadas e segurança em nível de linha.

Medidas

As medidas são fórmulas de cálculo dinâmicas em que os resultados mudam dependendo do contexto. As medidas são usadas em relatórios que dão suporte à combinação e filtragem de dados de modelo usando vários atributos, como um relatório do Power BI ou tabela dinâmica do Excel ou Gráfico Dinâmico. As medidas são criadas usando a DAX barra de fórmulas no designer de modelos.

Uma fórmula em uma medida pode usar funções de agregação padrão criadas automaticamente usando o recurso Autossoma, como COUNT ou SUM, ou você pode definir sua própria fórmula usando a DAX barra de fórmulas. As medidas nomeadas podem ser utilizadas como argumento para outras medidas.

Quando você define uma fórmula para uma medida na barra de fórmulas, um recurso de Dica de Ferramenta mostra uma visualização de quais seriam os resultados para o total no contexto atual, mas caso contrário, os resultados não são imediatamente gerados em qualquer lugar. O motivo pelo qual você não pode ver os resultados (filtrados) do cálculo imediatamente é porque o resultado de uma medida não pode ser determinado sem contexto. Para avaliar uma medida, é necessário um aplicativo cliente de relatório que possa fornecer o contexto necessário para recuperar os dados relevantes para cada célula e, em seguida, avaliar a expressão para cada célula. Esse cliente pode ser uma Tabela Dinâmica ou um Gráfico Dinâmico do Excel, um relatório do Power BI ou uma expressão de tabela em uma consulta DAX no SSMS (SQL Server Management Studio).

Independentemente do cliente, uma consulta separada é executada para cada célula nos resultados. Ou seja, cada combinação de cabeçalhos de linha e coluna em uma Tabela Dinâmica ou cada seleção de segmentações e filtros em um relatório do Power BI gera um subconjunto diferente de dados sobre os quais a medida é calculada. Por exemplo, usando esta fórmula de medida muito simples:

Total Sales = SUM([Sales Amount])

Quando um usuário coloca a medida TotalSales em um relatório e, em seguida, coloca a coluna Categoria do Produto de uma tabela Product em Filtros, a soma de Valor de Vendas é calculada e exibida para cada categoria de produto.

Ao contrário das colunas calculadas, a sintaxe de uma medida inclui o nome da medida anterior à fórmula. No exemplo fornecido, o nome Total de Vendas aparece antes da fórmula. Depois de criar uma medida, o nome e sua definição aparecem na lista campos do aplicativo cliente de relatório e, dependendo das perspectivas e funções, estão disponíveis para todos os usuários do modelo.

Para saber mais, confira: Medidas no Power BI DesktopMedidas nos Serviços de AnáliseMedidas no Power Pivot

Colunas calculadas

Uma coluna calculada é uma coluna que você adiciona a uma tabela existente (no designer de modelo) e, em seguida, cria uma DAX fórmula que define os valores da coluna. Quando uma coluna calculada contém uma fórmula válida DAX , os valores são calculados para cada linha assim que a fórmula é inserida. Os valores são armazenados no modelo de dados na memória. Por exemplo, em uma tabela Date, quando a fórmula é inserida na barra de fórmulas:

= [Calendar Year] & " Q" & [Calendar Quarter]

Um valor para cada linha na tabela é calculado tirando valores da coluna Ano Civil (na mesma tabela Data), adicionando um espaço e a letra maiúscula Q e, em seguida, adicionando os valores da coluna Trimestre do Calendário (na mesma tabela Data). O resultado de cada linha na coluna calculada é calculado imediatamente e aparece, por exemplo, como 2017 Q1. Os valores de coluna só serão recalculados se a tabela ou qualquer tabela relacionada for processada (atualização) ou o modelo for descarregado da memória e recarregado, como ao fechar e reabrir um arquivo do Power BI Desktop.

Para saber mais, confira: Colunas calculadas no Power BI DesktopColunas calculadas no Analysis ServicesColunas calculadas no Power Pivot.

Tabelas calculadas

Uma tabela calculada é um objeto computado, baseado em uma expressão de fórmula, derivada de todas ou parte de outras tabelas no mesmo modelo. Em vez de consultar e carregar valores nas colunas da nova tabela de uma fonte de dados, uma DAX fórmula define os valores da tabela.

Tabelas calculadas podem ser úteis em uma dimensão de jogo de RPG. Um exemplo é a Tabela de data, como OrderDate, ShipDate ou DueDate, dependendo da relação de chave estrangeira. Ao criar uma tabela calculada para ShipDate explicitamente, você obtém uma tabela autônoma que está disponível para consultas, tão totalmente operável quanto qualquer outra tabela. Tabelas calculadas também são úteis ao configurar um conjunto de linhas filtrado ou um subconjunto ou superconjunto de colunas de outras tabelas existentes. Isso permite que você mantenha a tabela original intacta ao criar variações dessa tabela para dar suporte a cenários específicos.

Tabelas calculadas dão suporte a relações com outras tabelas. As colunas em sua tabela calculada têm tipos de dados, formatação e podem pertencer a uma categoria de dados. Tabelas calculadas podem ser nomeadas e exibidas ou ocultadas como qualquer outra tabela. Tabelas calculadas serão recalculadas se qualquer uma das tabelas das quais elas recebem dados por pull forem renovadas ou atualizadas.

Para saber mais, confira: Tabelas calculadas em Power BI DesktopTabelas calculadas no Analysis Services.

Segurança em nível de linha

Com a segurança em nível de linha, uma fórmula DAX precisa ser avaliada como uma condição booliana TRUE/FALSE, definindo as linhas que podem ser retornadas pelos resultados de uma consulta por membros de uma função específica. Por exemplo, para membros da função Sales, a tabela Customers com a seguinte fórmula DAX:

= Customers[Country] = "USA"

Os membros da função Vendas só poderão exibir dados para clientes nos EUA e agregações, como SUM são retornados apenas para clientes nos EUA. A segurança em nível de linha não está disponível no Power Pivot no Excel.

Ao definir a segurança no nível da linha usando a fórmula DAX, você está criando um conjunto de linhas permitidas. Isso não nega o acesso a outras linhas; em vez disso, eles simplesmente não são retornados como parte do conjunto de linhas permitido. Outras funções podem permitir o acesso às linhas excluídas pela DAX fórmula. Se um usuário for membro de outra função e a segurança em nível de linha dessa função permitir o acesso a esse conjunto de linhas específico, o usuário poderá exibir dados dessa linha.

As fórmulas de segurança em nível de linha se aplicam às linhas especificadas, bem como às linhas relacionadas. Quando uma tabela tem várias relações, os filtros aplicam segurança para a relação ativa. Fórmulas de segurança em nível de linha serão interseccionadas com outras fórmulas definidas para tabelas relacionadas.

Para saber mais, confira: Segurança em Nível de Linha (RLS) com o Power BIFunções nos Analysis Services

Perguntas

DAX as consultas podem ser criadas e executadas no SSMS (SQL Server Management Studio) e ferramentas de software livre, como DAX o Studio (daxstudio.org). Ao contrário das DAX fórmulas de cálculo, que só podem ser criadas em modelos de dados tabulares, DAX as consultas também podem ser executadas em modelos Multidimensionais do Analysis Services. DAX As consultas geralmente são mais fáceis de escrever e mais eficientes do que as consultas MDX (Expressões de Dados Multidimensionais).

Uma DAX consulta é uma instrução, semelhante a uma instrução SELECT no T-SQL. O tipo mais básico de DAX consulta é uma declaração de avaliação . Por exemplo

EVALUATE
 ( FILTER ( 'DimProduct', [SafetyStockLevel] < 200 ) )
ORDER BY [EnglishProductName] ASC

Retorna em Resultados uma tabela listando apenas os produtos com um SafetyStockLevel menor que 200, em ordem crescente por EnglishProductName.

Você pode criar medidas como parte da consulta. As medidas existem apenas pelo tempo da consulta. Para saber mais, confira DAX consultas.

Fórmulas

DAX as fórmulas são essenciais para criar cálculos em colunas e medidas calculadas e proteger seus dados usando a segurança em nível de linha. Para criar fórmulas para colunas e medidas calculadas, use a barra de fórmulas na parte superior da janela do designer de modelo ou do DAX Editor. Para criar fórmulas para segurança em nível de linha, use a caixa de diálogo Gerenciador de Função ou Gerenciar funções. As informações nesta seção destinam-se a começar a entender os conceitos básicos das DAX fórmulas.

Noções básicas de fórmula

DAX fórmulas podem ser muito simples ou bastante complexas. A tabela a seguir mostra alguns exemplos de fórmulas simples que podem ser usadas em uma coluna calculada.

Fórmula Definição
= TODAY() Insere a data de hoje em cada linha de uma coluna calculada.
= 3 Insere o valor 3 em cada linha de uma coluna calculada.
= [Column1] + [Column2] Adiciona os valores na mesma linha de [Coluna1] e [Coluna2] e coloca os resultados na coluna calculada da mesma linha.

Se a fórmula criada é simples ou complexa, você pode usar as seguintes etapas ao criar uma fórmula:

  1. Cada fórmula deve começar com um sinal de igual (=).

  2. Você pode digitar ou selecionar um nome de função ou digitar uma expressão.

  3. Comece a digitar as primeiras letras da função ou nome desejado e o Preenchimento Automático exibe uma lista de funções, tabelas e colunas disponíveis. Pressione TAB para adicionar um item da lista Preenchimento Automático à fórmula.

    Você também pode clicar no botão Fx para exibir uma lista de funções disponíveis. Para selecionar uma função na lista suspensa, use as teclas de direção para realçar o item e clique em OK para adicionar a função à fórmula.

  4. Forneça os argumentos para a função selecionando-os em uma lista suspensa de tabelas e colunas possíveis ou digitando valores.

  5. Verifique se há erros de sintaxe: verifique se todos os parênteses estão fechados e se as colunas, tabelas e valores são referenciados corretamente.

  6. Pressione ENTER para aceitar a fórmula.

Observação

Em uma coluna calculada, assim que você insere a fórmula e a fórmula é validada, a coluna é preenchida com valores. Em uma medida, pressionar ENTER salva a definição da medida com a tabela. Se uma fórmula for inválida, um erro será exibido.

Neste exemplo, vamos examinar uma fórmula em uma medida chamada Dias no Trimestre Atual:

Days in Current Quarter = COUNTROWS( DATESBETWEEN( 'Date'[Date], STARTOFQUARTER( LASTDATE('Date'[Date])), ENDOFQUARTER('Date'[Date])))

Essa medida é usada para criar uma taxa de comparação entre um período incompleto e o período anterior. A fórmula deve levar em conta a proporção do período decorrido e compará-la com a mesma proporção no período anterior. Nesse caso, a proporção decorrida no período atual é obtida dividindo [Days Current Quarter to Date] por [Days in Current Quarter].

Esta fórmula contém os seguintes elementos:

Elemento Formula Descrição
Days in Current Quarter O nome da medida.
= O sinal de igual (=) inicia a fórmula.
COUNTROWS COUNTROWS conta o número de linhas na tabela Data
() Abrir e fechar parênteses especifica argumentos.
DATESBETWEEN A função DATESBETWEEN retorna as datas entre a última data correspondente a cada valor na coluna de Datas na tabela de Datas.
'Date' Especifica a tabela Date. As tabelas estão entre aspas simples.
[Date] Especifica a coluna Date na tabela Date. As colunas estão entre colchetes.
,
STARTOFQUARTER A STARTOFQUARTER função retorna a data do início do trimestre.
LASTDATE A LASTDATE função retorna a última data do trimestre.
'Date' Especifica a tabela Date.
[Date] Especifica a coluna Date na tabela Date.
,
ENDOFQUARTER A função ENDOFQUARTER
'Date' Especifica a tabela Date.
[Date] Especifica a coluna Date na tabela Date.

Usar o Preenchimento Automático de Fórmula

O AutoComplete ajuda você a inserir uma sintaxe de fórmula válida fornecendo opções para cada elemento na fórmula.

  • Você pode usar o Preenchimento Automático de Fórmula no meio de uma fórmula existente com funções aninhadas. O texto imediatamente antes do ponto de inserção é usado para exibir valores na lista suspensa e todo o texto após o ponto de inserção permanece inalterado.

  • O Preenchimento Automático não adiciona o parêntese de fechamento de funções nem faz a correspondência automática deles. Você deve verificar se cada função está sintaticamente correta ou não pode salvar ou usar a fórmula.

Usando várias funções em uma fórmula

Você pode aninhar funções, o que significa que você usa os resultados de uma função como um argumento de outra função. Você pode aninhar até 64 níveis de funções em colunas calculadas. No entanto, o aninhamento pode dificultar a criação ou a solução de problemas de fórmulas. Muitas funções são projetadas para serem usadas apenas como funções aninhadas. Essas funções retornam uma tabela, que não pode ser salva diretamente como resultado; ele deve ser fornecido como entrada para uma função de tabela. Por exemplo, as funções SUMXe AVERAGEXMINX todas exigem uma tabela como o primeiro argumento.

Funções

Uma função é uma fórmula nomeada dentro de uma expressão. A maioria das funções tem argumentos obrigatórios e opcionais, também conhecidos como parâmetros, como entrada. Quando a função é executada, um valor é retornado. DAX inclui funções que você pode usar para executar cálculos usando datas e horas, criar valores condicionais, trabalhar com cadeias de caracteres, executar pesquisas com base em relações e a capacidade de iterar em uma tabela para executar cálculos recursivos. Se você estiver familiarizado com fórmulas do Excel, muitas dessas funções serão muito semelhantes; no entanto, DAX as fórmulas são diferentes das seguintes maneiras importantes:

  • Uma DAX função sempre faz referência a uma coluna completa ou a uma tabela. Se você quiser usar apenas valores específicos de uma tabela ou coluna, poderá adicionar filtros à fórmula.

  • Se você precisar personalizar cálculos em uma base linha por linha, DAX fornecerá funções que permitem usar o valor da linha atual ou um valor relacionado como um tipo de parâmetro, para executar cálculos que variam de acordo com o contexto. Para entender como essas funções funcionam, consulte Contexto neste artigo.

  • DAX inclui muitas funções que retornam uma tabela, em vez de um valor. A tabela não é exibida em um cliente de relatório, mas é usada para fornecer entrada para outras funções. Por exemplo, você pode recuperar uma tabela e contar os valores distintos nela ou calcular somas dinâmicas entre tabelas ou colunas filtradas.

  • DAX as funções incluem uma variedade de funções de inteligência de tempo . Essas funções permitem definir ou selecionar intervalos de datas e executar cálculos dinâmicos com base nessas datas ou intervalo. Por exemplo, você pode comparar somas entre períodos paralelos.

Funções de agregação

As funções de agregação calculam um valor (escalar), como contagem, soma, média, mínimo ou máximo para todas as linhas em uma coluna ou tabela, conforme definido pela expressão. Para saber mais, confira as funções de agregação.

Funções de data e hora

As funções de DAX data e hora são semelhantes às funções de data e hora no Microsoft Excel. No entanto, as funções DAX baseiam-se em um tipo de dados datetime a partir de 1º de março de 1900. Para saber mais, veja as funções de data e hora.

Funções de filtro

As funções de filtro em DAX retornam tipos de dados específicos, pesquisam valores em tabelas relacionadas e filtram por valores relacionados. As funções de pesquisa funcionam usando tabelas e relações, como um banco de dados. As funções de filtragem permitem manipular o contexto de dados para criar cálculos dinâmicos. Para saber mais, confira funções de filtro.

Funções financeiras

As funções financeiras em DAX são usadas em fórmulas que executam cálculos financeiros, como o valor presente líquido e a taxa de retorno. Essas funções são semelhantes às funções financeiras usadas no Microsoft Excel. Para saber mais, confira funções financeiras.

Funções informativas

Uma função de informação examina a célula ou linha fornecida como um argumento e informa se o valor corresponde ao tipo esperado. Por exemplo, a função ISERROR retornará TRUE se o valor referenciado contiver um erro. Para saber mais, confira as funções de informações.

Funções lógicas

As funções lógicas atuam em uma expressão para retornar informações sobre os valores na expressão. Por exemplo, a função TRUE permite que você saiba se uma expressão que você está avaliando retorna um valor TRUE. Para saber mais, confira funções lógicas.

Funções matemáticas e trigonométricas

As funções matemáticas em DAX são muito semelhantes às funções matemáticas e trigonométricas do Excel. Existem algumas pequenas diferenças nos tipos de dados numéricos usados pelas DAX funções. Para saber mais, confira funções matemáticas e de trigonometria.

Outras funções

Essas funções executam ações exclusivas que não podem ser definidas por nenhuma das categorias às quais a maioria das outras funções pertence. Para saber mais, confira Outras funções.

Funções de relação

As funções de relação DAX permitem que você retorne valores de outra tabela relacionada, especifique uma relação específica a ser usada em uma expressão e especifique a direção de filtragem cruzada. Para saber mais, confira as funções de relação.

Funções estatísticas

As funções estatísticas calculam valores relacionados a distribuições estatísticas e probabilidade, como desvio padrão e número de permutações. Para saber mais, confira as funções estatísticas.

Funções de texto

As funções de texto em DAX são muito semelhantes às suas contrapartes no Excel. Você pode retornar parte de uma cadeia de caracteres, pesquisar texto dentro de uma cadeia de caracteres ou concatenar valores de cadeia de caracteres. DAX também fornece funções para controlar os formatos de datas, horas e números. Para saber mais, confira as funções de Texto.

Funções de inteligência de dados temporais

As funções de inteligência de tempo fornecidas em DAX permitem criar cálculos que usam conhecimento embutido sobre calendários e datas. Usando intervalos de data e hora em combinação com agregações ou cálculos, você pode criar comparações significativas em períodos de tempo comparáveis para vendas, inventário e assim por diante. Para saber mais, consulte funções de inteligência temporal (DAX).

Funções de manipulação de tabelas

Essas funções retornam uma tabela ou manipulam tabelas existentes. Por exemplo, usando ADDCOLUMNS você pode adicionar colunas calculadas a uma tabela especificada ou pode retornar uma tabela de resumo em um conjunto de grupos com a SUMMARIZECOLUMNS função. Para saber mais, confira as funções de manipulação de tabela.

Variáveis

Você pode criar variáveis em uma expressão usando VAR. VAR tecnicamente não é uma função, é uma palavra-chave para armazenar o resultado de uma expressão como uma variável nomeada. Essa variável pode então ser passada como um argumento para outras expressões de medida. Por exemplo:

VAR
    TotalQty = SUM ( Sales[Quantity] )

Return

    IF (
        TotalQty > 1000,
        TotalQty * 0.95,
        TotalQty * 1.25
        )

Neste exemplo, TotalQty pode ser passado como uma variável nomeada para outras expressões. As variáveis podem ser de qualquer tipo de dados escalar, incluindo tabelas. O uso de variáveis em suas DAX fórmulas pode ser incrivelmente poderoso.

Tipos de dados

Você pode importar dados para um modelo de várias fontes de dados diferentes que podem dar suporte a diferentes tipos de dados. Quando você importa dados para um modelo, os dados são convertidos em um dos tipos de dados de modelo tabular. Quando os dados do modelo são usados em um cálculo, eles são convertidos em um tipo de dados DAX para a duração e a saída do cálculo. Quando você cria uma DAX fórmula, os termos usados na fórmula determinarão automaticamente o tipo de dados de valor retornado.

DAX dá suporte aos seguintes tipos de dados:

Tipo de dados no modelo Tipo de dados em DAX Descrição
Whole Number Um valor inteiro de 64 bits (oito bytes) 1, 2 Números que não têm casas decimais. Inteiros podem ser números positivos ou negativos, mas deve ser números inteiros entre -9.223.372.036.854.775.808 (-2^63) e 9.223.372.036.854.775.807 (2^63-1).
Decimal Number Um número real de 64 bits (oito bytes) 1, 2 Números reais são aqueles que podem incluir casas decimais. Os números reais abrangem uma ampla gama de valores:

Valores negativos de -1,79E +308 a -2,23E -308

Zero

Valores positivos de 2,23E -308 a 1,79E + 308

No entanto, o número de dígitos significativos é limitado a 17 dígitos decimais.
Boolean Booliano Um valor Verdadeiro ou Falso.
Text fio Uma cadeia de dados de caractere Unicode. Pode ser cadeias de caracteres, números ou datas representadas em um formato de texto.
Date Data/hora Datas e horas em um formato aceito de data e hora.

Datas válidas são todas datas após 1º de março de 1900.
Currency Moeda O tipo de dados de moeda permite valores entre -922.337.203.685.477.5808 a 922.337.203.685.477.5807 com quatro dígitos decimais de precisão fixa.
Variant Variante Usado para expressões, como DAX medidas, que podem retornar tipos de dados diferentes. Por exemplo, uma DAX medida que retorna um número inteiro ou uma cadeia de caracteres será do tipo variant.
N/A Em Branco Um espaço em branco é um tipo de dados em DAX que representa e substitui nulos SQL. Você pode criar um espaço em branco usando a BLANK função e testar espaços em branco usando a função lógica. ISBLANK

Os modelos de dados tabulares também incluem o tipo de dados Tabela como entrada ou saída para várias DAX funções. Por exemplo, a FILTER função usa uma tabela como entrada e gera outra tabela que contém apenas as linhas que atendem às condições de filtro. Combinando funções de tabela com funções de agregação, você pode executar cálculos complexos em conjuntos de dados definidos dinamicamente.

Embora os tipos de dados normalmente sejam definidos automaticamente, é importante entender os tipos de dados e como eles se aplicam, em particular, às DAX fórmulas. Erros em fórmulas ou resultados inesperados, por exemplo, geralmente são causados pelo uso de um operador específico que não pode ser usado com um tipo de dados especificado em um argumento. Por exemplo, a fórmula, = 1 & 2, retorna um resultado de cadeia de caracteres 12. A fórmula, = "1" + "2"no entanto, retorna um resultado inteiro de 3.

Observação

Cálculos em tipos de dados de cadeia de caracteres podem ser restritos a 64kb.

Contexto

O contexto é um conceito importante para entender ao criar DAX fórmulas. O contexto é o que permite que você execute uma análise dinâmica, pois os resultados de uma fórmula mudam para refletir a seleção de linha ou célula atual e também quaisquer dados relacionados. Entender o contexto e usar o contexto efetivamente é fundamental para criar análises dinâmicas e de alto desempenho e para solucionar problemas em fórmulas.

Fórmulas em modelos tabulares podem ser avaliadas em um contexto diferente, dependendo de outros elementos de design:

  • Filtros aplicados em uma Tabela Dinâmica ou um relatório
  • Filtros definidos em uma fórmula
  • Relações especificadas usando funções especiais em uma fórmula

Há diferentes tipos de contexto: contexto de linha, contexto de consulta e contexto de filtro.

Contexto de linha

O contexto de linha pode ser considerado "a linha atual". Se você criar uma fórmula em uma coluna calculada, o contexto de linha dessa fórmula incluirá os valores de todas as colunas na linha atual. Se a tabela estiver relacionada a outra tabela, o conteúdo também incluirá todos os valores da outra tabela que estão relacionados à linha atual.

Por exemplo, suponha que você crie uma coluna calculada, = [Freight] + [Tax]que adicione valores de duas colunas, Frete e Imposto, da mesma tabela. Essa fórmula obtém automaticamente apenas os valores da linha atual nas colunas especificadas.

O contexto de linha também segue todas as relações que foram definidas entre tabelas, incluindo relações definidas em uma coluna calculada usando DAX fórmulas, para determinar quais linhas em tabelas relacionadas estão associadas à linha atual.

Por exemplo, a fórmula a seguir usa a RELATED função para buscar um valor de imposto de uma tabela relacionada, com base na região para a qual o pedido foi enviado. O valor do imposto é determinado usando o valor da região na tabela atual, pesquisando a região na tabela relacionada e obtendo a taxa de imposto para essa região da tabela relacionada.

= [Freight] + RELATED('Region'[TaxRate])

Essa fórmula obtém a taxa de imposto para a região atual da tabela Região e a adiciona ao valor da coluna Freight. Nas DAX fórmulas, você não precisa saber nem especificar a relação específica que conecta as tabelas.

Contexto de várias linhas

O DAX inclui funções que iteram cálculos em uma tabela. Essas funções podem ter várias linhas atuais, cada uma com seu próprio contexto de linha. Em essência, essas funções permitem criar fórmulas que executam operações recursivamente em um loop interno e externo.

Por exemplo, suponha que seu modelo contenha uma tabela Produtos e uma tabela Vendas . Os usuários podem querer percorrer toda a tabela de vendas, que está cheia de transações envolvendo vários produtos, e encontrar a maior quantidade ordenada para cada produto em qualquer transação.

Com DAX você pode criar uma única fórmula que retorna o valor correto e os resultados são atualizados automaticamente sempre que um usuário adiciona dados às tabelas.

= MAXX(FILTER(Sales,[ProdKey] = EARLIER([ProdKey])),Sales[OrderQty])

Para obter um exemplo detalhado dessa fórmula, consulte EARLIER.

Para resumir, a EARLIER função armazena o contexto de linha da operação que precedeu a operação atual. Em todos os momentos, a função armazena na memória dois conjuntos de contexto: um conjunto de contexto representa a linha atual para o loop interno da fórmula e outro conjunto de contexto representa a linha atual para o loop externo da fórmula. DAX alimenta automaticamente valores entre os dois loops para que você possa criar agregações complexas.

Contexto de consulta

O contexto de consulta refere-se ao subconjunto de dados que é recuperado implicitamente para uma fórmula. Por exemplo, quando um usuário coloca uma medida ou campo em um relatório, o mecanismo examina cabeçalhos de linha e coluna, segmentações e filtros de relatório para determinar o contexto. As consultas necessárias são executadas em dados de modelo para obter o subconjunto correto de dados, fazer os cálculos definidos pela fórmula e, em seguida, preencher valores no relatório.

Como o contexto muda dependendo de onde você coloca a fórmula, os resultados da fórmula também podem ser alterados. Por exemplo, suponha que você crie uma fórmula que soma os valores na coluna Lucro da tabela Vendas : = SUM('Sales'[Profit]). Se você usar essa fórmula em uma coluna calculada dentro da tabela Vendas , os resultados da fórmula serão os mesmos para toda a tabela, pois o contexto de consulta da fórmula é sempre o conjunto de dados inteiro da tabela Vendas . Os resultados terão lucro para todas as regiões, todos os produtos, todos os anos e assim por diante.

No entanto, os usuários normalmente não querem ver o mesmo resultado centenas de vezes, mas em vez disso querem obter o lucro de um determinado ano, um determinado país, um produto específico ou alguma combinação deles, e depois obter um total geral.

Em um relatório, o contexto é alterado filtrando, adicionando ou removendo campos e usando segmentações de dados. Para cada alteração, o contexto de consulta no qual a medida é avaliada. Portanto, a mesma fórmula, usada em uma medida, é avaliada em um contexto de consulta diferente para cada célula.

Contexto de filtro

O contexto de filtro é o conjunto de valores permitidos em cada coluna ou nos valores recuperados de uma tabela relacionada. Os filtros podem ser aplicados à coluna na Área de Trabalho ou na camada de apresentação (relatórios e Tabelas Dinâmicas). Os filtros também podem ser definidos explicitamente por expressões de filtro dentro da fórmula.

O contexto de filtro é adicionado quando você especifica restrições de filtro no conjunto de valores permitidos em uma coluna ou tabela usando argumentos em uma fórmula. O contexto de filtro se aplica sobre outros contextos, como contexto de linha ou contexto de consulta.

Em modelos tabulares, há várias maneiras de criar contexto de filtro. Dentro do contexto de clientes que podem consumir o modelo, como relatórios do Power BI, os usuários podem criar filtros dinamicamente adicionando segmentações ou filtros de relatório nos cabeçalhos de linha e coluna. Você também pode especificar expressões de filtro diretamente dentro da fórmula, especificar valores relacionados, filtrar tabelas usadas como entradas ou obter dinamicamente o contexto dos valores usados nos cálculos. Você também pode limpar completamente os filtros ou limpá-los seletivamente em colunas específicas. Isso é muito útil ao criar fórmulas que calculam totais gerais.

Para saber mais sobre como criar filtros dentro de fórmulas, consulte a FILTER Função (DAX). Para obter um exemplo de como os filtros podem ser limpos para criar totais gerais, consulte a ALL Função (DAX).

Para obter exemplos de como limpar e aplicar filtros seletivamente dentro de fórmulas, consulte ALLEXCEPT.

Determinando o contexto em fórmulas

Quando você cria uma DAX fórmula, a fórmula é testada pela primeira vez para sintaxe válida e, em seguida, testada para garantir que os nomes das colunas e tabelas incluídas na fórmula possam ser encontrados no contexto atual. Se qualquer coluna ou tabela especificada pela fórmula não puder ser encontrada, um erro será retornado.

O contexto durante a validação (e operações de recálculo) é determinado conforme descrito nas seções anteriores, usando as tabelas disponíveis no modelo, as relações entre as tabelas e os filtros que foram aplicados.

Por exemplo, se você acabou de importar alguns dados para uma nova tabela e ela não está relacionada a nenhuma outra tabela (e você não aplicou nenhum filtro), o contexto atual é todo o conjunto de colunas na tabela. Se a tabela estiver vinculada por relações a outras tabelas, o contexto atual incluirá as tabelas relacionadas. Se você adicionar uma coluna da tabela a um relatório que tenha uma Segmentação de Dados e talvez alguns filtros de relatório, o contexto da fórmula será o subconjunto de dados em cada célula do relatório.

O contexto é um conceito poderoso que também pode dificultar a solução de problemas de fórmulas. Recomendamos que você comece com fórmulas e relações simples para ver como o contexto funciona. A seção a seguir fornece alguns exemplos de como as fórmulas usam diferentes tipos de contexto para retornar resultados dinamicamente.

Operadores

O DAX idioma usa quatro tipos diferentes de operadores de cálculo em fórmulas:

  • Operadores de comparação para comparar valores e retornar um valor 'FALSE' lógicoTRUE.
  • Operadores aritméticos para executar cálculos aritméticos que retornam valores numéricos.
  • Operadores de concatenação de texto para unir duas ou mais cadeias de texto.
  • Operadores lógicos que combinam duas ou mais expressões para retornar um único resultado.

Para obter informações detalhadas sobre operadores usados em DAX fórmulas, consulte DAX operadores.

Trabalhando com tabelas e colunas

Tabelas em modelos de dados tabulares se parecem com tabelas do Excel, mas são diferentes na maneira como trabalham com dados e com fórmulas:

  • As fórmulas funcionam apenas com tabelas e colunas, não com células individuais, referências de intervalo ou matrizes.
  • Fórmulas podem usar relações para obter valores de tabelas relacionadas. Os valores recuperados estão sempre relacionados ao valor da linha atual.
  • Você não pode ter dados irregulares ou "desorganizados" como você pode em uma planilha do Excel. Cada linha em uma tabela deve conter o mesmo número de colunas. No entanto, você pode ter valores vazios em algumas colunas. Tabelas de dados do Excel e tabelas de dados de modelo de tabela não são intercambiáveis.
  • Como um tipo de dados é definido para cada coluna, cada valor nessa coluna deve ser do mesmo tipo.

Referenciar tabelas e colunas em fórmulas

Você pode consultar qualquer tabela e coluna usando seu nome. Por exemplo, a fórmula a seguir ilustra como fazer referência a colunas de duas tabelas usando o nome totalmente qualificado :


= SUM('New Sales'[Amount]) + SUM('Past Sales'[Amount])

Quando uma fórmula é avaliada, o designer de modelo primeiro verifica a sintaxe geral e verifica os nomes de colunas e tabelas que você fornece em relação a possíveis colunas e tabelas no contexto atual. Se o nome for ambíguo ou se a coluna ou tabela não puder ser encontrada, você receberá um erro em sua fórmula (uma cadeia de caracteres #ERROR em vez de um valor de dados em células em que o erro ocorre). Para saber mais sobre requisitos de nomenclatura para tabelas, colunas e outros objetos, consulte Os Requisitos de Nomenclatura na DAX sintaxe.

Relacionamentos de tabela

Ao criar relações entre tabelas, você obtém a capacidade de usar valores relacionados em outras tabelas para serem usados em cálculos. Por exemplo, você pode usar uma coluna calculada para determinar todos os registros de envio relacionados ao revendedor atual e, em seguida, somar os custos de envio para cada um. Em muitos casos, no entanto, uma relação pode não ser necessária. Você pode usar a LOOKUPVALUE função em uma fórmula para retornar o valor em result_columnName para a linha que atende aos critérios especificados nos argumentos search_column e search_value .

Muitas DAX funções exigem que exista uma relação entre as tabelas ou entre várias tabelas, a fim de localizar as colunas referenciadas e retornar resultados que façam sentido. Outras funções tentarão identificar a relação; no entanto, para obter melhores resultados, você sempre deve criar uma relação sempre que possível. Os modelos de dados tabulares dão suporte a várias relações entre tabelas. Para evitar confusão ou resultados incorretos, apenas uma relação por vez é designada como a relação ativa, mas você pode alterar a relação ativa conforme necessário para percorrer diferentes conexões nos dados nos cálculos. USERELATIONSHIP a função pode ser usada para especificar uma ou mais relações a serem usadas em um cálculo específico.

É importante observar essas regras de design de fórmula ao usar relações:

  • Quando as tabelas são conectadas por uma relação, você deve garantir que as duas colunas usadas como chaves tenham valores correspondentes. A integridade referencial não é imposta, portanto, é possível ter valores não correspondentes em uma coluna de chave e ainda criar uma relação. Se isso acontecer, você deverá estar ciente de que valores em branco ou valores não correspondentes podem afetar os resultados das fórmulas.

  • Ao vincular tabelas em seu modelo usando relações, você amplia o escopo ou o contexto, no qual suas fórmulas são avaliadas. As alterações no contexto resultantes da adição de novas tabelas, novas relações ou alterações na relação ativa podem fazer com que seus resultados mudem de maneiras que você pode não prever. Para saber mais, confira Contexto neste artigo.

Processar e atualizar

O processo e o recálculo são duas operações separadas, mas relacionadas. Você deve entender detalhadamente esses conceitos ao projetar um modelo que contém fórmulas complexas, grandes quantidades de dados ou dados obtidos de fontes de dados externas.

O processo (atualização) está atualizando os dados em um modelo com novos dados de uma fonte de dados externa.

O recálculo é o processo de atualização dos resultados das fórmulas para refletir as alterações nas próprias fórmulas e refletir as alterações nos dados subjacentes. O recálculo pode afetar o desempenho das seguintes maneiras:

  • Os valores em uma coluna calculada são computados e armazenados no modelo. Para atualizar os valores na coluna calculada, você deve processar o modelo usando um dos três comandos de processamento – Process Full, Process Data ou Process Recalc. O resultado da fórmula sempre deve ser recalculado para toda a coluna, sempre que você alterar a fórmula.

  • Os valores calculados por medidas são avaliados dinamicamente sempre que um usuário adiciona a medida a uma Tabela Dinâmica ou abre um relatório; conforme o usuário modifica o contexto, os valores retornados pela medida são alterados. Os resultados da medida sempre refletem o mais recente no cache na memória.

O processamento e o recálculo não têm efeito sobre fórmulas de segurança em nível de linha, a menos que o resultado de um recálculo retorne um valor diferente, tornando a linha consultável ou não consultável por membros da função.

Atualizações

DAX está constantemente sendo aprimorado. As funções novas e atualizadas são lançadas com a próxima atualização disponível, que geralmente é mensal. Os serviços são atualizados primeiro, seguidos por aplicativos instalados como Power BI Desktop, Excel, SQL Server Management Studio (SSMS) e extensão de projeto do Analysis Services para Visual Studio (SSDT). O SQL Server Analysis Services é atualizado com a próxima atualização cumulativa. As novas funções são anunciadas e descritas pela primeira vez na referência de funções DAX, coincidindo com as atualizações do Power BI Desktop.

Nem todas as funções têm suporte em versões anteriores do SQL Server Analysis Services e do Excel.

Resolução de problemas

Se você receber um erro ao definir uma fórmula, a fórmula poderá conter um erro sintactico, um erro semântico ou um erro de cálculo.

Erros sintacticos são os mais fáceis de resolver. Normalmente, eles envolvem parênteses ou vírgulas ausentes.

O outro tipo de erro ocorre quando a sintaxe está correta, mas o valor ou uma coluna referenciada não faz sentido no contexto da fórmula. Esses erros semânticos e de cálculo podem ser causados por qualquer um dos seguintes problemas:

  • A fórmula refere-se a uma coluna, tabela ou função não existente.
  • A fórmula parece estar correta, mas quando o mecanismo de dados busca os dados, ela encontra uma incompatibilidade de tipo e gera um erro.
  • A fórmula passa um número ou tipo incorreto de argumentos para uma função.
  • A fórmula refere-se a uma coluna diferente que tem um erro e, portanto, seus valores são inválidos.
  • A fórmula refere-se a uma coluna que não foi processada, o que significa que ela tem metadados, mas nenhum dado real a ser usado para cálculos.

Nos quatro primeiros casos, DAX sinaliza toda a coluna que contém a fórmula inválida. No último caso, DAX deixa a coluna esmaecida para indicar que a coluna está em um estado não processado.

Aplicativos e ferramentas

Power BI para Desktop

Power BI Desktop

O Power BI Desktop é um aplicativo gratuito de modelagem e relatório de dados. O designer de modelo inclui um DAX editor para criar DAX fórmulas de cálculo.

Power Pivot no Excel

Power Pivot no Excel

O designer de modelos do Power Pivot no Excel inclui um DAX editor para criar DAX fórmulas de cálculo.

Visual Studio

Visual Studio

O Visual Studio com a extensão de projetos do Analysis Services (VSIX) é usado para criar projetos de modelo do Analysis Services. O designer de modelo tabular, instalado com a extensão de projetos, inclui um editor DAX.

SQL Server Management Studio

SQL Server Management Studio

O SSMS (SQL Server Management Studio) é uma ferramenta essencial para trabalhar com o Analysis Services. O SSMS inclui um DAX editor de consultas para consultar modelos tabulares e multidimensionais.

DAX Estúdio

DAX Ícone do studio

DAX O Studio é uma ferramenta de cliente de software livre para criar e executar DAX consultas no Analysis Services, no Power BI Desktop e no Power Pivot em modelos do Excel.

Editor de Tabela

Ícone do Editor tabular

O Editor de Tabelas é uma ferramenta de software livre que fornece uma exibição intuitiva e hierárquica de cada objeto em metadados de modelo tabular. O Editor de Tabela inclui um Editor de DAX com realce de sintaxe, que fornece uma forma fácil de editar medidas, colunas calculadas e expressões de tabelas calculadas.

Recursos de aprendizagem

Ao aprender DAX, é melhor usar o aplicativo que você usará para criar seus modelos de dados. O Analysis Services, o Power BI Desktop e o Power Pivot no Excel têm artigos e tutoriais que incluem lições sobre como criar medidas, colunas calculadas e filtros de linha usando DAX. Estes são alguns recursos adicionais:

Videos

Roteiro de aprendizagem Usar o DAX no Power BI Desktop.

The Definitive Guide to DAX de Alberto Ferrari e Marco Russo (Microsoft Press). Agora, em sua segunda edição, este guia abrangente fornece noções básicas sobre técnicas inovadoras de alto desempenho para modeladores de dados inicialmente e profissionais de BI.

Imagem do livro The Definitive Guide to DAX

Comunidade

DAX tem uma comunidade vibrante sempre disposta a compartilhar seus conhecimentos. A Comunidade do Microsoft Power BI tem um fórum de discussão especial apenas para DAXcomandosDAX e dicas.