Excel DAX - usando inteligência de tempo

Você aprendeu sobre o poderoso recurso DAX Time Intelligence no capítulo - Compreendendo o Time Intelligence. Neste capítulo, você aprenderá a usar as funções de inteligência de tempo DAX em vários cenários.

As funções de inteligência de tempo DAX incluem -

  • Funções que ajudam a recuperar datas ou intervalos de datas de seus dados, que são usados ​​para calcular valores em períodos semelhantes.

  • Funções que funcionam com intervalos de data padrão, para permitir que você compare valores entre meses, anos ou trimestres.

  • Funções que recuperam a primeira e a última data de um período especificado.

  • Funções que o ajudam a trabalhar nos saldos iniciais e finais.

Calculando Vendas Cumulativas

Você pode usar funções de inteligência de tempo DAX para criar fórmulas para calcular vendas cumulativas. As seguintes funções DAX podem ser usadas para calcular saldos de fechamento e abertura -

CLOSINGBALANCEMONTH (<expression>,<dates>, [<filter>]) - Avalia a expressão na última data do mês no contexto atual.

OPENINGBALANCEMONTH (<expression>,<dates>, [<filter>]) - Avalia a expressão na primeira data do mês no contexto atual.

CLOSINGBALANCEQUARTER (<expression>,<dates>, [<filter>]) - Avalia a expressão na última data do trimestre no contexto atual.

OPENINGBALANCEQUARTER (<expression>,<dates>, [<filter>]) - Avalia a expressão na primeira data do trimestre, no contexto atual.

CLOSINGBALANCEYEAR (<expression>,<dates>, [<filter>], [<year_end_date>]) - Avalia a expressão na última data do ano no contexto atual.

OPENINGBALANCEYEAR (<expression>, <dates>, <filter>], [<year_end_date>]) - Avalia a expressão na primeira data do ano no contexto atual.

Você pode criar os seguintes campos calculados para o estoque de produtos em um momento especificado usando as seguintes funções DAX -

Month Start Inventory Value: = OPENINGBALANCEMONTH ( 
   SUMX (ProductInventory, ProductInventory[UnitCost]*ProductInventory[UnitsBalance]), DateTime[DateKey]
)
Month End Inventory Value: = CLOSINGBALANCEMONTH ( 
   SUMX (ProductInventory, ProductInventory[UnitCost]*ProductInventory[UnitsBalance]), DateTime[DateKey]
)
Quarter Start Inventory Value: = OPENINGBALANCEQUARTER ( 
   SUMX ProductInventory, (ProductInventory[UnitCost]*ProductInventory[UnitsBalance]), DateTime[DateKey]
)
Quarter End Inventory Value: = CLOSINGBALANCEQUARTER ( 
   SUMX (ProductInventory, ProductInventory[UnitCost]*ProductInventory[UnitsBalance]), DateTime[DateKey]
)
Year Start Inventory Value: = OPENINGBALANCEYEAR ( 
   SUMX (ProductInventory, ProductInventory[UnitCost]*ProductInventory[UnitsBalance]), DateTime[DateKey]
)
Year End Inventory Value: = CLOSINGBALANCEYEAR ( 
   SUMX (ProductInventory, ProductInventory[UnitCost]*ProductInventory[UnitsBalance]), DateTime[DateKey]
)

Comparando valores em diferentes períodos de tempo

Os períodos de tempo padrão suportados pelo DAX são meses, trimestres e anos.

Você pode usar as seguintes funções de inteligência de tempo DAX para comparar as somas em diferentes períodos de tempo.

  • PREVIOUSMONTH (<dates>) - Retorna uma tabela que contém uma coluna de todas as datas do mês anterior, com base na primeira data da coluna de datas, no contexto atual.

  • PREVIOUSQUARTER (<dates>) - Retorna uma tabela que contém uma coluna de todas as datas do trimestre anterior, com base na primeira data da coluna de datas, no contexto atual.

  • PREVIOUSYEAR (<dates>, <year_end_date>]) - Retorna uma tabela que contém uma coluna de todas as datas do ano anterior, considerando a última data na coluna de datas, no contexto atual.

Você pode criar os seguintes campos calculados para calcular a soma das vendas na região oeste nos períodos de tempo especificados para comparação, usando as funções DAX -

