Introdução ao DAXIntroduction to DAX

Learn how to create and work with DAX, from an established expert.

Você aprenderá como...

Introdução ao DAXIntroduction to DAX

Bem-vindo à seção Aprendizado Interativo do Power BI, desenvolvida para apresentá-lo ao DAX.Welcome to the Power BI Guided Learning section designed to introduce you to DAX.

DAX significa Data Analysis Expressions e é a linguagem de fórmula usada no Power BI (também usada pelo Power BI nos bastidores).DAX stands for Data Analysis Expressions, and it is the formula language used throughout Power BI (it is also used by Power BI behind the scenes). O DAX também pode ser encontrado em outras ofertas da Microsoft, como o Power Pivot e SSAS de Tabela, mas esta coleção de tópicos do Aprendizado Interativo se concentra em como o DAX é usado – e pode ser usado por você – no Power BI.DAX is also found in other offerings from Microsoft, such as Power Pivot and SSAS Tabular, but this collection of Guided Learning topics focuses on how DAX is used - and can be used by you - in Power BI.

DAX e essa série de vídeos de Aprendizado InterativoDAX and this Guided Learning video series

O objetivo desta seção Aprendizado Interativo é ensinar a você noções básicas e fundamentos do DAX – considerações sobre o DAX, como ele funciona e os recursos mais úteis, explicados (e aprendidos com muita experiência) por um renomado especialista no DAX, Alberto Ferrari.The goal of this Guided Learning section is to teach you DAX basics and fundamentals - how to think about DAX, how it works, and the most useful features as explained (and learned with lots of experience) by a renowned DAX expert, Alberto Ferrari.

Retrato de Alberto Ferrari

Os vídeos apresentados nesta seção Aprendizado Interativo no DAX ensinam os fundamentos do DAX da perspectiva de como funciona a linguagem de fórmula DAX.The videos in this Guided Learning section on DAX teaches you DAX basics from the perspective of how the DAX formula language works. Isso é útil ao criar fórmulas DAX do zero, mas também é muito útil para entender como o Power BI cria essas fórmulas DAX conforme você cria consultas no Editor de Consultas.This is useful when creating DAX formulas from scratch, but it's also very useful for understanding how Power BI creates those DAX formulas as you create queries in the Query Editor.

Neste vídeo – Introdução ao DAXIn this video - introduction to DAX

Os conceitos do DAX são bem simples, mas o DAX é avançado.DAX concepts are simple and straightforward, but DAX is powerful. O DAX usa alguns conceitos e padrões de programação exclusivos, que podem dificultar seu pleno uso e entendimento.DAX uses some unique programming concepts and patterns which can make it difficult to fully use and understand. As maneiras tradicionais de aprendizado de linguagens podem não ser a melhor abordagem em relação ao DAX; portanto, o objetivo deste vídeo é ensinar conceitos e a teoria que o ajudarão adiante em seu trabalho com o Power BI.Traditional ways of learning languages may not be the best approach to DAX, so the goal of this video is to teach you concepts and theory that will help later on in your Power BI work.

O DAX é uma linguagem funcional, o que significa que o código executado completo está contido em uma função.DAX is a functional language, which means the full executed code is contained inside a function.

No DAX, as funções podem conter outras funções aninhadas, instruções condicionais e referências de valor.In DAX, functions can contain other, nested functions, conditional statements, and value references. A execução no DAX começa na função ou parâmetro mais interno e trabalha para fora.Execution in DAX starts from the innermost function or parameter, and works outward. No Power BI, as fórmulas DAX são escritas em uma única linha e, portanto, a formatação correta das funções é importante para facilitar a leitura.In Power BI, DAX formulas are written in a single line, so formatting your functions correctly is important for readability.

O DAX foi projetado para funcionar com tabelas e, dessa forma, tem apenas dois tipos de dados primários: Numéricos e Outros.DAX is designed to work with tables, so it has just two primary data types: Numeric and Other. Numéricos podem incluir inteiros, decimais e moeda.Numeric can include integers, decimals, and currency. Outros podem incluir cadeias de caracteres e objetos binários.Other can include strings and binary objects. Isso significa que, se você criar a função DAX para funcionar em um tipo de número, você poderá ter certeza de que ela funcionará em todos os outros dados Numéricos.This means that if you build your DAX function to work on one type of number, you can be assured that it will work on any other Numeric data.

