Excel DAX: uso de inteligencia de tiempo

Ha aprendido sobre la potente función de inteligencia de tiempo de DAX en el capítulo: Comprensión de la inteligencia de tiempo. En este capítulo, aprenderá a utilizar las funciones de inteligencia de tiempo de DAX en varios escenarios.

Las funciones de inteligencia de tiempo de DAX incluyen:

  • Funciones que lo ayudan a recuperar fechas o rangos de fechas de sus datos, que se utilizan para calcular valores en períodos similares.

  • Funciones que funcionan con intervalos de fechas estándar para permitirle comparar valores entre meses, años o trimestres.

  • Funciones que recuperan la primera y la última fecha de un período específico.

  • Funciones que le ayudan a trabajar en los saldos de apertura y cierre.

Cálculo de ventas acumuladas

Puede utilizar las funciones de inteligencia de tiempo de DAX para crear fórmulas para calcular las ventas acumuladas. Las siguientes funciones de DAX se pueden utilizar para calcular los saldos de cierre y apertura:

CLOSINGBALANCEMONTH (<expression>,<dates>, [<filter>]) - Evalúa la expresión en la última fecha del mes en el contexto actual.

OPENINGBALANCEMONTH (<expression>,<dates>, [<filter>]) - Evalúa la expresión en la primera fecha del mes en el contexto actual.

CLOSINGBALANCEQUARTER (<expression>,<dates>, [<filter>]) - Evalúa la expresión en la última fecha del trimestre en el contexto actual.

OPENINGBALANCEQUARTER (<expression>,<dates>, [<filter>]) - Evalúa la expresión en la primera fecha del trimestre, en el contexto actual.

CLOSINGBALANCEYEAR (<expression>,<dates>, [<filter>], [<year_end_date>]) - Evalúa la expresión en la última fecha del año en el contexto actual.

OPENINGBALANCEYEAR (<expression>, <dates>, <filter>], [<year_end_date>]) - Evalúa la expresión en la primera fecha del año en el contexto actual.

Puede crear los siguientes campos calculados para el inventario de productos en un momento específico utilizando las siguientes funciones de 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]
)

Comparación de valores en diferentes períodos de tiempo

Los períodos de tiempo predeterminados admitidos por DAX son meses, trimestres y años.

Puede utilizar las siguientes funciones de inteligencia de tiempo de DAX para comparar las sumas en diferentes períodos de tiempo.

  • PREVIOUSMONTH (<dates>) - Devuelve una tabla que contiene una columna de todas las fechas del mes anterior, basada en la primera fecha en la columna de fechas, en el contexto actual.

  • PREVIOUSQUARTER (<dates>) - Devuelve una tabla que contiene una columna de todas las fechas del trimestre anterior, basada en la primera fecha en la columna de fechas, en el contexto actual.

  • PREVIOUSYEAR (<dates>, <year_end_date>]) - Devuelve una tabla que contiene una columna de todas las fechas del año anterior, dada la última fecha en la columna de fechas, en el contexto actual.

Puede crear los siguientes campos calculados para calcular la suma de las ventas en la región Oeste en los períodos de tiempo especificados para la comparación, utilizando las funciones de 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])
)

Comparación de valores en períodos de tiempo paralelos

Puede utilizar la función de inteligencia de tiempo de DAX PARALLELPERIOD para comparar las sumas en un período paralelo al período de tiempo especificado.

PARALLELPERIOD (<fechas>, <número_de_intervalos>, <intervalo>)

Esta función DAX devuelve una tabla que contiene una columna de fechas que representa un período paralelo a las fechas en la columna de fechas especificadas, en el contexto actual, con las fechas desplazadas una cantidad de intervalos hacia adelante o hacia atrás en el tiempo.

Puede crear el siguiente campo calculado para calcular las ventas del año anterior en la región Oeste:

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

Cálculo de totales acumulados

Puede utilizar las siguientes funciones de inteligencia de tiempo de DAX para calcular totales acumulados o sumas acumuladas.

  • TOTALMTD (<expression>,<dates>, [<filter>]) - Evalúa el valor de la expresión para el mes hasta la fecha en el contexto actual.

  • TOTALQTD (<expression>,<dates>, <filter>]) - Evalúa el valor de la expresión para las fechas del trimestre hasta la fecha, en el contexto actual.

  • TOTALYTD (<expression>,<dates>, [<filter>], [<year_end_date>]) - Evalúa el valor anual hasta la fecha de la expresión en el contexto actual.

Puede crear los siguientes campos calculados para calcular la suma acumulada de ventas en la región Oeste en períodos de tiempo específicos, utilizando las funciones de DAX:

Suma corriente mensual: = TOTALMTD (SUM (West_Sales [SalesAmount]), DateTime [DateKey])

Suma corriente trimestral: = TOTALQTD (SUM (WestSales [SalesAmount]), DateTime [DateKey])

Suma acumulada del año: = TOTALYTD (SUM (WestSales [SalesAmount]), DateTime [DateKey])

Calcular un valor en un rango de fechas personalizado

Puede usar las funciones de inteligencia de tiempo de DAX para recuperar un conjunto personalizado de fechas, que puede usar como entrada para una función de DAX que realiza cálculos, para crear agregados personalizados en períodos de tiempo.

DATESINPERIOD (<dates>, <start_date>, <number_of_intervals>, <interval>) - Devuelve una tabla que contiene una columna de fechas que comienza con fecha_inicio y continúa durante el número_de_intervalos especificado.

DATESBETWEEN (<dates>, <start_date>, ) - Devuelve una tabla que contiene una columna de fechas que comienza con start_date y continúa hasta end_date.

DATEADD (<dates>,<number_of_intervals>,<interval>) - Devuelve una tabla que contiene una columna de fechas, desplazada hacia adelante o hacia atrás en el tiempo por el número especificado de intervalos de las fechas en el contexto actual.

FIRSTDATE (<dates>) - Devuelve la primera fecha en el contexto actual para la columna de fechas especificada.

LASTDATE (<dates>) - Devuelve la última fecha en el contexto actual para la columna de fechas especificada.

Puede crear las siguientes fórmulas de DAX para calcular la suma de las ventas en la región Oeste durante un rango de fechas específico, utilizando las funciones de DAX:

  • Fórmula DAX para calcular las ventas de los 15 días anteriores al 17 de julio de 2016.

CALCULATE ( 
   SUM (WestSales[SalesAmount]), DATESINPERIOD (DateTime[DateKey], DATE(2016,17,14), -15, day)
)
  • Fórmula DAX para crear un campo calculado que calcule las ventas del primer trimestre de 2016.

= CALCULATE (
   SUM (WestSales[SalesAmount]),DATESBETWEEN (DateTime[DateKey], DATE (2016,1,1), DATE (2016,3,31))
)
  • Fórmula DAX para crear un campo calculado que obtenga la primera fecha en que se realizó una venta en la región Oeste para el contexto actual.

= FIRSTDATE (WestSales [SaleDateKey])
  • Fórmula DAX para crear un campo calculado que obtenga la última fecha en la que se realizó una venta en la región Oeste para el contexto actual.

= LASTDATE (WestSales [SaleDateKey])
  • Fórmula DAX para calcular las fechas que son un año antes de las fechas en el contexto actual.

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