Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
Syndicate_Admin
Administrator
Administrator

Devolución de varias columnas basadas en variables calculadas: obtención de errores en variables

Fondo:

Mis datos se serializan por ID de evento (número de ticket). Para cada ticket hay una fecha y hora de creación, una fecha/hora en que se reconoció el ticket (en blanco si aún no se ha reconocido) y una fecha/hora en que se resolvió el ticket (en blanco si aún no se ha resuelto).

El objetivo final es crear un gráfico que proporcione una vista diaria de:

  1. Total de horas de TRABAJO de tickets abiertos (por día; nota: las diferentes áreas tienen diferentes horarios en diferentes días de la semana)
  2. Cantidad de boletos abiertos por día (independientemente del estado, estuvieron abiertos durante al menos parte del día)
  3. Cantidad de tickets creados por día
  4. Cantidad de boletos reconocidos por día
  5. Cantidad de tickets resueltos por día
  6. Suma de horas de trabajo abiertas, tickets abiertos, tickets creados, tickets confirmados, tickets resueltos en función de la selección del usuario por período de tiempo (semana, mes, trimestre, etc.)
  7. Promedio diario de horas de TRABAJO abiertas, tickets abiertos, tickets creados, tickets confirmados, tickets resueltos según la selección del usuario del período de tiempo (semana, mes, trimestre, etc.)
  8. Tiempo total para acusar recibo de tickets
  9. Tiempo total para resolver tickets
  10. Promedios de tiempo de confirmación y tiempo de resolución (calculados en función del intervalo de fechas seleccionado por el usuario)

Enfoque actual:

Definitivamente no estoy seguro de si esta es la mejor ruta, pero actualmente estoy tratando de resolver esto de la siguiente manera:

  1. Calcule las horas abiertas en la fecha de inicio (fecha de creación), las horas abiertas en la fecha de finalización (fecha de resolución), la cantidad de días laborables entre la fecha de inicio y la fecha de finalización (a las que se les asignarían horas de día completo en función del área)
    1. Requiere cierta planificación de escenarios para
      1. Fecha de creación = Fecha de confirmación = Fecha de resolución
      2. Fecha de creación = Fecha de confirmación < Fecha de resolución
  • Fecha de creación < fecha de confirmación = Fecha de resolución
  1. Fecha de creación < fecha de confirmación < fecha de resolución
  2. Entradas actualmente abiertas
  1. En un día cualquiera (x) puedo tirar
    1. Fecha de creación = x y todas las horas asociadas
    2. Fecha de resolución = x y todas las horas asociadas
    3. Fecha de creación < x y fecha de resolución > x y todas las horas de día completo asociadas
    4. Recuento de todo lo anterior para determinar las cantidades necesarias

Proceso para ejecutar los puntos 1 y 2 anteriores

  1. Cree una lista de variables para respaldar los cálculos (fecha de creación, hora de creación, hora de finalización del turno para el día del ticket creado, etc. La idea es que extraería el valor de cada fila para que se realicen cálculos para cada boleto)
  2. Utilice variables para calcular previamente los diferentes escenarios una vez
  3. Mezcle y combine variables según el escenario para generar lo siguiente:
    1. Hora de reconocer [hrs]
    2. Tiempo de resolución [horas] (desde el acuse de recibo, el tiempo entre el acuse de recibo y la resolución)
    3. Total de horas abiertas
    4. Fecha de creación Horas
    5. Hora de la fecha de resolución
    6. Horario de día completo

Las columnas calculadas parecían una mejor opción solo porque planeo tener muchas segmentaciones / formas diferentes para que el usuario filtre los datos (ciertos períodos de tiempo, emp para cerrar los tickets, etc.). Luchando con las fórmulas para crear todo, incluido el retorno de 6 nuevas columnas, todo en un paso / sección de código

Error actual:

En este momento está fallando porque asigné una columna a una variable (parece que no tiene contexto de fila, lo cual no entiendo completamente porque estoy sacando una columna de la tabla a la que estoy agregando todo (contexto de fila = eventid)

Código:

Table_Test =
FUERON _tod = HOY()
FUERON _now = AHORA()
FUERON todST = HORA(0,0,0) buscar la hora de inicio para HOY
FUERON todTime = _tod + DATEDIFF(todST,_now,MINUTE)/60
FUERON Full_hrs = 24

FUERON cDía = Date_Time_Tbl[Fecha de creación]
FUERON cTime = Date_Time_Tbl[Tiempo de creación]
FUERON cDíaET = HORA(11,59,59) busque la hora de finalización en función de la fecha de creación (Date_Time_Tbl[Fecha de creación]). Actualización por venir
FUERON aDía = Date_Time_Tbl[Fecha de confirmación]
FUERON aTime = Date_Time_Tbl[Tiempo de confirmación]
FUERON aDíaST = HORA(0,0,0) busque la hora de inicio en función de la fecha de confirmación (Date_Time_Tbl[Fecha de confirmación]). Actualización por venir
FUERON aDayET = HORA(11,59,59) buscar la hora de finalización en función de la fecha de confirmación (Date_Time_Tbl[Ack Date]). Actualización por venir
FUERON rDay = Date_Time_Tbl[Fecha de resolución]
FUERON rTime = Date_Time_Tbl[Tiempo de resolución]
FUERON rDayST = HORA(0,0,0) busque la hora de inicio en función de la fecha de resolución (Date_Time_Tbl[Fecha de resolución]). Actualización por venir

FUERON Create_to_EOD = DATEDIFF(cTime,cDayET,MINUTE)/60 Calcule la diferencia de duración de tiempo desde la hora de creación hasta la hora de finalización en función de la fecha de creación (Date_Time_Tbl[Fecha de creación])
FUERON Create_to_Ack = DATEDIFF(cTiempo,aTiempo,MINUTO)/60 Calcular la diferencia de duración de tiempo desde la hora de creación hasta la hora de confirmación (se utiliza cuando la fecha de creación = fecha de confirmación)
FUERON SOD_to_Ack = DATEDIFF(aDayST,aTime,MINUTE)/60 Calcule la diferencia de duración de tiempo desde el inicio del día en el ticket del día reconocido hasta la hora de reconocimiento, en función de la fecha de reconocimiento (Date_Time_Tbl[Fecha de confirmación])
FUERON Ack_to_EOD = DATEDIFF(aTime,aDayET,MINUTE)/60 Calcule la diferencia de duración de tiempo desde la hora de confirmación hasta el final del día (día de confirmación), en función de la fecha de confirmación (Date_Time_Tbl[Fecha de confirmación])
FUERON Ack_to_Res = DATEDIFF(aTiempo,rTiempo,MINUTO)/60 Calcular la diferencia de duración de tiempo desde la hora de confirmación hasta la hora de resolución (se utiliza cuando la fecha de resolución = fecha de confirmación)
FUERON SOD_to_Res = DATEDIFF(rDayST,rTime,MINUTE)/60 Calcule la diferencia de duración de tiempo desde el inicio del día en el ticket del día resuelto hasta la hora de resolución, en función de la fecha de resolución (Date_Time_Tbl[Fecha de resolución])

FUERON work_tod_c = DATEDIFF(cDía,_tod,DÍA)*Full_hrs DÍAS LABORABLES entre _tod y cDay.. Actualización por venir
FUERON work_c_a = DATEDIFF(cDía, Día, DÍA)*Full_hrs DÍAS LABORABLES entre cDay y aDay.. Actualización por venir
FUERON work_tod_a = DATEDIFF(un día,_tod,DÍA)*Full_hrs DÍAS LABORABLES entre _tod y un día. Actualización por venir
FUERON work_a_r = DATEDIFF(aDía, rDía, DÍA)*Full_hrs DÍAS LABORABLES entre un día y un día. Actualización por venir

FUERON c_eq_tod = DATEDIFF(cTiempo,_now,MINUTO)/60
FUERON c_less_tod = todTime + Create_to_EOD + work_tod_c
FUERON c_less_a = Create_to_EOD + SOD_to_ACK + work_c_a

FUERON Ack_Time = INTERRUPTOR(
VERDADERO(),
Date_Time_Tbl[AckRes] = 0, ESPACIO EN BLANCO(),
cDía = un día, Create_to_Ack,
c_less_a
)

FUERON Res_Time = INTERRUPTOR(Date_Time_Tbl[AckRes],
3, SI(aDía = rDía,
Ack_to_Res,
Ack_Time + rTime + Ack_to_EOD + work_a_r a_less_r
),
ESPACIO EN BLANCO()
)

FUERON rDay_Tot = INTERRUPTOR(Date_Time_Tbl[AckRes],
3, SI(cDía = un Día & & un Día = rDía,
0,
SOD_to_Res
),
ESPACIO EN BLANCO()
)

FUERON Tot_Open = INTERRUPTOR(Date_Time_Tbl[AckRes],
0, SI(cDía = _tod,
c_eq_tod,
c_less_tod
),
2, SI(aDía = _tod,
_now - aTime + Ack_Time, a_eq_tod
Ack_Time + todTime + Ack_to_EOD + work_tod_a a_less_tod
),
3, Ack_Time + Res_Time
)

FUERON cDay_tot = INTERRUPTOR(Date_Time_Tbl[AckRes],
0, SI(cDía = _tod,
c_eq_tod,
Create_to_EOD
),
2, SI(cDía = un Día && un Día = _tod,
Tot_Open, a_eq_tod
Create_to_EOD
),
3, SI(cDía = un Día & & un Día = rDía,
Tot_Open,
Create_to_EOD
)
)

DEVOLUCIÓN como columnas

ADDCOLUMNS(Date_Time_Tbl,
"Duración abierta hoy [hrs]", todTime,
"Es hora de reconocer", Ack_Time,
"Es hora de resolver", Res_Time,
"Tiempo total de apertura [horas]", Tot_Open,
"Tiempo total del día de la creación", cDay_Tot,
"Tiempo total del día de resolución", rDay_Tot
)
Source Data.PNG
Relationships.PNG
2 REPLIES 2
Syndicate_Admin
Administrator
Administrator

Hola @afmaher

Dado que el código es demasiado complejo, es posible que esto no sea propicio para comprobar si hay errores.

Divida los cálculos en partes más pequeñas y comprobables.

Esto ayuda a aislar el problema y garantizar que cada parte del cálculo funcione según lo esperado antes de combinarlas en expresiones más complejas.

Puede compartir su archivo PBIX, lo que ayudará a resolver su problema y tenga cuidado de eliminar datos confidenciales.

Saludos

Nono Chen

Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

¡Gracias por su respuesta!

He intentado reducir el código para solucionar problemas. El primer problema es mostrar lo que mencioné en la publicación, donde no parece gustar que intenté asignar una columna a una variable. Sin embargo, me pregunto si está teniendo problemas porque creo que técnicamente el contexto de fila no se agrega hasta la declaración return.

1.png

También he intentado agregar diferentes opciones para las fórmulas (especialmente la opción allselected, que probablemente necesite debido a mi deseo de poder filtrar las imágenes. Sin embargo, el error parece ser el problema opuesto.

Picture2.png

Picture3.png

Siento que me estoy perdiendo algo fácil aquí, pero estoy atascado en cómo seguir adelante. Estos son los vínculos a Power BI, así como el archivo de datos consolidados:

Archivo de Power BI: https://drive.google.com/file/d/14__5UEJl3R2WLdCAZMlgZ5aG9wVtAa5u/view?usp=sharing

Fichero de datos: https://docs.google.com/spreadsheets/d/1ZNZFTkAzP8ngsmQCWPJyNbhmc9ThI4mD/edit?usp=sharing&ouid=10719...

¡¡Gracias!!

Helpful resources

Announcements
LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.