O DAX usa a sobrecarga de operador, o que significa que é possível combinar tipos de dados em seus cálculos e os resultados serão alterados com base no tipo de dados usado nas entradas.DAX uses operator overloading, which means that you can mix data types in your calculations and the results will change based on the type of data used in the inputs. A conversão ocorre automaticamente.Conversion happens automatically. Isso indica que você não precisa conhecer os tipos de dados das colunas com as quais está trabalhando no Power BI, mas também significa que, às vezes, a conversão poderá ocorrer de maneiras inesperadas.This means you don't have to know the data types of the columns you're working with in Power BI, but it also means that sometimes conversion can happen in unexpected ways. É uma boa prática entender os dados que estão sendo usados para garantir que os operadores estão se comportando como previsto.It's good practice to understand the data you are using to ensure that your operators are behaving as anticipated.

Em particular, há um tipo de dados com o qual você provavelmente trabalhará muito no Power BI: DateTime.There is one data type in particular that you'll likely be working with a lot in Power BI: DateTime. DateTime é armazenado como um valor de ponto flutuante com partes de inteiro e decimal.DateTime is stored as a floating point value with both integer and decimal parts. DateTime pode ser usado com precisão para cálculos de qualquer período após 1º de março de 1900.DateTime can be used accurately for calculations of any time period after March 1, 1900.

Conteúdo do vídeo gentilmente cedido por Alberto Ferrari, SQLBIVideo content courtesy of Alberto Ferrari, SQLBI

Tipos de cálculo do DAXDAX calculation types

Há dois cálculos principais que podem ser criados usando o DAX:There are two primary calculations you can create using DAX:

  • colunas calculadascalculated columns
  • medidas calculadascalculated measures

Antes de nos aprofundarmos na criação deles, é bom ter uma compreensão profunda sobre a sintaxe do DAX em tabelas e colunas, que você usará ao criar colunas calculadas ou medidas calculadas.Before digging into creating either of those, it's good to have a firm grasp on DAX syntax for tables and columns, which you will use when creating either calculated columns or calculated measures.

Sintaxe de nome de tabela e coluna do DAXDAX table and column name syntax

Se você estiver criando uma nova coluna ou medida, é importante saber o formato geral dos nomes de tabela no DAX:Whether you're creating a new column or measure, it's important to know the general format of table names in DAX:

'Table Name'[ColumnName]

Se houver espaços no nome da tabela (conforme mostrado acima), as aspas simples em torno do nome da tabela serão obrigatórias.If there are spaces in the table name (as shown above), the single quotes around the table name are mandatory. Se o nome da tabela não tiver espaços, as aspas simples poderão ser omitidas para que a sintaxe seja parecida com esta:If the table name has no spaces, the single quotes can be omitted, so the syntax looks like the following:

TableName[ColumnName]

A seguinte imagem mostra uma fórmula DAX que está sendo criada no Power BI:The following image shows a DAX formula being created in Power BI:

Você também pode omitir por completo o nome da tabela e usar apenas o nome da coluna, mas essa é uma prática inadequada para a escrita de funções bem-definidas (e assim, para limpar o código do DAX).You can also omit the table name completely and just use the column name, but this is poor practice for writing clear functions (and thus, for clear DAX code). Nomes de coluna devem sempre incluir os colchetes.Column names must always include the square brackets.

