Restar una celda de una celda anterior en una sola columna

Un usuario Pregunto ✅

ebhend

Hola a todos,

Tengo una pregunta sobre cómo hacer algo en Power BI que puedo hacer trivialmente en Excel, pero no puedo hacerlo en Power BI. Tengo algunos datos de series de tiempo de sensores que darán un nuevo punto de datos cada 10 minutos del que he creado una serie de gráficos. Uno de estos puntos de datos es un recuento totalizado de objetos que pasan por un sensor. este valor totalizado se pone a cero una vez al día a las 11:30 pm. Estos datos tendrán el siguiente aspecto:

Fecha y hora Objetos totalizados
1/6/2016 23:00 384634
1/6/2016 23:10 384665
1/6/2016 23:20 384688
1/6/2016 23:30 17
1/6/2016 23:40 34
1/6/2016 23:50 66

Estoy buscando determinar la cantidad de objetos que pasaron el sensor durante un período de 10 minutos. En Excel, solo escribo una fórmula recusiva restando una celda de la celda anterior en la misma columna, excepto por el tiempo de reinicio, que es solo el número totalizado. ¿Cómo haría esto en DAX? Sé que tiene algo que ver con las funciones Calcular o Filtrar, pero no puedo que funcionen exactamente como quiero. Si ayuda, también tengo columnas que separan la fecha y la hora para que sean solo la fecha o solo la hora. Cualquier ayuda sería apreciada.

@ebhend

En este escenario, puede obtener la parte de Horas y Minutos de la columna de fecha / hora, luego usar la función LOOKUPVALUE () para obtener el total de objetos de la fila anterior y calcular la variación. Consulte los siguientes pasos:

  1. Agregue una columna de índice en el Editor de consultas.
    6661.jpg
  2. Cree dos columnas para Hora y Minuto con las fórmulas a continuación:
    Hour = HOUR('Sensor Data'[Date/Time])
    
    Minute = MINUTE('Sensor Data'[Date/Time])
    
  3. Cree una columna para PreObjs con la siguiente fórmula a continuación:
    PreObjs = 
    IF (
        'Sensor Data'[Hour] = 23
            && 'Sensor Data'[Minute] = 30,
        0,
        LOOKUPVALUE (
            'Sensor Data'[Totalized Objects],
            'Sensor Data'[Index], 'Sensor Data'[Index] - 1
        )
    )
    
  4. Cree una columna para obtener la variación:
    PeriodObjs="Sensor Data"[Totalized Objects] - 'Sensor Data'[PreObjs]

6662.png

Saludos,

@ebhend

En este escenario, puede obtener la parte de Horas y Minutos de la columna de fecha / hora, luego usar la función LOOKUPVALUE () para obtener el total de objetos de la fila anterior y calcular la variación. Consulte los siguientes pasos:

  1. Agregue una columna de índice en el Editor de consultas.
    6661.jpg
  2. Cree dos columnas para Hora y Minuto con las fórmulas a continuación:
    Hour = HOUR('Sensor Data'[Date/Time])
    
    Minute = MINUTE('Sensor Data'[Date/Time])
    
  3. Cree una columna para PreObjs con la siguiente fórmula a continuación:
    PreObjs = 
    IF (
        'Sensor Data'[Hour] = 23
            && 'Sensor Data'[Minute] = 30,
        0,
        LOOKUPVALUE (
            'Sensor Data'[Totalized Objects],
            'Sensor Data'[Index], 'Sensor Data'[Index] - 1
        )
    )
    
  4. Cree una columna para obtener la variación:
    PeriodObjs="Sensor Data"[Totalized Objects] - 'Sensor Data'[PreObjs]

6662.png

Saludos,

ahsankhan

En respuesta a v-sihou-msft

Funciona perfecto para mi problema … Gracias por la pista.

Chrisu

La publicación de PowerPivotPro sobre este tema probablemente sería útil. Hay un ejemplo en la publicación que usa una columna de índice con LOOKUPVALUE para obtener lo que desea, y hay varios ejemplos en los comentarios que usan EARLIER.

Para LOOKUPVALUE, agregaría una columna de índice y usaría el índice de los objetos actuales para buscar objetos para index-1. Para el reinicio de las 11:30, puede agregar un IF para probar si la hora es 11:30 y devolver 0 si es verdadero, la diferencia en los objetos si es falso.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *