Aprenda noções básicas de DAX no Power BI Desktop
Os usuários que são novos no Power BI Desktop podem usar este artigo como uma introdução rápida e fácil sobre como você pode usar o DAX (Data Analysis Expressions) para resolver muitos cálculos básicos e problemas de análise de dados. Vamos analisar algumas informações conceituais, uma série de tarefas que você pode concluir e uma verificação de conhecimento para testar o que você aprendeu. Depois de concluir este artigo, você deve ter uma boa compreensão dos conceitos fundamentais mais importantes no DAX.
O que é DAX?
DAX é uma coleção de funções, operadores e constantes que podem ser usados em uma fórmula, ou expressão, para calcular e retornar um ou mais valores. O DAX ajuda você a criar novas informações a partir de dados já existentes em seu modelo.
Por que o DAX é tão importante?
É fácil criar um novo arquivo do Power BI Desktop e importar alguns dados para ele. Você pode até mesmo criar relatórios que mostram informações valiosas sem usar nenhuma fórmula DAX. Mas, e se você precisar analisar a porcentagem de crescimento entre categorias de produtos e para diferentes intervalos de datas? Ou você precisa calcular o crescimento ano a ano em comparação com as tendências do mercado? As fórmulas DAX também fornecem esse recurso e muitos outros recursos importantes. Aprender a criar fórmulas DAX eficazes irá ajudá-lo a tirar o máximo proveito dos seus dados. Quando você obtém as informações de que precisa, pode começar a resolver problemas reais de negócios que afetam seus resultados.
Pré-requisitos
Talvez você já esteja familiarizado com a criação de fórmulas no Microsoft Excel, e esse conhecimento será útil para entender o DAX. Mas mesmo que você não tenha experiência com fórmulas do Excel, os conceitos descritos aqui ajudarão você a começar a criar fórmulas DAX e resolver problemas de BI do mundo real imediatamente.
Vamos nos concentrar em entender as fórmulas DAX usadas em cálculos, mais especificamente, em medidas e colunas calculadas. Você já deve estar familiarizado com o uso do Power BI Desktop para importar dados e adicionar campos a um relatório, e também deve estar familiarizado com os conceitos fundamentais das colunas Medidas e Calculadas.
Exemplo de pasta de trabalho
A melhor maneira de aprender DAX é criar algumas fórmulas básicas, usá-las com dados reais e ver os resultados por si mesmo. Os exemplos e tarefas aqui usam o arquivo Contoso Sales Sample for Power BI Desktop. Este arquivo de exemplo é o mesmo usado no artigo Tutorial: Criar suas próprias medidas no Power BI Desktop .
Comecemos
Vamos enquadrar nossa compreensão do DAX em torno de três conceitos fundamentais: Sintaxe, Funções e Contexto. Existem outros conceitos importantes no DAX, mas entender esses três conceitos fornecerá a melhor base para desenvolver suas habilidades DAX.
Sintaxe
Antes de criar suas próprias fórmulas, vamos dar uma olhada na sintaxe da fórmula DAX. A sintaxe inclui os vários elementos que compõem uma fórmula, ou mais simplesmente, como a fórmula é escrita. Por exemplo, aqui está uma fórmula DAX simples para uma medida:
Esta fórmula inclui os seguintes elementos de sintaxe:
A. O nome da medida, Total de Vendas.
B. O operador de sinal de igual (=), que indica o início da fórmula. Quando calculado, ele retornará um resultado.
C. A função DAX SUM, que soma todos os números na coluna Sales[SalesAmount]. Você aprenderá mais sobre as funções mais tarde.
D. Parênteses (), que envolvem uma expressão que contém um ou mais argumentos. A maioria das funções requer pelo menos um argumento. Um argumento passa um valor para uma função.
E. A tabela referenciada, Vendas.
F. A coluna referenciada, [SalesAmount], na tabela Sales. Com esse argumento, a função SOMA sabe em qual coluna agregar uma SOMA.
Ao tentar entender uma fórmula DAX, muitas vezes é útil dividir cada um dos elementos em uma linguagem que você pensa e fala todos os dias. Por exemplo, pode ler esta fórmula como:
Para a medida denominada Total Sales, calcule (=) a SOMA dos valores na coluna [SalesAmount ] na tabela Sales.
Quando adicionada a um relatório, esta medida calcula e devolve valores somando os valores de vendas para cada um dos outros campos que incluímos, por exemplo, Telemóveis nos EUA.
Você pode estar pensando: "Essa medida não está fazendo a mesma coisa como se eu fosse apenas adicionar o campo SalesAmount ao meu relatório?" Pois, sim. Mas, há uma boa razão para criar nossa própria medida que resume valores do campo SalesAmount: podemos usá-la como argumento em outras fórmulas. Essa solução pode parecer um pouco confusa agora, mas à medida que suas habilidades de fórmula DAX crescem, conhecer essa medida tornará suas fórmulas e seu modelo mais eficientes. Na verdade, você verá a medida Total de Vendas aparecendo como um argumento em outras fórmulas mais tarde.
Vamos analisar mais algumas coisas sobre esta fórmula. Em particular, introduzimos uma função, SUM. As funções são fórmulas pré-escritas que facilitam cálculos e manipulações complexas com números, datas, hora, texto e muito mais. Você aprenderá mais sobre as funções mais tarde.
Você também vê que o nome da coluna [SalesAmount] foi precedido pela tabela Sales à qual a coluna pertence. Esse nome é conhecido como um nome de coluna totalmente qualificado, pois inclui o nome da coluna precedido pelo nome da tabela. As colunas referenciadas na mesma tabela não exigem que o nome da tabela seja incluído na fórmula, o que pode tornar as fórmulas longas que fazem referência a muitas colunas mais curtas e fáceis de ler. No entanto, é uma boa prática incluir o nome da tabela em suas fórmulas de medida, mesmo quando na mesma tabela.
Nota
Se um nome de tabela contiver espaços, palavras-chave reservadas ou caracteres não permitidos, você deverá colocar o nome da tabela entre aspas simples. Você também precisará colocar nomes de tabela entre aspas se o nome contiver caracteres fora do intervalo de caracteres alfanuméricos ANSI, independentemente de sua localidade suportar o conjunto de caracteres ou não.
É importante que as suas fórmulas tenham a sintaxe correta. Na maioria dos casos, se a sintaxe não estiver correta, um erro de sintaxe será retornado. Em outros casos, a sintaxe pode estar correta, mas os valores retornados podem não ser o esperado. O editor DAX no Power BI Desktop inclui um recurso de sugestões, usado para criar fórmulas sintaticamente corretas, ajudando você a selecionar os elementos corretos.
Vamos criar uma fórmula de exemplo. Esta tarefa irá ajudá-lo a compreender melhor a sintaxe da fórmula e como a funcionalidade de sugestões na barra de fórmulas o pode ajudar.
Tarefa: Criar uma fórmula de medida
Baixe e abra o arquivo Contoso Sales Sample Power BI Desktop.
Na vista Relatório, na lista de campos, clique com o botão direito do rato na tabela Vendas e, em seguida, selecione Nova Medida.
Na barra de fórmulas, substitua Medida inserindo um novo nome de medida, Vendas do trimestre anterior.
Após o sinal de igual, digite as primeiras letras CAL e clique duas vezes na função que deseja usar. Nesta fórmula, você deseja usar a função CALCULATE .
Você usará a função CALCULATE para filtrar as quantidades que queremos somar por um argumento que passamos para a função CALCULATE. Esse tipo de função é conhecido como funções de aninhamento. A função CALCULATE tem pelo menos dois argumentos. A primeira é a expressão a ser avaliada, e a segunda é um filtro.
Após o parêntese de abertura ( para a função CALCULATE , digite SOMA seguido de outro parêntese de abertura (.
Em seguida, passaremos um argumento para a função SOMA.
Comece a digitar Sal e selecione Sales[SalesAmount], seguido de um parêntese de fechamento ).
Esta etapa cria o primeiro argumento de expressão para nossa função CALCULATE.
Digite uma vírgula (,) seguida de um espaço para especificar o primeiro filtro e, em seguida, digite PREVIOUSQUARTER.
Você usará a função de inteligência de tempo PREVIOUSQUARTER para filtrar os resultados da SOMA pelo trimestre anterior.
Após o parêntese de abertura ( para a função PREVIOUSQUARTER, digite Calendar[DateKey].
A função PREVIOUSQUARTER tem um argumento, uma coluna que contém um intervalo contíguo de datas. No nosso caso, essa é a coluna DateKey na tabela Calendário.
Feche os argumentos que estão sendo passados para a função PREVIOUSQUARTER e a função CALCULATE digitando dois parênteses de fechamento )).
A sua fórmula deve agora ter o seguinte aspeto:
Vendas do trimestre anterior = CALCULATE(SUM(Sales[SalesAmount]), PREVIOUSQUARTER(Calendar[DateKey]))
Selecione a marca de verificação na barra de fórmulas ou prima Enter para validar a fórmula e adicioná-la à tabela Vendas.
Conseguiu! Você acabou de criar uma medida complexa usando DAX. O que essa fórmula fará é calcular o total de vendas do trimestre anterior, dependendo dos filtros aplicados em um relatório. Por exemplo, podemos colocar SalesAmount e nossa nova medida de Vendas do trimestre anterior da tabela Vendas em um gráfico de colunas agrupadas. Em seguida, na tabela Calendário, adicione Ano como segmentação de dados e selecione 2011. Em seguida, adicione QuarterOfYear como outra segmentação de dados e selecione 4, e obtemos um gráfico como este:
Tenha em mente que o modelo de amostra contém apenas uma pequena quantidade de dados de vendas de 1/1/2011 a 19/01/2013. Se você selecionar um ano ou trimestre em que SalesAmount não pode ser somado, ou sua nova medida não pode calcular dados de vendas para o trimestre atual ou anterior, nenhum dado para esse período será mostrado. Por exemplo, se você selecionar 2011 para Ano e 1 para TrimestredeAno, nenhum dado será mostrado para Vendas do Trimestre Anterior porque não há dados para o quarto trimestre de 2010.
Você foi apresentado a vários aspetos importantes das fórmulas DAX:
Esta fórmula incluía duas funções. PREVIOUSQUARTER, uma função de inteligência de tempo, é aninhada como um argumento passado para CALCULATE, uma função de filtro.
As fórmulas DAX podem conter até 64 funções aninhadas. É improvável que uma fórmula contenha tantas funções aninhadas. Na verdade, tal fórmula seria difícil de criar e depurar, e provavelmente também não seria rápida.
Nesta fórmula, também utilizou filtros. Os filtros restringem o que será calculado. Nesse caso, você selecionou um filtro como argumento, que na verdade é o resultado de outra função. Você aprenderá mais sobre filtros mais tarde.
Você usou a função CALCULATE. Esta função é uma das funções mais poderosas do DAX. À medida que cria modelos e fórmulas mais complexas, é provável que utilize esta função muitas vezes. Embora mais discussões sobre a função CALCULATE estejam fora do escopo deste artigo, à medida que seu conhecimento do DAX cresce, preste especial atenção a ele.
QuickQuiz de sintaxe
O que faz este botão na barra de fórmulas?
O que sempre envolve um nome de coluna em uma fórmula DAX?
As respostas são fornecidas no final deste artigo.
Funções
Funções são fórmulas predefinidas que executam cálculos usando valores específicos, chamados argumentos, em uma determinada ordem ou estrutura. Os argumentos podem ser outras funções, outra fórmula, expressão, referências de coluna, números, texto, valores lógicos como TRUE ou FALSE, ou constantes.
O DAX inclui as seguintes categorias de funções: Data e Hora, Inteligência de Tempo, Informação, Lógica, Matemática, Estatística, Texto, Pai/Filho e Outras funções. Se você estiver familiarizado com funções em fórmulas do Excel, muitas das funções no DAX serão semelhantes a você; no entanto, as funções DAX são exclusivas das seguintes maneiras:
Uma função DAX sempre faz referência a uma coluna completa ou a uma tabela. Se pretender utilizar apenas valores específicos de uma tabela ou coluna, pode adicionar filtros à fórmula.
Se você precisar personalizar cálculos linha a linha, o DAX fornece funções que permitem usar o valor da linha atual ou um valor relacionado como um tipo de argumento para executar cálculos com base no contexto. Você aprenderá mais sobre o contexto mais tarde.
O DAX inclui muitas funções que retornam uma tabela em vez de um valor. A tabela não é exibida, mas é usada para fornecer entrada para outras funções. Por exemplo, você pode recuperar uma tabela e, em seguida, contar os valores distintos nela ou calcular somas dinâmicas em tabelas ou colunas filtradas.
O DAX inclui várias 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 neles. Por exemplo, você pode comparar somas entre períodos paralelos.
O Excel tem uma função popular, PROCV. As funções DAX não tomam uma célula ou um intervalo de células como uma referência como o PROCV faz no Excel. As funções DAX tomam uma coluna ou uma tabela como referência. Lembre-se de que, no Power BI Desktop, você está trabalhando com um modelo de dados relacional. Procurar valores noutra tabela é fácil e, na maioria dos casos, não precisa de criar fórmulas.
Como você pode ver, as funções no DAX podem ajudá-lo a criar fórmulas poderosas. Nós apenas tocamos no básico de funções. À medida que suas habilidades DAX crescem, você criará fórmulas usando muitas funções diferentes. Um dos melhores lugares para aprender detalhes sobre cada uma das funções DAX é na Referência de função DAX.
Funções QuickQuiz
- O que é que uma função sempre referencia?
- Uma fórmula pode conter mais do que uma função?
- Que categoria de funções você usaria para concatenar duas cadeias de texto em uma cadeia de caracteres?
As respostas são fornecidas no final deste artigo.
Contexto
O contexto é um dos conceitos DAX mais importantes para entender. Há dois tipos de contexto no DAX: contexto de linha e contexto de filtro. Primeiro, veremos o contexto da linha.
Contexto da linha
O contexto da linha é mais facilmente considerado como a linha atual. Aplica-se sempre que uma fórmula tem uma função que aplica filtros para identificar uma única linha numa tabela. A função aplicará inerentemente um contexto de linha para cada linha da tabela sobre a qual está filtrando. Este tipo de contexto de linha aplica-se mais frequentemente a medidas.
Contexto do filtro
O contexto do filtro é um pouco mais difícil de entender do que o contexto da linha. Você pode mais facilmente pensar no contexto do filtro como: Um ou mais filtros aplicados em um cálculo que determina um resultado ou valor.
O contexto de filtro não existe no lugar do contexto de linha; em vez disso, aplica-se além do contexto de linha. Por exemplo, para restringir ainda mais os valores a serem incluídos em um cálculo, você pode aplicar um contexto de filtro, que não apenas especifica o contexto de linha, mas também especifica um valor específico (filtro) nesse contexto de linha.
O contexto do filtro é facilmente visto em seus relatórios. Por exemplo, quando você adiciona TotalCost a uma visualização e, em seguida, adiciona Ano e Região, está definindo um contexto de filtro que seleciona um subconjunto de dados com base em um determinado ano e região.
Por que o contexto do filtro é tão importante para o DAX? Você viu que o contexto do filtro pode ser aplicado adicionando campos a uma visualização. O contexto de filtro também pode ser aplicado em uma fórmula DAX definindo um filtro com funções como ALL, RELATED, FILTER, CALCULATE, por relações e por outras medidas e colunas. Por exemplo, vamos examinar a seguinte fórmula em uma medida chamada Store Sales:
Para entender melhor essa fórmula, podemos decompô-la, assim como acontece com outras fórmulas.
Esta fórmula inclui os seguintes elementos de sintaxe:
A. O nome da medida, Store Sales.
B. O operador de sinal de igual (=), que indica o início da fórmula.
C. A função CALCULATE , que avalia uma expressão, como um argumento, em um contexto que é modificado pelos filtros especificados.
D. Parênteses (), que envolvem uma expressão que contém um ou mais argumentos.
E. Uma medida [Total de Vendas] na mesma tabela que uma expressão. A medida Total Sales tem a fórmula: =SUM(Sales[SalesAmount]).
F. Uma vírgula (,), que separa o argumento da primeira expressão do argumento do filtro.
G. A coluna referenciada totalmente qualificada, Channel[ChannelName]. Este é o nosso contexto de linha. Cada linha nesta coluna especifica um canal, como Loja ou Online.
H. O valor específico, Store, como um filtro. Este é o nosso contexto de filtro.
Esta fórmula garante que apenas os valores de vendas definidos pela medida Total de Vendas sejam calculados apenas para linhas na coluna Channel[ChannelName], com o valor Store usado como filtro.
Como você pode imaginar, ser capaz de definir o contexto do filtro dentro de uma fórmula tem capacidades imensas e poderosas. A capacidade de fazer referência apenas a um determinado valor em uma tabela relacionada é apenas um desses exemplos. Não se preocupe se você não entender completamente o contexto imediatamente. Ao criar suas próprias fórmulas, você entenderá melhor o contexto e por que ele é tão importante no DAX.
QuickQuiz de contexto
- Quais são os dois tipos de contexto?
- O que é contexto de filtro?
- O que é contexto de linha?
As respostas são fornecidas no final deste artigo.
Resumo
Agora que você tem uma compreensão básica dos conceitos mais importantes do DAX, pode começar a criar fórmulas DAX para medidas por conta própria. DAX pode realmente ser um pouco complicado de aprender, mas há muitos recursos disponíveis para você. Depois de ler este artigo e experimentar algumas de suas próprias fórmulas, você pode aprender mais sobre outros conceitos e fórmulas DAX que podem ajudá-lo a resolver seus próprios problemas de negócios. Há muitos recursos DAX disponíveis para você; o mais importante é a referência DAX (Data Analysis Expressions).
Como o DAX existe há vários anos em outras ferramentas de BI da Microsoft, como o Power Pivot e os modelos tabulares do Analysis Services, há muitas informações de ótimas fontes disponíveis. Você pode encontrar mais informações em livros, whitepapers e blogs da Microsoft e dos principais profissionais de BI. O DAX Resource Center também é um ótimo lugar para começar.
Respostas do QuickQuiz
Sintaxe:
- Valida e insere a medida no modelo.
- Colchetes [].
Functions:
- Uma tabela e uma coluna.
- Sim. Uma fórmula pode conter até 64 funções aninhadas.
- Funções de texto.
Contexto:
- Contexto de linha e contexto de filtro.
- Um ou mais filtros em um cálculo que determina um único valor.
- A linha atual.