É uma prática recomendada sempre fazer o seguinte:It's best practice to always do the following:

  • Sem espaços em nomes de tabelaNo spaces in table names
  • Sempre inclua o nome da tabela nas fórmulas (não o omita, mesmo que isso seja permitido pelo DAX)Always include the table name in formulas (don't omit it, even though DAX lets you)

Criando colunas calculadasCreating calculated columns

Colunas calculadas serão úteis quando você desejar segmentar ou filtrar o valor ou se quiser um cálculo para cada linha na tabela.Calculated columns are useful when you want to slice or filter on the value, or if you want a calculation for every row in your table.

Você pode criar colunas calculadas no Power BI Desktop selecionando Nova Coluna na guia Modelagem. É melhor estar na exibição Dados (em vez da exibição Relatório ou Relações), já que você pode ver a nova coluna criada e a Barra de Fórmulas é populada e está pronta para a fórmula DAX.You can create calculated columns in Power BI Desktop by selecting New Column from the Modeling tab. It's best to be in Data view (rather than Report or Relationships view), since you can see the new column created and the Formula Bar is populated and ready for your DAX formula.

Depois de selecionar o botão Nova Coluna, a Barra de Fórmulas será populada com um nome de coluna básico (que você muda de acordo com a fórmula, é claro) e o operador = e a nova coluna aparecerá na grade de dados, como mostrado na imagem a seguir.Once you select the New Column button, the Formula Bar is populated with a basic column name (which you change to suit your formula, of course) and the = operator, and the new column appears in the data grid, as shown in the following image.

Os elementos necessários para uma coluna calculada são os seguintes:The required elements for a calculated column are the following:

  • um novo nome de colunaa new column name
  • pelo menos uma função ou expressãoat least one function or expression

Se você fizer referência a uma tabela ou coluna na fórmula da coluna calculada, não será necessário especificar uma linha na tabela – para cada cálculo, o Power BI calculará a coluna da linha atual.If you reference a table or column in your calculated column formula, you do not need to specify a row in the table - Power BI calculates the column for the current row for each calculation.

Criando medidas calculadasCreating calculated measures

Use uma medida calculada quando estiver calculando percentuais ou taxas ou se precisar de agregações complexas.Use a calculated measure when you are calculating percentages or ratios, or you need complex aggregations. Para criar uma medida usando uma fórmula DAX, selecione o botão Nova Medida na guia Modelagem. Mais uma vez, é melhor estar na exibição Dados do Power BI Desktop, já que ela mostra a Barra de Fórmula e facilita o trabalho de escrever sua fórmula DAX.To create a measure using a DAX formula, select the New Measure button from the Modeling tab. Again, it's best to be in the Data view of Power BI Desktop since it shows the Formula Bar and makes it easy to write your DAX formula.

Com medidas, você verá um novo ícone de medidas aparecer no painel Campos com o nome da medida.With measures, you see a new measure icon appear in the Fields pane with the name of the measure. A Barra de Fórmulas é populada novamente com o nome da fórmula DAX (dessa vez, com a medida).The Formula Bar is again populated with the name of your DAX formula (this time, with your measure).

Os elementos necessários para uma medida calculada são os mesmos usados para uma coluna calculada:The required elements for a calculated measure are the same as they are for a calculated column:

  • um novo nome de medidaa new measure name
  • pelo menos uma função ou expressãoat least one function or expression

Conteúdo do vídeo gentilmente cedido por Alberto Ferrari, SQLBIVideo content courtesy of Alberto Ferrari, SQLBI

Funções do DAXDAX functions

Com o DAX, há muitas funções disponíveis para formatar, formar ou, de outro modo, analisar seus dados.With DAX, there are many functions available to shape, form, or otherwise analyze your data. Essas funções podem ser agrupadas em algumas categorias:These functions can be grouped into a handful of categories:

  • Funções de agregaçãoAggregation functions
  • Funções de contagemCounting functions
  • Funções lógicasLogical functions
  • Funções de informaçõesInformation functions
  • Funções de textoText functions
  • Funções de dataDate functions

De forma semelhante ao Excel, quando você começa a digitar a fórmula na Barra de Fórmulas do Power BI Desktop, é exibida uma lista das funções disponíveis para ajudá-lo a determinar qual função disponível você deseja selecionar.Similar to Excel, when you start typing your formula into the Power BI Desktop Formula Bar, a list of available functions appears to help you determine which available function you want to select. Além disso, com o uso das teclas de direção para cima e para baixo no teclado, você pode realçar qualquer uma das funções disponíveis e uma breve descrição será exibida.And by using the up and down arrow keys on your keyboard, you can highlight any of the available functions, and a brief description is displayed.

O Power BI exibe as funções que correspondem às letras digitadas até o momento; portanto, se você digitar S, apenas as funções que começam com S aparecerão na lista.Power BI displays the functions that match the letters you've typed so far, so if you type S only functions that begin with S appear in the list. Se você digitar Su, apenas as funções que contêm a sequência de letras Su em seus nomes aparecerão na lista (eles não precisam começar com Su, apenas precisam conter essa sequência de letras).If you type Su, only functions that contain the letter sequence Su in their name appear in the list (they don't have to start with Su, they just have to contain that letter sequence).