Previous Month Sales: = CALCULATE ( 
   SUM (WestSales[SalesAmount]), PREVIOUSMONTH (DateTime [DateKey])
)
Previous Quarter Sales: = CALCULATE ( 
   SUM (WestSales[SalesAmount]), PREVIOUSQUARTER (DateTime [DateKey])
)
Previous Year Sales: = CALCULATE ( 
   SUM (WestSales[SalesAmount]), PREVIOUSYEAR (DateTime [DateKey])
)

Comparando valores em períodos de tempo paralelos

Você pode usar a função de inteligência de tempo DAX PARALLELPERIOD para comparar as somas em um período paralelo ao período de tempo especificado.

PARALLELPERIOD (<dates>, <number_of_intervals>, <interval>)

Esta função DAX retorna uma tabela que contém uma coluna de datas que representam um período paralelo às datas na coluna de datas especificadas, no contexto atual, com as datas deslocadas em vários intervalos para frente ou para trás no tempo.

Você pode criar o seguinte campo calculado para calcular as vendas do ano anterior na região oeste -

Previous Year Sales: = CALCULATE ( 
   SUM (West_Sales[SalesAmount]), PARALLELPERIOD (DateTime[DateKey],-1,year)
)

Calculando Totais Correntes

Você pode usar as seguintes funções de inteligência de tempo DAX para calcular totais ou somas correntes.

  • TOTALMTD (<expression>,<dates>, [<filter>]) - Avalia o valor da expressão para o mês até a data no contexto atual.

  • TOTALQTD (<expression>,<dates>, <filter>]) - Avalia o valor da expressão para as datas do trimestre em curso, no contexto atual.

  • TOTALYTD (<expression>,<dates>, [<filter>], [<year_end_date>]) - Avalia o valor acumulado do ano da expressão no contexto atual.

Você pode criar os seguintes campos calculados para calcular a soma contínua das vendas na região oeste em períodos de tempo especificados, usando as funções DAX -

Soma do mês corrente: = TOTALMTD (SUM (West_Sales [SalesAmount]), DateTime [DateKey])

Soma do trimestre corrente: = TOTALQTD (SUM (WestSales [SalesAmount]), DateTime [DateKey])

Soma do ano corrente: = TOTALYTD (SUM (WestSales [SalesAmount]), DateTime [DateKey])

Calculando um valor em um intervalo de datas personalizado

Você pode usar funções de inteligência de tempo DAX para recuperar um conjunto personalizado de datas, que pode ser usado como uma entrada para uma função DAX que executa cálculos, para criar agregados personalizados em períodos de tempo.

DATESINPERIOD (<dates>, <start_date>, <number_of_intervals>, <interval>) - Retorna uma tabela que contém uma coluna de datas que começa com a data_início e continua para o número_de_intervalos especificado.

DATESBETWEEN (<dates>, <start_date>, ) - Retorna uma tabela que contém uma coluna de datas que começa com start_date e continua até end_date.

DATEADD (<dates>,<number_of_intervals>,<interval>) - 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 das datas no contexto atual.

FIRSTDATE (<dates>) - Retorna a primeira data no contexto atual para a coluna de datas especificada.

LASTDATE (<dates>) - Retorna a última data no contexto atual para a coluna de datas especificada.

Você pode criar as seguintes fórmulas DAX para calcular a soma das vendas na região oeste ao longo de um intervalo de datas especificado, usando as funções DAX -

  • Fórmula DAX para calcular as vendas dos 15 dias anteriores a 17 de julho de 2016.

CALCULATE ( 
   SUM (WestSales[SalesAmount]), DATESINPERIOD (DateTime[DateKey], DATE(2016,17,14), -15, day)
)
  • Fórmula DAX para criar um campo calculado que calcula as vendas do primeiro trimestre de 2016.

= CALCULATE (
   SUM (WestSales[SalesAmount]),DATESBETWEEN (DateTime[DateKey], DATE (2016,1,1), DATE (2016,3,31))
)
  • Fórmula DAX para criar um campo calculado que obtém a primeira data em que uma venda foi feita na região Oeste para o contexto atual.

= FIRSTDATE (WestSales [SaleDateKey])
  • Fórmula DAX para criar um campo calculado que obtém a última data em que foi feita uma venda na região Oeste para o contexto atual.

= LASTDATE (WestSales [SaleDateKey])
  • Fórmula DAX para calcular as datas que são um ano antes das datas no contexto atual.

= DATEADD (DateTime[DateKey],-1,year)