Escrito por Giovanna Gadelha,
6 minutos de leitura
Descubra as funções DAX de inteligência de dados temporais no Power BI
Uma das principais necessidades do negócio é a análise e as visualizações dos dados ao longo do tempo, para tanto, o DAX oferece diversas funções de inteligência de dados temporais que podem ser aplicadas de maneira simples e efetiva.
Nos dias atuais, o Microsoft Power BI é a principal ferramenta de Bussiness Intelligence (BI) no cenário corporativo. A partir dela, é possível desfrutar de diferentes funcionalidades que auxiliam na tomada de decisão do negócio. Nesse sentido, independentemente do contexto, será necessário a construção de cálculos e medidas que direcionam os dados e nos permitem visualizar o andamento das atividades da empresa. No Power BI, utiliza-se a linguagem DAX (Expressões de Análise de Dados), que consiste em uma coletânea de funções, operadores e constantes que são utilizadas na construção de fórmulas ou expressões.
Uma das principais necessidades do negócio é a análise e as visualizações dos dados ao longo do tempo, para tanto, o DAX oferece diversas funções de inteligência de dados temporais que podem ser aplicadas de maneira simples e efetiva. Neste, iremos entender, de maneira geral, quais os tipos de funções e seus determinados retornos. Além disso, demonstraremos exemplos práticos de cenários com valor acumulado durante um período de tempo e como realizar comparações mensais e anuais a partir das fórmulas de tempo do Power BI.
Tipos de funções temporais disponíveis
Na versão atual da ferramenta há, no total, 35 funções de inteligência de dados temporais. Para que possamos entendê-las de forma mais simples, podemos visualizar um quadro comparativo que descreve a função, assim como demonstra o tipo de retorno que iremos obter. Nesta seção iremos destacar este quadro comparativo, que possui como referência a documentação oficial da Microsoft. Ao fim do artigo, iremos direcionar o foco nas funções de análise acumulada e comparativa, exemplificando-as em um cenário prático.
Função | Descrição | Retorno |
CLOSINGBALANCEMONTH | Avalia a expressão na última data do mês no contexto atual. | Avaliação de expressões ao longo do tempo |
CLOSINGBALANCEQUARTER | Avalia a expressão na última data do trimestre no contexto atual. | Avaliação de expressões ao longo do tempo |
CLOSINGBALANCEYEAR | Avalia a expressão na última data do ano no contexto atual. | Avaliação de expressões ao longo do tempo |
DATEADD | Retorna uma tabela que contém uma coluna de datas, deslocada para frente ou para trás no tempo pelo número especificado de intervalos começando nas datas do contexto atual. | Uma tabela de datas |
DATESBETWEEN | Retorna uma tabela que contém uma coluna de datas que começa com uma data de início especificada e continua até uma data de término especificada. | Uma tabela de datas |
DATESINPERIOD | Retorna uma tabela que contém uma coluna de datas que começa com uma data de início especificada e continua até o número e o tipo de intervalo de datas especificados. | Uma tabela de datas |
DATESMTD | Retorna uma tabela que contém uma coluna das datas do mês até a data, no contexto atual. | Uma tabela de datas |
DATESQTD | Retorna uma tabela que contém uma coluna das datas do trimestre até a data, no contexto atual. | Uma tabela de datas |
DATESYTD | Retorna uma tabela que contém uma coluna das datas do ano até a data, no contexto atual. | Uma tabela de datas |
ENDOFMONTH | Retorna a última data do mês no contexto atual para a coluna de datas especificada. | Uma única data |
ENDOFQUARTER | Retorna a última data do trimestre no contexto atual para a coluna de datas especificada. | Uma única data |
ENDOFYEAR | Retorna a última data do ano no contexto atual para a coluna de datas especificada. | Uma única data |
FIRSTDATE | Retorna a primeira data no contexto atual para a coluna de datas especificada. | Uma única data |
FIRSTNONBLANK | Retorna o primeiro valor na coluna, column, filtrado pelo contexto atual, em que a expressão não está em branco | Uma única data |
LASTDATE | Retorna a última data no contexto atual para a coluna de datas especificada. | Uma única data |
LASTNONBLANK | Retorna o último valor na coluna, column, filtrada pelo contexto atual em que a expressão não está em branco. | Uma única data |
NEXTDAY | Retorna uma tabela que contém uma coluna com todas as datas do dia seguinte, com base na primeira data especificada na coluna dates no contexto atual. | Uma tabela de datas |
NEXTMONTH | Retorna uma tabela que contém uma coluna de todas as datas do mês seguinte, com base na primeira data da coluna dates no contexto atual. | Uma tabela de datas |
NEXTQUARTER | Retorna uma tabela que contém uma coluna com todas as datas no próximo trimestre, com base na primeira data especificada na coluna dates, no contexto atual. | Uma tabela de datas |
NEXTYEAR | Retorna uma tabela que contém uma coluna de todas as datas no próximo ano, com base na primeira data na coluna dates, no contexto atual. | Uma tabela de datas |
OPENINGBALANCEMONTH | Avalia a expressão na primeira data do mês no contexto atual. | Avaliação de expressões ao longo do tempo |
OPENINGBALANCEQUARTER | Avalia a expressão na primeira data do trimestre, no contexto atual. | Avaliação de expressões ao longo do tempo |
OPENINGBALANCEYEAR | Avalia a expressão na primeira data do ano no contexto atual. | Avaliação de expressões ao longo do tempo |
PARALLELPERIOD | Retorna uma tabela que contém uma coluna de datas que representa um período paralelo às datas na coluna dates especificada, no contexto atual, com as datas deslocadas em um número de intervalos para frente ou para trás no tempo. | Uma tabela de datas |
PREVIOUSDAY | Retorna uma tabela que contém uma coluna de todas as datas que representam o dia anterior à primeira data na coluna dates, no contexto atual. | Uma tabela de datas |
PREVIOUSMONTH | Retorna uma tabela que contém uma coluna de todas as datas do mês anterior, com base na primeira data na coluna dates, no contexto atual. | Uma tabela de datas |
PREVIOUSQUARTER | Retorna uma tabela que contém uma coluna com todas as datas do trimestre anterior, com base na primeira data na coluna dates, no contexto atual. | Uma tabela de datas |
PREVIOUSYEAR | Retorna uma tabela que contém uma coluna de todas as datas do ano anterior, com base na primeira data na coluna dates, no contexto atual. | Uma tabela de datas |
SAMEPERIODLASTYEAR | Retorna uma tabela que contém uma coluna de datas deslocadas para um ano antes das datas na coluna dates especificada, no contexto atual. | Uma tabela de datas |
STARTOFMONTH | Retorna a primeira data do mês no contexto atual para a coluna de datas especificada. | Uma única data |
STARTOFQUARTER | Retorna a primeira data do trimestre no contexto atual para a coluna de datas especificada. | Uma única data |
STARTOFYEAR | Retorna a primeira data do ano no contexto atual para a coluna de datas especificada. | Uma única data |
TOTALMTD | Avalia o valor da expressão para o mês até a data, no contexto atual. | Avaliação de expressões ao longo do tempo |
TOTALQTD | Avalia o valor da expressão para as datas do trimestre até a data, no contexto atual. | Avaliação de expressões ao longo do tempo |
TOTALYTD | Avalia o valor do ano até a data da expressão no contexto atual. | Avaliação de expressões ao longo do tempo |
- Retorno de apenas uma data: Podem ser utilizadas como argumento para outras funções.
- Retorno de uma tabela de datas: Normalmente são utilizadas como um argumento de filtro na função Calculate.
- Avaliação de expressões ao longo do tempo: Podem ser utilizadas para substituir a função calculate e permitem uma fórmula mais curta e simples.
Seção prática: Como aplicar essas funções?
Para fazermos um exercício prático, iremos utilizar um dataset bastante simples de vendas, disponível no Kaggle neste link. Ele possui apenas duas colunas, sendo uma de data e uma com a quantidade de vendas. A seguir, iremos conferir dois exemplos que são essenciais para entender, por exemplo, o faturamento e o desempenho de um determinado contexto. Nesse caso, o dataset exemplifica vendas de carros. Para que possamos iniciar, vamos criar a medida de total de vendas, que será utilizada para ambos os casos.
Total de Vendas = SUM(Base[Vendas])
Exemplo prático: Análise de valor acumulado
Para que possamos analisar o acumulado anual de vendas, podemos utilizar a função DATESYTD, assim como, para o acumulado mensal podemos utilizar a função DATESMTD. Tais funções permitem analisar como estava determinado número, seja de vendas ou de gastos, em um corte de tempo. Ambas são utilizadas como parâmetro de filtro da função calculate e retornam uma tabela de datas.
Vendas YTD = CALCULATE([Total de Vendas], DATESYTD(Base[Data].[Date]))
Como é possível visualizar no exemplo acima, a coluna de Vendas YTD nos permite identificar o valor acumulado do ano a cada mês. Ou seja, a cada mês ele soma as vendas atuais com a do mês anterior.
Caso você deseje visualizar o acumulado mensal de vendas, é preciso utilizar a função DATESMTD e assim, podemos ter uma análise a cada dia do mês e não mais por ano. Nesse exemplo específico, foi utilizado uma base amostral que continha alguns dias de vendas dentro dos meses de janeiro e fevereiro de 2017.
Vendas MTD = CALCULATE(SUM(‘Base Exemplo'[Vendas]), DATESMTD(‘Base Exemplo'[Data].[Date]))
Nesse exemplo, podemos ver que o acumulado é feito por dia dentro de um mês específico. Portanto, no dia 1º de Janeiro tivemos um total de 5 vendas, enquanto que no dia 05 de Janeiro tivemos 13. O valor acumulado das vendas até dia 05/0, então, será de 18 vendas.
Exemplo prático: Comparação mensal e anual
Além de verificarmos o valor acumulado, também é possível realizar comparações a partir de funções DAX prontas. Como por exemplo, para fazermos uma comparação mensal utiliza-se a função DATEADD. Essas análises são importantes para entendermos quais foram os meses de melhor faturamento e realizar o entendimento da performance da empresa, para que a partir destes dados, decisões possam ser tomadas.
Vendas mês anterior = CALCULATE([Total de Vendas], DATEADD(Base[Data].[Date], –1, MONTH))
Na tabela acima, a partir da função DATESADD, podemos verificar o total de vendas do mês anterior em comparação com o mês atual.
Vendas ano anterior = CALCULATE([Total de Vendas], SAMEPERIODLASTYEAR(Base[Data].[Date]))
E por fim, para compararmos as vendas de acordo com o ano, ou seja, verificar como foram as vendas de um mês em diferentes anos podemos utilizar a função SAMPLEPERIODLASTYEAR
Na tabela acima, é possível verificar como foram as vendas do ano anterior (2017) em comparação com o ano de 2018 a cada mês.
Ao fim deste artigo, espero que eu possa ter exemplificado de maneira simples e direta o quão importantes são as funções de inteligência temporal do Power BI e o quanto podemos utiliza-las para analises que influenciam diretamente na tomada de decisão, partindo de insights significativos. Em caso de necessidade de aprofundamento no assunto, recomenda-se a documentação oficial da Microsoft.