É fácil testar o DAX dessa forma e encontrar cada uma das várias funções DAX disponíveis no Power BI.It's easy to experiment with DAX in this way, and to find each of the various DAX functions that are available in Power BI. Basta começar a digitar e o Power BI o ajuda neste processo.All you have to do is start typing, and Power BI helps you along.

Agora que sabemos como executar essa fórmula DAX, vamos dar uma olhada em cada uma dessas categorias de função por vez.Now that we know how to get that DAX formula started, let's take a look at each of these function categories in turn.

Funções de agregaçãoAggregation functions

O DAX tem diversas funções de agregação, incluindo as seguintes funções mais usadas:DAX has a number of aggregation functions, including the following commonly used functions:

  • SUMSUM
  • AVERAGEAVERAGE
  • MINMIN
  • MAXMAX
  • SUMX (e outras funções X)SUMX (and other X functions)

Essas funções funcionam somente em colunas numéricas e, geralmente, podem agregar apenas uma coluna por vez.These functions work only on numeric columns, and generally can aggregate only one column at a time.

No entanto, as funções de agregação especiais que terminam em X, como SUMX, podem funcionar em várias colunas.However, special aggregation functions that end in X, such as SUMX, can work on multiple columns. Essas funções iteram pela tabela e avaliam a expressão para cada linha.These functions iterate through the table, and evaluate the expression for each row.

Funções de contagemCounting functions

As funções de contagem mais usadas no DAX incluem as seguintes:Often-used counting functions in DAX include the following:

  • COUNTCOUNT
  • COUNTACOUNTA
  • COUNTBLANKCOUNTBLANK
  • COUNTROWSCOUNTROWS
  • DISTINCTCOUNTDISTINCTCOUNT

Essas funções contam elementos diferentes, como valores distintos, valores não vazios e linhas de tabela.These functions count different elements, such as distinct values, non-empty values, and table rows.

Funções lógicasLogical functions

A coleção de funções lógicas no DAX inclui:The collection of logical functions in DAX include:

  • ANDAND
  • OROR
  • NOTNOT
  • IFIF
  • IFERRORIFERROR

Essas funções especiais também podem ser expressas com operadores.These special functions can also be expressed with operators. Por exemplo, AND pode ser digitado como (substituído por) && na fórmula DAX.For example, AND can be typed as (replaced with) && in your DAX formula.

Você pode usar operadores (como &&) quando precisar de mais de duas condições na fórmula; caso contrário, é uma prática recomendada usar o próprio nome da função (como AND) para facilitar a leitura do código DAX.You can use operators (such as &&) when you need more than two conditions in your formula, but otherwise, it's best practice use the function name itself (such as AND) for readability of your DAX code.

Funções de informaçõesInformation functions

As funções de informações no DAX incluem:Information functions in DAX include:

  • ISBLANKISBLANK
  • ISNUMBERISNUMBER
  • ISTEXTISTEXT
  • ISNONTEXTISNONTEXT
  • ISERRORISERROR

Embora essas funções possam ser circunstancialmente úteis, é importante saber o tipo de dados das colunas com antecedência, em vez de depender dessas funções para fornecer o tipo de dados.While these functions can be situationally useful, there is value in knowing the data type of your columns ahead of time, rather than depending on these functions to provide the data type.

O DAX usa as funções MAX e MIN tanto para agregar quanto para comparar valores.DAX uses the MAX and MIN functions to both aggregate values, and to compare values.

Funções de textoText functions

As funções de texto no DAX incluem as seguintes:The text functions in DAX include the following:

  • CONCATENATECONCATENTATE
  • REPLACEREPLACE
  • SEARCHSEARCH
  • UPPERUPPER
  • FIXEDFIXED

Essas funções de texto funcionam de forma muito semelhante às funções homônimas do Excel; portanto, se você estiver familiarizado com a maneira como o Excel lida com as funções de texto, você já estará um passo à frente.These text work very similarly to the Excel functions that have the same name, so if you're familiar with how Excel handles text functions, you're already a step ahead. Caso contrário, você sempre poderá testar essas funções no Power BI e saber mais sobre como elas se comportam.If not, you can always experiment with these functions in Power BI, and learn more about how they behave.

