Excel DAX: uso de la lógica de inteligencia de tiempo

Aprendió sobre la poderosa función DAX Time Intelligence 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 análisis de tiempo de DAX incluyen:

  • Funciones que ayudan a extraer fechas o rangos de fechas de datos que se utilizan para calcular valores para períodos similares.

  • Funciones que funcionan con intervalos de fechas estándar para que pueda comparar valores por mes, año o trimestre.

  • Funciones que recuperan la primera y la última fecha del período especificado.

  • Funciones para ayudarle a trabajar con saldos de apertura y cierre.

Calcular las ventas acumuladas

Puede utilizar las funciones de análisis 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:

MES DE CLAUSINGBALANCE (<выражение>, <даты>, [<filter>]) – Evalúa la expresión el último día del mes en el contexto actual.

APERTURA BALANCE MES (<выражение>, <даты>, [<filter>]) – Evalúa la expresión el primer día del mes en el contexto actual.

CLOSINGBALANCEQUARTER (<выражение>, <даты>, [<filter>]) – Evalúa la expresión a la última fecha del trimestre en el contexto actual.

APERTURA BALANCEQUARTER (<выражение>, <даты>, [<filter>]) – Evalúa la expresión en la primera fecha del trimestre en el contexto actual.

CLOSINGBALANCEYEAR (<выражение>, <даты>, [<filter>], [<year_end_date>]) – Evalúa la expresión el último día del año en el contexto actual.

AÑO DE BALANCE DE APERTURA (<выражение>, <даты>, <фильтр>] [<year_end_date>]) – Evalúa una 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 momentos específicos 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 para diferentes períodos de tiempo

De forma predeterminada, DAX admite los siguientes períodos de tiempo: meses, trimestres y años.

Puede utilizar las siguientes funciones de análisis de tiempo de DAX para comparar importes en diferentes períodos de tiempo.

  • MES ANTERIOR (<даты>) – Devuelve una tabla que contiene una columna de todas las fechas del mes anterior en función de la primera fecha en la columna de fecha en el contexto actual.

  • TRIMESTRE ANTERIOR (<даты>) – Devuelve una tabla que contiene una columna de todas las fechas del trimestre anterior basada en la primera fecha en la columna de la fecha en el contexto actual.

  • AÑO ANTERIOR (<даты>, <дата_конца года>]) – Devuelve una tabla que contiene una columna de todas las fechas del año anterior, incluida la última fecha en la columna de la fecha en el contexto actual.

Puede crear los siguientes campos calculados para calcular la cantidad de ventas en la región occidental en períodos de tiempo especificados para comparar 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 analítica de tiempo DAX PARALLELPERIOD para comparar cantidades durante un período paralelo a un período de tiempo específico.

PERIODO PARALELO (<даты>, <число_интервалов>, <интервал>)

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

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

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

Cálculo de subtotales

Puede utilizar las siguientes funciones de análisis de tiempo de DAX para calcular subtotales o subtotales.

  • TOTALMTD (<выражение>, <даты>, [<filter>]) – Evalúa el valor de la expresión un mes antes de la fecha actual en el contexto actual.

  • TOTALQTD (<выражение>, <даты>, <фильтр>]) – Evalúa el valor de la expresión para las fechas del trimestre hasta la fecha en el contexto actual.

  • TOTALYTD (<выражение>, <даты>, [<filter>], [<year_end_date>]) – Evalúa el valor de la expresión desde el comienzo del año hasta la fecha en el contexto actual.

Puede usar las funciones de DAX para crear los siguientes campos calculados para calcular el monto de ventas actual en la región occidental en períodos de tiempo específicos:

Monto mensual actual: = TOTALMTD (SUM (West_Sales[SalesAmount]), Fecha y hora[DateKey])

Subtotal trimestral: = TOTALQTD (SUM (WestSales[SalesAmount]), Fecha y hora[DateKey])

Importe corriente anual: = TOTALYTD (SUM (WestSales[SalesAmount]), Fecha y hora[DateKey])

Calcular un valor para un rango de fechas arbitrario

Puede usar las funciones de análisis de tiempo de DAX para obtener un conjunto personalizado de fechas que puede usar como entrada para una función de DAX que realiza cálculos para crear agregados personalizados a lo largo de períodos de tiempo.

DATESINPERIOD (<даты>, <начальная_дата>, <количество_интервалов>, <интервал>) – Devuelve una tabla que contiene una columna de fechas que comienza en fecha_inicio y continúa durante el número_intervalos especificado.

FECHAS ENTRE (<даты>, <начальная_дата>,) – Devuelve una tabla que contiene una columna de fechas que comienza en start_date y continúa hasta end_date.

DATEADD (<даты>, <число_интервалов>, <интервал>) – Devuelve una tabla que contiene una columna de fechas desplazadas hacia adelante o hacia atrás en el tiempo por un número específico de intervalos de las fechas en el contexto actual.

PRIMERA FECHA (<даты>) – Devuelve la primera fecha en el contexto actual para la columna de fecha especificada.

ULTIMA CITA (<даты>) – Devuelve la última fecha en el contexto actual para la columna de fecha especificada.

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

  • Fórmula DAX para calcular las ventas de 15 días antes del 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 obtiene la primera fecha de venta en la región occidental para el contexto actual.

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

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

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

🚫