Visão geral DAX
Expressões de Análise de Dados (DAX) é uma linguagem de expressões de fórmula usada no Analysis Services, Power BI, andPower Pivot no Excel. DAX fórmulas incluem funções, operadores andvalues para executar cálculos avançados and consultas em dados em tabelas and colunas related em modelos de dados tabulares.
Este artigo fornece apenas uma introdução básica aos conceitos mais importantes do DAX. Descreve DAX como se aplica a all os produtos que a utilizam. Algumas funcionalidades podem not se aplicar a determinados produtos or casos de uso. Consulte a documentação do seu productdescrevendo sua implementação específica de DAX.
Cálculos
DAX fórmulas são usadas em medidas, colunas calculadas, tabelas calculadas e and segurança ao nível de linha.
Medidas
As medidas são fórmulas de cálculo dinâmicas onde os resultados mudam dependendo do contexto. As medidas são usadas em relatórios que suportam a combinação de and filtragem de dados do modelo usando vários atributos, como um relatório de BI Poweror Tabela Dinâmica or Gráfico Dinâmico do Excel. As medidas são criadas usando a barra de fórmulas DAX no modelador de modelos.
Uma fórmula em um measure pode usar funções de agregação padrão criadas automaticamente usando o recurso Soma automática, como COUNTorSUM, or você pode define sua própria fórmula usando a barra de fórmulas DAX. Medidas nomeadas podem ser passadas como argumentos para outras medidas.
Quando você define uma fórmula para um measure na barra de fórmulas, um recurso Dica de ferramenta mostra uma visualização de quais seriam os resultados para o total no contexto atual, mas, caso contrário, os resultados not são imediatamente exibidos em qualquer lugar. A razão pela qual você não pode ver os resultados (filtrados) do cálculo imediatamente é porque o resultado de uma measure não pode ser determinado sem contexto. Para evaluate um measure requer uma aplicação cliente de relatório que possa fornecer o contexto necessário para recuperar os dados relevantes para cada célula and e evaluate a expressão para cada célula. Esse cliente pode ser uma Tabela Dinâmica or Gráfico Dinâmico do Excel, um relatório de BI Poweror uma expressão de tabela em uma consulta DAX no SQL Server Management Studio (SSMS).
Independentemente do cliente, uma consulta separada é executada para cada célula nos resultados. Ou seja, cada combinação de cabeçalhos de linha and coluna em uma Tabela Dinâmica, or cada seleção de segmentação de dados andfilters em um relatório de BI Power, gera um subconjunto diferente de dados sobre o qual o measure é calculado. Por exemplo, ao usar a muito simples fórmula measure:
Total Sales = SUM([Sales Amount])
Quando um usuário coloca o measure TotalSales em um relatório, and e depois coloca a coluna Categoria de Product de uma tabela Product em Filters, o sum de Montante de Vendas é calculado e and exibido para cada uma das categorias de product.
Ao contrário das colunas calculadas, a sintaxe de um measure inclui o nome do measureprecedendo a fórmula. No exemplo acabado de fornecer, o nome Total Sales aparece antes da fórmula. Depois de criar um measure, o nome and e a sua definição aparece na lista Campos da aplicação cliente de relatório, and dependendo das perspetivas e funções and, está disponível para os all utilizadores do modelo.
Para saber mais, consulte:
Medidas no Power BI Desktop
Medidas de no Analysis Services
Medidas em Power Pivot
Colunas calculadas
Uma coluna calculada é uma coluna que você adiciona a uma tabela existente (no designer de modelo) and cria uma fórmula DAX que define a valuesda coluna. Quando uma coluna calculada contains contém uma fórmula DAX válida, values são calculados para cada linha assim que a fórmula é inserida. Values são então armazenados no modelo de dados na memória. Por exemplo, numa tabela Date, quando a fórmula é introduzida na barra de fórmulas:
= [Calendar Year] & " Q" & [Calendar Quarter]
Um value para cada linha da tabela é calculado tomando values da coluna CalendarYear (na mesma tabela Date), adicionando um espaço and a letra Q maiúscula and adicionando o values da coluna CalendarQuarter (na mesma tabela Date). O resultado de cada linha na coluna calculada é imediatamente calculado quando and aparece, por exemplo, como 2017 Q1. Os values de coluna só são recalculados if a tabela or qualquer tabela related é processada (atualização) or o modelo é descarregado da memória and depois recarregado, como ao fechar and reabrir um arquivo do Power BI Desktop.
Para saber mais, consulte:
Colunas calculadas no Power BI Desktop
Colunas calculadas no Analysis Services
Colunas calculadas em Power pivô.
Tabelas calculadas
Uma tabela calculada é um objeto calculado, baseado em uma expressão de fórmula, derivado de allor parte de outras tabelas no mesmo modelo. Em vez de consultar and para carregar values nas colunas da nova tabela a partir de uma fonte de dados, uma fórmula de DAX define a valuesda tabela.
As tabelas calculadas podem ser úteis numa dimensão de jogo de interpretação de personagens. Um exemplo é a tabela Date, com as colunas OrderDate, ShipDate, e or 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. As tabelas calculadas também são úteis ao configurar um conjunto de linhas filtrado or um subconjunto or superconjunto de colunas de outras tabelas existentes. Isso permite que você mantenha a tabela original intacta enquanto cria variações dessa tabela para oferecer suporte a cenários específicos.
As tabelas calculadas suportam relações com outras tabelas. As colunas na tabela calculada têm tipos de dados e formatação, e and pode pertencer a uma categoria de dados. As tabelas calculadas podem ser nomeadas, and expostas, or ocultas, como qualquer outra tabela. As tabelas calculadas são recalculadas if qualquer uma das tabelas das quais extrai dados é atualizada or atualizada.
Para saber mais, consulte:
Tabelas calculadas no Power BI Desktop
Tabelas calculadas no Analysis Services.
Segurança em nível de linha
Com a segurança em nível de linha, uma fórmula de DAX deve evaluate a uma condição de TRUE
/FALSE
booleana, definindo quais linhas podem ser retornadas pelos resultados de uma consulta por membros de uma função específica. Por exemplo, para membros do cargo de Vendas, a tabela Clientes utiliza a seguinte fórmula DAX:
= Customers[Country] = "USA"
Os membros da equipa de Vendas só poderão visualizar dados de clientes nos EUA. and agregados, como SUM, são apresentados apenas para clientes nos EUA. A segurança em nível de linha not está disponível no Power Pivot no Excel.
Ao definir a segurança ao nível da linha usando a fórmula DAX, está a criar um conjunto de linhas permitido. Isso not nega o acesso a outras linhas; em vez disso, elas são simplesmente not retornadas como parte do conjunto de linhas permitido. Outras funções podem permitir o acesso às linhas excluídas pela fórmula DAX. If um utilizador é membro de outro papel and e a segurança ao nível de linha desse papel permite o acesso a esse conjunto específico de linhas, o utilizador pode visualizar dados para esse conjunto de linhas.
As fórmulas de segurança linha a linha aplicam-se às linhas especificadas, assim como às linhas related. Quando uma tabela tem vários relacionamentos, filters aplicar segurança para o relacionamento que está ativo. As fórmulas de segurança em nível de linha serão combinadas com outras fórmulas definidas para as tabelas related.
Para saber mais, consulte:
Segurança em nível de linha (RLS) com Power BI
funções no Analysis Services
Consultas
DAX consultas podem ser criadas e and executadas no SQL Server Management Studio (SSMS) and ferramentas de código aberto como o DAX Studio (daxstudio.org). Ao contrário das fórmulas de cálculo DAX, que só podem ser criadas em modelos de dados tabulares, as consultas DAX também podem ser executadas em modelos multidimensionais do Analysis Services. DAX consultas geralmente são mais fáceis de redigir e and mais eficientes do que as consultas MDX (Multidimensional Data Expressions).
Uma consulta DAX é uma instrução semelhante a uma instrução SELECT em T-SQL. O tipo mais básico de consulta DAX é uma instrução evaluate. Por exemplo
EVALUATE
( FILTER ( 'DimProduct', [SafetyStockLevel] < 200 ) )
ORDER BY [EnglishProductName] ASC
Devolve nos Resultados uma tabela que lista apenas os produtos com um SafetyStockLevel inferior a 200, por ordem crescente por EnglishProductName.
Você pode criar medidas como parte da consulta. As medidas existem apenas para o duration da consulta. Para saber mais, veja as consultas em DAX.
Fórmulas
DAX fórmulas são essenciais para criar cálculos em colunas and medidas calculadas and proteger seus dados usando segurança em nível de linha. Para criar fórmulas para medidas das colunas calculadas and, use a barra de fórmulas na parte superior do Editor do designer de modelos windoworDAX. Para criar fórmulas para segurança em nível de linha, use a caixa de diálogo Gerenciador de Funções or Gerir funções. As informações nesta secção destinam-se a ajudá-lo a começar a compreender as noções básicas de DAX fórmulas.
Noções básicas sobre fórmulas
DAX fórmulas podem ser muito simples or 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 date de todayem cada linha de uma coluna calculada. |
= 3 |
Insere o value 3 em cada linha de uma coluna calculada. |
= [Column1] + [Column2] |
Adiciona o values na mesma linha de [Coluna1] and [Coluna2] and, e coloca os resultados na coluna calculada da mesma linha. |
Quer a fórmula criada seja simples or complexa, pode utilizar os seguintes passos ao criar uma fórmula:
Cada fórmula deve começar com um sign igual (=).
Você pode digitar or selecionar um nome de função or digitar uma expressão.
Comece a digitar as first poucas letras da função or nome desejado and o Preenchimento Automático exibe uma lista de funções, tabelas and colunas disponíveis. Prima TAB para adicionar um item da lista Conclusão Automática à 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 seta para realçar o item and clique em OK para adicionar a função à fórmula.
Forneça os argumentos para a função selecionando-os de uma lista suspensa de colunas possíveis das tabelas and e or, digitando em values.
Verifique se há erros de sintaxe: certifique-se de que all os parênteses estão fechados e que as colunas and e as tabelas andvalues são referenciadas corretamente.
Prima ENTER para aceitar a fórmula.
Observação
Numa coluna calculada, assim que introduzir a fórmula and e a fórmula for validada, a coluna é preenchida com values. Em um measure, pressionar ENTER salva a definição de measure com a tabela. If uma fórmula for inválida, será apresentado um error.
Neste exemplo, vamos examinar uma fórmula em um measure chamado Dias na Quarteratual:
Days in Current Quarter = COUNTROWS( DATESBETWEEN( 'Date'[Date], STARTOFQUARTER( LASTDATE('Date'[Date])), ENDOFQUARTER('Date'[Date])))
Este measure é utilizado para criar um rácio de comparação entre um período incompleto and o período previous. A fórmula deve considerar a proporção do período decorrido, and, e compará-la com a mesma proporção no período previous. Neste caso, [Dias Correntes Quarter a Date]/[Dias em Corrente Quarter] indica a proporção decorrida no período atual.
Esta fórmula contains contém os seguintes elementos:
Elemento de fórmula | Descrição |
---|---|
Days in Current Quarter |
O nome do measure. |
= |
O igual sign (=) inicia a fórmula. |
COUNTROWS |
COUNTROWS conta o número de linhas na tabela Date |
() |
A especificação dos argumentos ocorre após o parêntese de fechamento de and. |
DATESBETWEEN |
A função DATESBETWEEN retorna as datas entre lastdate de cada value na coluna Date da tabela Date. |
'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 parênteses. |
, |
|
STARTOFQUARTER |
A função STARTOFQUARTER retorna o date do início do quarter. |
LASTDATE |
A função LASTDATE retorna o lastdate do quarter. |
'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. |
Usando o Preenchimento Automático de fórmulas
A Conclusão Automática ajuda-o a introduzir uma sintaxe de fórmula válida, fornecendo-lhe opções para cada elemento da fórmula.
Você pode usar o Preenchimento Automático de fórmulas no meio de uma fórmula existente com funções aninhadas. O texto imediatamente antes do ponto de inserção é usado para exibir values na lista suspensa, e andall do texto após o ponto de inserção permanece inalterado.
O AutoPreenchimento executa not adicionando o parêntese de fechamento de funções e or corresponde automaticamente aos parênteses. Deve certificar-se de que cada função está sintaticamente correta or, caso contrário, não pode guardar or, nem utilizar a fórmula.
Utilizar várias funções numa 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 or 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 SUMX, AVERAGEX, andMINXall exigem uma tabela como argumento first.
Funções
Uma função é uma fórmula nomeada dentro de uma expressão. A maioria das funções exigiu and argumentos opcionais, também conhecidos como parâmetros, como entrada. Quando a função é executada, um value é retornado. DAX inclui funções que você pode usar para executar cálculos usando datas and horas, criar valuescondicionais, trabalhar com cadeias de caracteres, executar pesquisas com base em relações and a capacidade de iterar sobre uma tabela para executar cálculos recursivos. Se If você estiver familiarizado com fórmulas do Excel, muitas dessas funções serão muito semelhantes; no entanto, as fórmulas DAX são diferentes das seguintes maneiras importantes:
Uma função DAX sempre faz referência a uma coluna completa or uma tabela. If se você quer usar apenas elementos values de uma coluna da tabela or, pode adicionar filters à fórmula.
If você precisa personalizar cálculos linha a linha, o DAX fornece funções que permitem usar a linha atual valueor um relatedvalue como um tipo de parâmetro para executar cálculos que variam de acordo com o contexto. Para entender como estas funções funcionam, consulte o contexto neste artigo.
DAX inclui muitas funções que retornam uma tabela, em vez de um value. A tabela not é exibida em um cliente de relatório, mas é usada para fornecer entrada para outras funções. Por exemplo, é possível recuperar uma tabela and e depois count os values distintos nela, calculando somas dinâmicas orcalculate em colunas de tabelas filtradas or.
DAX funções incluem uma variedade de time inteligência funções. Estas funções permitem-lhe selecionar intervalos datedefineorand efetuar cálculos dinâmicos com base nestas datas orrange. Por exemplo, você pode comparar somas entre períodos paralelos.
Funções de agregação
As funções de agregação calculate a value (escalar), como count, sum, average, mínimo, máximo or para all linhas numa coluna de uma tabela or, conforme definido pela expressão. Para saber mais, consulte Funções de agregação.
Date and time funções
As funções dateandtime no DAX são semelhantes às funções dateandtime no Microsoft Excel. No entanto, as funções DAX são baseadas num tipo de dados datetime a partir de 1 de março de 1900. Para saber mais, consulte funções Dateandtime.
Filter funções
As funções filter em DAX retornam tipos de dados específicos, consultam values nas tabelas de relatedandfilter por relatedvalues. As funções de pesquisa funcionam usando tabelas and 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, consulte as funções Filter.
Funções financeiras
As funções financeiras em DAX são usadas em fórmulas que executam cálculos financeiros, como valueandrate de retorno presentes líquidos. Essas funções são semelhantes às funções financeiras usadas no Microsoft Excel. Para saber mais, consulte Funções financeiras.
Funções de informação
Uma função de informação examina a célula or linha que é fornecida como um argumento and informa se o value corresponde ao tipo esperado. Por exemplo, a função ISERROR retorna TRUE
ifvalue que você referencia contains um error. Para saber mais, consulte Funções de informação.
Funções lógicas
As funções lógicas atuam sobre uma expressão para retornar informações sobre o values na expressão. Por exemplo, a função TRUE
permite saber se uma expressão que você está avaliando retorna um TRUE
value. Para saber mais, consulte Funções lógicas.
Funções matemáticas and trigonométricas
As funções matemáticas em DAX são muito semelhantes às funções matemáticas and trigonométricas do Excel. Existem algumas pequenas diferenças nos tipos de dados numéricos usados por DAX funções. Para saber mais, consulte Math and funções trigonométricas.
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, consulte Outras funções.
Funções de relacionamento
As funções de relacionamento no DAX permitem que você retorne values de outra tabela related, especifique uma relação específica a ser usada em uma expressão and especifique a direção da filtragem cruzada. Para saber mais, consulte Funções de relacionamento.
Funções estatísticas
As funções estatísticas calculatevaluesrelated para distribuições estatísticas de probabilidade and, tais como desvio padrão and número de permutações. Para saber mais, consulte Funções estatísticas.
Funções de texto
As funções de texto no DAX são muito semelhantes às suas contrapartes no Excel. Você pode retornar parte de uma cadeia de caracteres, search para texto dentro de uma cadeia de caracteres, orconcatenate cadeia de caracteres values. DAX também fornece funções para controlar os formatos de datas, horas and números. Para saber mais, consulte Funções de texto.
Time funções de inteligência
As funções de inteligência de time fornecidas no DAX permitem criar cálculos que usam conhecimento interno sobre calendários and datas. Usando intervalos de timeanddate em combinação com agregações or cálculos, você pode criar comparações significativas em períodos de time comparáveis para vendas, estoque and assim por diante. Para saber mais, consulte Time funções de inteligência (DAX).
Funções de manipulação de tabelas
Essas funções retornam uma tabela or manipulam tabelas existentes. Por exemplo, usando ADDCOLUMNS você pode adicionar colunas calculadas a uma tabela especificada or pode retornar uma tabela de resumo sobre um conjunto de grupos com a função SUMMARIZECOLUMNS. Para saber mais, consulte Funções de manipulação de tabela.
Variáveis
Você pode criar variáveis dentro de uma expressão usando VAR. VAR é tecnicamente not 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 argumento para outras expressões measure. 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 escalares, incluindo tabelas. Usar variáveis em suas fórmulas DAX pode ser incrivelmente poderoso.
Tipos de dados
Você pode importar dados para um modelo de muitas fontes de dados diferentes que podem oferecer 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, os dados são convertidos em um tipo de dados DAX para a saída durationand do cálculo. Quando você cria uma fórmula DAX, os termos usados na fórmula determinarão automaticamente o tipo de dados value retornado.
DAX suporta os seguintes tipos de dados:
Tipo de dados no modelo | Tipo de dados no DAX | Descrição |
---|---|---|
Whole Number |
Um inteiro de 64 bits (oito bytes) value1, 2 | Números sem casas decimais. Números inteiros podem ser positivos or negativos, mas devem ser números inteiros entre -9.223.372.036.854.775.808 (-2^63) and 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 números que podem ter casas decimais. Os números reais abrangem uma ampla range de values: Negativo values de -1.79E +308 até -2.23E -308 Zero Positivo values de 2.23E -308 a 1.79E + 308 No entanto, o número de dígitos significativos é limitado a 17 dígitos decimais. |
Boolean |
Booleano | Ou um TrueorFalsevalue. |
Text |
String | Uma cadeia de dados de Unicode caracteres. Podem ser cadeias de caracteres, números or datas representadas num texto format. |
Date |
Date/time | Datas e horas and em uma representação aceita date-time. As datas válidas são all datas posteriores a 1 de março de 1900. |
Currency |
Currency | Currency tipo de dados permite values entre -922.337.203.685.477,5808 e 922.337.203.685.477,5807 com quatro dígitos decimais de precisão de fixed. |
N/A |
Blank | Um blank é um tipo de dado em DAX que representa and, que substitui os nulos SQL. Você pode criar um blank usando a função BLANK, and 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
Embora os tipos de dados normalmente sejam definidos automaticamente, é importante entender os tipos de dados and como eles se aplicam, em particular, a fórmulas DAX. Erros em fórmulas or 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 de 12. A fórmula, = "1" + "2"
, no entanto, retorna um resultado inteiro de 3.
Contexto
O contexto é um conceito importante ao criar fórmulas DAX. O contexto é o que permite executar a análise dinâmica, pois os resultados de uma alteração de fórmula para refletir a seleção atual de linhas or células também and quaisquer dados related. Compreender o contexto and usar o contexto de forma eficaz é fundamental para criar análises dinâmicas de alto desempenho and para solucionar problemas em fórmulas.
As fórmulas em modelos tabulares podem ser avaliadas em um contexto diferente, dependendo de outros elementos de design:
- Filters aplicado num relatório da tabela dinâmica or
- Filters definido dentro de uma fórmula
- Relações especificadas usando funções especiais dentro de uma fórmula
Existem diferentes tipos de contexto: contexto de linha , contexto de consulta , andfilter contexto.
Contexto da linha
de contexto de linha pode ser considerado como "a linha atual". If cria uma fórmula em uma coluna calculada, o contexto de linha dessa fórmula inclui o values das colunas all na linha atual. If a tabela é related para outra tabela, o conteúdo também inclui all os values da outra tabela que são related para a linha atual.
Por exemplo, suponha que você crie uma coluna calculada, = [Freight] + [Tax]
, que soma values de duas colunas, Frete and Imposto, da mesma tabela. Esta fórmula obtém automaticamente apenas o values da linha atual nas colunas especificadas.
O contexto de linha também segue todas as relações definidas entre tabelas, incluindo as especificadas numa coluna calculada através de fórmulas DAX, para identificar quais linhas nas tabelas related estão associadas à linha atual.
Por exemplo, a fórmula a seguir usa a função RELATED para buscar um imposto value de uma tabela related, com base na região para a qual o pedido foi enviado. O value de imposto é determinado usando o value para região na tabela atual, procurando a região na tabela relatedand e, em seguida, obtendo o rate de imposto para essa região na tabela related.
= [Freight] + RELATED('Region'[TaxRate])
Esta fórmula obtém o valor de imposto rate para a região atual da tabela de região and e adiciona-o ao value da coluna de transporte. Em DAX fórmulas, você not precisa saber or especificar a relação específica que conecta as tabelas.
Contexto de múltiplas linhas
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 and externo.
Por exemplo, suponha que o seu modelo contains uma tabela de Produtosand uma tabela de Vendas. Os usuários podem querer passar por toda a tabela de vendas, que está cheia de transações envolvendo vários produtos, andfind a maior quantidade encomendada para cada product em qualquer transação.
Com DAX você pode criar uma única fórmula que retorna a valuecorreta, and os resultados são atualizados automaticamente time sempre que um usuário adiciona dados às tabelas.
= MAXX(FILTER(Sales,[ProdKey] = EARLIER([ProdKey])),Sales[OrderQty])
Para obter um exemplo detalhado desta fórmula, consulte EARLIER.
Para summarize, a função EARLIER armazena o contexto de linha da operação que precedeu a operação atual. Em all 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 and outro conjunto de contexto representa a linha atual para o loop externo da fórmula. DAX alimenta automaticamente values entre os dois loops para que você possa criar agregados complexos.
Contexto da consulta
Contexto de consulta refere-se ao subconjunto de dados que é recuperado implicitamente para uma fórmula. Por exemplo, quando um utilizador coloca um campo measureor num relatório, o mecanismo examina cabeçalhos de coluna and, segmentações de dados, and, filters de relatório para determinar o contexto. As consultas necessárias são então executadas em relação aos dados do modelo para obter o subconjunto correto de dados, fazer os cálculos definidos pela fórmula and preencher values no relatório.
Como o contexto muda dependendo de onde você coloca a fórmula, os resultados da fórmula também podem mudar. Por exemplo, suponha que você crie uma fórmula que soma os values na coluna Lucro da tabela Vendas: = SUM('Sales'[Profit])
.
No entanto, os utilizadores normalmente não querem ver o mesmo resultado centenas de vezes, mas querem antes obter o lucro para um determinado year, um determinado país, um determinado product, or alguma combinação destes elementos, and e então obter um total geral.
Em um relatório, o contexto é alterado filtrando, adicionando or removendo campos and usando segmentações de dados. Para cada alteração, o contexto de consulta no qual o measure é avaliado. Portanto, a mesma fórmula, usada num measure, é avaliada num contexto de consulta diferente para cada célula.
Filter contexto
Filter em contexto é o conjunto de values permitidos em cada coluna, or no values recuperado de uma tabela related. Filters pode ser aplicado à coluna no designer, or na camada de apresentação (relatórios, and Tabelas Dinâmicas). Filters também pode ser definido explicitamente por expressões filter dentro da fórmula.
Filter contexto é adicionado quando você especifica filter restrições no conjunto de values permitidas em uma coluna or tabela, usando argumentos para uma fórmula. O contexto Filter aplica-se sobre outros contextos, como o contexto de linha e o contexto de consulta or.
Em modelos tabulares, há muitas maneiras de criar o contexto filter. No contexto de clientes que podem consumir o modelo, como relatórios de BI Power, os utilizadores podem criar filters em tempo real ao adicionar as segmentações de dados (slicers) or nas cabeçalhos de linha and coluna do relatório filters. Você pode também especificar expressões filter diretamente na fórmula, para definir relatedvalues, para as tabelas filter que são usadas como entradas, e or obter dinamicamente o contexto para as values usadas nos cálculos. Você também pode limpar completamente o or ou limpar seletivamente o filters em colunas específicas. Isso é muito útil ao criar fórmulas que calculate totais gerais.
Para saber mais sobre como criar filters em fórmulas, veja a Função FILTER (DAX).
Para um exemplo de como filters pode ser limpo para criar totais gerais, consulte a Função ALL (DAX).
Para obter exemplos de como limpar seletivamente and e aplicar filters em fórmulas, consulte ALLEXCEPT.
Determinar o contexto em fórmulas
Quando você cria uma fórmula DAX, a fórmula first é testada para sintaxe válida and testada para garantir que os nomes das colunas and tabelas incluídas na fórmula possam ser encontrados no contexto atual. If nenhuma coluna or tabela especificada pela fórmula não puder ser encontrada, uma error será retornada.
O contexto durante a validação (operações de recálculoand) é determinado conforme descrito nas seções anteriores, usando as tabelas disponíveis no modelo, quaisquer relações entre as tabelas, além de quaisquer and e filters que tenham sido aplicadas.
Por exemplo, if você acabou de importar alguns dados para uma nova tabela and ela estiver notrelated para qualquer outra tabela (and você not aplicou nenhuma filters), o contexto atual é todo o conjunto de colunas na tabela. If a tabela estiver ligada por relações a outras tabelas, o contexto atual inclui as tabelas related. If quando você adiciona uma coluna da tabela a um relatório que tenha Segmentações de Dados and — talvez um relatório qualquer filters— o contexto da fórmula é 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 and relacionamentos 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
A linguagem DAX usa quatro tipos diferentes de operadores de cálculo em fórmulas:
- Operadores de comparação para comparar valuesand devolvem um
TRUE
lógico `FALSE` value. - Operadores aritméticos para realizar cálculos aritméticos que produzem resultados numéricos values.
- Operadores de concatenação de texto para unir duas ou mais cadeias de texto or.
- Operadores lógicos que combinam duas ou mais expressões or para retornar um único resultado.
Para obter informações detalhadas sobre operadores usados em fórmulas DAX, consulte DAX operadores.
Trabalhar com tabelas e colunas and
As tabelas em modelos de dados tabulares parecem tabelas do Excel, mas são diferentes na forma como trabalham com dados and com fórmulas:
- As fórmulas funcionam apenas com colunas de tabelas and, células individuais not, referências range e matrizes or.
- As fórmulas podem usar relações para obter values de related tabelas. Os values recuperados são sempre related à linha atual value.
- Você não pode ter dados irregulares or "esfarrapados" como em uma planilha do Excel. Cada linha de uma tabela deve conter o mesmo número de colunas. No entanto, é possível ter células values vazias em algumas colunas. As tabelas de dados do Excel and e as de modelo tabular not são intercambiáveis.
- Como um tipo de dados é definido para cada coluna, cada value nessa coluna deve ser do mesmo tipo.
Referência às colunas das tabelas and em fórmulas
Você pode fazer referência a qualquer tabela and coluna usando seu nome. Por exemplo, a fórmula a seguir ilustra como fazer referência a colunas de duas tabelas usando o nome de totalmente qualificado:
= SUM('New Sales'[Amount]) + SUM('Past Sales'[Amount])
Quando uma fórmula é avaliada, o designer de modelo first verifica a sintaxe geral and verifica os nomes das colunas and tabelas que você fornece em relação a possíveis colunas and tabelas no contexto atual. If o nome é ambíguo orif a coluna da or tabela não pode ser encontrada, obterá um error na fórmula (uma cadeia de caracteres #ERROR em vez de um dado value nas células onde ocorre o error). Para saber mais sobre os requisitos de nomenclatura para tabelas, colunas e and outros objetos, consulte Requisitos de nomenclatura na DAX sintaxe.
Relações de tabela
Ao criar relações entre tabelas, ganha-se a capacidade de usar relatedvalues em outras tabelas para cálculos. Por exemplo, você pode usar uma coluna calculada para determinar all os registros de envio related para o revendedor atual andsum os custos de envio de cada um. Em muitos casos, no entanto, uma relação pode not ser necessária. Você pode usar a função LOOKUPVALUE em uma fórmula para retornar o value em result_columnName para a linha que atende aos critérios especificados nos argumentos search_columnandsearch_value.
Muitas funções DAX exigem que exista uma relação entre as tabelas or entre várias tabelas, a fim de localizar as colunas que você mencionou and retornar resultados que façam sentido. Outras funções tentarão identificar a relação; No entanto, para obter melhores resultados, deve sempre criar uma relação sempre que possível. Os modelos de dados tabulares suportam várias relações entre tabelas. Para evitar confusão or resultados incorretos, apenas um relacionamento em um time é designado como o relacionamento ativo, mas você pode alterar o relacionamento ativo conforme necessário para percorrer diferentes conexões nos dados nos cálculos. USERELATIONSHIP função pode ser usada para especificar uma or mais relações a serem usadas em um cálculo específico.
É importante observar estas regras de design de fórmula ao usar relações:
Quando as tabelas são conectadas por uma relação, tem de garantir que as duas colunas utilizadas como chaves tenham values que correspondam. A integridade referencial not é garantida, portanto, é possível ter values não correspondentes numa coluna chave and criar ainda assim uma ligação. If isso acontecer, deverás estar ciente de que a não correspondência de blankvaluesorvalues pode afetar os resultados das fórmulas.
Ao vincular tabelas em seu modelo usando relações, você amplia o escopo, orcontexto, no qual suas fórmulas são avaliadas. Alterações no contexto resultantes da adição de novas tabelas, novos relacionamentos or de alterações no relacionamento ativo podem fazer com que seus resultados mudem de maneiras que você pode not prever. Para saber mais, consulte de contexto neste artigo.
Atualizar processo and
Processoandrecálculo são duas operações separadas, mas related. Você deve entender completamente esses conceitos ao conceber um modelo que contains fórmulas complexas, grandes quantidades de dados, e or dados obtidos de fontes de dados externas.
de processo (atualização) está atualizando os dados em um modelo com novos dados de uma fonte de dados externa.
de recálculo é o processo de atualização dos resultados das fórmulas para refletir quaisquer alterações às próprias fórmulas and para refletir as alterações nos dados subjacentes. O recálculo pode afetar o desempenho das seguintes maneiras:
Os values, em uma coluna calculada, são calculados and e armazenados no modelo. Para atualizar o values na coluna calculada, deve processar o modelo usando um dos três comandos de processamento – Process Full, Process Data, or Process Recalc. O resultado da fórmula deve ser sempre recalculado para toda a coluna, sempre que alterar a fórmula.
Os values calculados por medidas são avaliados dinamicamente sempre que um usuário adiciona o measure a uma Tabela Dinâmica or abre um relatório; À medida que o usuário modifica o contexto, values retornados pela alteração measure. Os resultados do measure sempre refletem o que há de mais recente no cache em memória.
O processamento and o recálculo não têm effect sobre fórmulas de segurança em nível de linha, a menos que o resultado de um recálculo retorne um valuediferente, tornando a linha consultável ornot consultável pelos membros da função.
Atualizações
DAX está constantemente a ser melhorado. Novas and funções atualizadas são lançadas com a atualização next disponível, que geralmente é mensal. Os serviços são atualizados first, seguidos por aplicativos instalados como Power BI Desktop, Excel, SQL Server Management Studio (SSMS) and extensão de projeto do Analysis Services para Visual Studio (SSDT). O SQL Server Analysis Services é atualizado com a atualização cumulativa next. Novas funções first são anunciadas and descritas na referência de função DAX coincidindo com as atualizações do Power BI Desktop.
As funções Notall são suportadas em versões earlier do SQL Server Analysis Services and Excel.
Solução de problemas
Os erros sintáticos são os mais fáceis de resolver. Eles geralmente envolvem um parêntese ausente or vírgula.
O outro tipo de error ocorre quando a sintaxe está correta, mas o valueor uma coluna referenciada not faz sentido no contexto da fórmula. Esses erros semânticos and de cálculo podem ser causados por qualquer um dos seguintes problemas:
- A fórmula refere-se a uma coluna, tabela e função or não existente.
- A fórmula parece estar correta, mas quando o mecanismo de dados busca os dados, ele encontra uma incompatibilidade de tipo and gera um error.
- A fórmula passa um número incorreto de argumentos do tipo or para uma função.
- A fórmula refere-se a uma coluna diferente que tem um error, and, portanto, seus values são inválidos.
- A fórmula refere-se a uma coluna que not foi processada, o que significa que tem metadados, mas não dados reais para usar para cálculos.
Nos quatro casos first, DAX sinaliza toda a coluna que contains a fórmula inválida. No caso de last, DAX cinzenta a coluna para indicar que a coluna está num estado não processado.
Aplicações and ferramentas
Power BI Desktop
Power BI Desktop é um aplicativo gratuito de modelagem de dados e relatórios and. O projetista de modelos inclui um editor de DAX para criar fórmulas de cálculo DAX.
Power Pivot no Excel
O Power Pivot no Excel designer de modelos inclui um editor de DAX para criar fórmulas de cálculo DAX.
Estúdio Visual
O Visual Studio com extensão de projetos (VSIX) do Analysis Services é 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 (SSMS) é uma ferramenta essencial para trabalhar com o Analysis Services. O SSMS inclui um editor de consultas DAX para consultar tanto modelos tabulares quanto modelos and multidimensionais.
Estúdio DAX
Ícone do
DAX Studio é uma ferramenta de cliente de código aberto para criar and executar consultas DAX no Analysis Services, Power BI Desktop andPower Pivot em modelos do Excel.
Editor de tabelas
Editor de Tabela é uma ferramenta de código aberto que fornece uma visão intuitiva e hierárquica de cada objeto em metadados de modelo tabular. O Editor de Tabelas inclui um Editor de DAX com realce de sintaxe, o que proporciona uma maneira fácil de editar medidas, colunas calculadas e expressões de tabela calculadas and.
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 andPower o Pivot no Excel all têm artigos and tutoriais que incluem lições sobre como criar medidas, colunas calculadas andfilters de linhas usando DAX. Aqui estão alguns recursos adicionais:
Use DAX em Power BI Desktop Aprendizagem path.
The Definitive Guide to DAX de Alberto Ferrari and Marco Russo (Microsoft Press). Now em sua second edição, este extenso guia fornece noções básicas para técnicas inovadoras de alto desempenho para modeladores de dados iniciantes and profissionais de BI.
Comunidade
DAX tem uma comunidade vibrante sempre disposta a compartilhar seus conhecimentos. O Microsoft Power BI Community tem um fórum de discussão especial apenas para DAX, DAX Comandos and Dicas.