Funções de dataDate functions

O DAX inclui as seguintes funções Date:DAX includes the following Date functions:

  • DATEDATE
  • HOURHOUR
  • NOWNOW
  • EOMONTHEOMONTH
  • WEEKDAYWEEKDAY

Embora essas funções sejam úteis para calcular e extrair informações de valores de data, elas não se aplicam à inteligência de dados temporais, que usa uma tabela de data.While these functions are useful to calculate and extract information from date values, they do not apply to time intelligence, which uses a date table.

Conteúdo do vídeo gentilmente cedido por Alberto Ferrari, SQLBIVideo content courtesy of Alberto Ferrari, SQLBI

Usando variáveis em expressões DAXUsing variables in DAX expressions

O uso de variáveis é uma parte extremamente avançada de uma função DAX.Using variables are an extremely powerful part of a DAX expression.

Você pode definir uma variável em qualquer lugar de uma expressão DAX, usando a seguinte sintaxe:You can define a variable anywhere in a DAX expression, using the following syntax:

VARNAME = RETURNEDVALUE

As variáveis podem ser qualquer tipo de dados, incluindo tabelas inteiras.Variables can be any data type, including entire tables.

Tenha em mente que sempre que você fizer referência a uma variável na expressão DAX, o Power BI terá de recalcular o valor de acordo com sua definição.Keep in mind that each time you reference a variable in your DAX expression, Power BI must recalculate its value according to your definition. Por esse motivo, é uma boa prática evitar a repetição de variáveis na função.For this reason, it's good practice to avoid repeating variables in your function.

Conteúdo do vídeo gentilmente cedido por Alberto Ferrari, SQLBIVideo content courtesy of Alberto Ferrari, SQLBI

Table relationships and DAX (DAX e relações de tabela)Table relationships and DAX

O Power BI permite criar relações entre várias tabelas, incluindo tabelas provenientes de fontes de dados completamente diferentes.Power BI lets you create relationships among multiple tables, including tables that come from completely different data sources. Você pode ver esses relacionamentos de qualquer modelo de dados na exibição Relações do Power BI Desktop.You can see those relationships for any data model in the Relationships view of Power BI Desktop.

Funções relacionais do DAXDAX relational functions

O DAX tem funções relacionais que permitem interagir com tabelas que têm relações estabelecidas.DAX has relational functions that enable you to interact with tables that have established relationships.

Você pode retornar o valor de uma coluna ou retornar todas as linhas em uma relação usando as funções DAX.You can return the value of a column, or you can return all rows in a relationship using DAX functions.

Por exemplo, a função TABLE segue as relações e retorna o valor de uma coluna, enquanto RELATEDTABLE segue as relações e retorna uma tabela inteira que é filtrada para incluir somente as linhas relacionadas.For example, the TABLE function follows relationships and returns the value of a column, while RELATEDTABLE follows relationships, and returns an entire table that is filtered to include only related rows.

A função RELATED funciona em relações muitos para um, enquanto RELATEDTABLE é usada para relações um para muitos.The RELATED function works on many-to-one relationships, while RELATEDTABLE is for one-to-many relationships.

É possível usar funções relacionais para criar expressões que incluem valores em várias tabelas.You can use relational functions to build expressions that include values across multiple tables. O DAX retornará um resultado com essas funções, independentemente do tamanho da cadeia da relação.DAX will return a result with these functions, regardless of the length of the chain of the relationship.

Conteúdo do vídeo gentilmente cedido por Alberto Ferrari, SQLBIVideo content courtesy of Alberto Ferrari, SQLBI

Tabelas e filtros do DAXDAX tables and filtering

Uma diferença significativa entre a linguagem de fórmula do DAX e do Excel é que o DAX permite passar tabelas inteiras entre expressões, em vez de serem restritas a um único valor.One significant difference between DAX and the Excel formula language is that DAX allows you to pass entire tables between expressions, rather than being constrained to a single value. Um efeito poderoso é que o DAX permite filtrar tabelas em suas expressões e, em seguida, trabalhar com o conjunto filtrado de valores.One powerful effect is that DAX allows you to filter tables in its expressions, then work with the filtered set of values.

Com o DAX, você pode criar tabelas calculadas totalmente novas e, em seguida, tratá-las como qualquer outra tabela – incluindo a criação de relações entre elas e outras tabelas em seu modelo de dados.With DAX, you can create entirely new calculated tables and then treat them like any other table - including creating relationships between them and other tables in your data model.

Funções de tabela do DAXDAX table functions

O DAX tem um conjunto avançado de funções de tabela, incluindo as seguintes:DAX has a rich set of table functions, including the following:

  • FILTERFILTER
  • ALLALL
  • VALUESVALUES
  • DISTINCTDISTINCT
  • RELATEDTABLERELATEDTABLE

Essas funções retornam uma tabela completa, em vez de um valor.These functions return a full table rather, rather than a value. Normalmente, você usará os resultados de uma função de tabela em uma análise detalhada como parte de uma expressão maior, em vez de usar a tabela retornada como um valor final.Typically you'll use the results of a table function in further analysis as part of a greater expression, rather than using that returned table a final value. É importante observar que, quando você usa uma função de tabela, os resultados herdam as relações de suas colunas.It's important to note that When you use a table function, the results inherit the relationships of their columns.

É possível combinar funções de tabela na expressão, desde que cada função use e retorne uma tabela.You can mix table functions in your expression, as long as each function uses a table and returns a table. Por exemplo, considere a seguinte expressão DAX:For example, consider the following DAX expression:

FILTER (ALL (Table), Condition)

Essa expressão colocaria um filtro sobre a totalidade da Tabela, ignorando todo o conteúdo atual do filtro.That expression would put a filter over the entirety of Table, ignoring any current filter content.

A função DISTINCT retorna os valores distintos de uma coluna que também são visíveis no contexto atual.The DISTINCT function returns the distinct values of a column that are also visible in the current context. Portanto, para usar o exemplo de expressão DAX acima, o uso ALL nessa expressão ignorará os filtros, enquanto a substituição de ALL por DISTINCT respeitará esses filtros.So touse the above DAX expression example, using ALL in that expression ignores filters, while replacing ALL with DISTINCT would observe them.

Valores de contagem com o DAXCounting values with DAX

Uma pergunta comum que os construtores de relatórios do Power BI querem responder é a seguinte:One common question that Power BI report builders want to answer is the following:

  • Quantos valores existem para esta coluna?How many values do I have for this column?

Essa pode ser uma pergunta simples de responder com uma tabela exibida na frente, mas o DAX aborda isso de maneira diferente, principalmente quando há uma relação entre as tabelas.That may be a simple question to answer with a table displayed in front of you, but DAX approaches in a different way in a different way, particularly when there's a relationship between tables.

Por exemplo, o Power BI e o DAX incluem valores que não estão indexados de forma cruzada corretamente.For example, Power BI and DAX includes values that are not properly cross-indexed. Se a relação de entrada for desfeita, o DAX adicionará uma nova linha à tabela relacionada que contém espaços em branco em todos os campos e vinculará essa nova linha à linha não indexada para garantir a integridade referencial.If the incoming relationship is broken, DAX adds a new row to the related table that has blanks in every field, and links that new row to the unindexed row to guarantee referential integrity. Se sua função incluir linhas em branco, como geralmente é o caso quando se usa ALL, essas linhas em branco serão incluídas no número de valores retornados para essa coluna.If your function includes blank rows, such as is often the case when using ALL, those blank rows will then be included in the number of values returned for that column.

Também é possível criar tabelas calculadas inteiras usando funções DAX.You can also create entire calculated tables using DAX functions. As tabelas calculadas criadas com o DAX necessitam de uma função NAME e TABLE.Calculated tables created using DAX require a NAME and a TABLE function. Tabelas calculadas podem ser usadas como quaisquer outras tabelas, incluindo a definição de relações.Calculated tables can be used like any other table, including establishing relationships.

Conteúdo do vídeo gentilmente cedido por Alberto Ferrari, SQLBIVideo content courtesy of Alberto Ferrari, SQLBI

Parabéns!

You've completed the Introduction to DAX section of Power BI Guided Learning. What a journey! If you've done these tutorials in sequence, then you've finished all the sections of Guided Learning. Way to go! Now go use Power BI to create compelling reports and dashboards that tell your story.

Você aprendeu como...

Colaboradores

  • Davidiseminger
  • olprod
  • Alisha-Acharya