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

Calcular la edad entre duplicados

Tengo una tabla con datos de tickets donde cada ticket aparece dos veces: uno con la fecha/hora más antigua en que ocurrió un evento y otro con la fecha/hora más reciente en que ocurrió un evento. Se etiquetan en una columna como "Saliente" (el más antiguo) o "Entrante" (el más nuevo).

Quiero agregar una columna que calcule, por cada par de ID de ticket, la marca de tiempo del entrante menos la marca de tiempo del saliente para determinar la cantidad de tiempo entre los dos (cuánto tiempo tardó en completar este ciclo de vida del evento).

Aquí hay un ejemplo del diseño de datos, con la columna AGE deseada entre comillas dobles:

TICKET_ID, MARCA DE TIEMPO, DIRECCIÓN, EDAD

TicketA, 01/02/2023 12:00, entrante, "1.5"

TicketA, 01/01/2023 00:00, Saliente, ""

TicketB, 02/10/2023 13:00, entrante, "2"

TicketB, 02/08/2023 13:00, Saliente, ""

Saliente no requiere el cálculo, solo entrante, para determinar cuánto tiempo tomó completar el evento. Los datos se ordenan para que los tickets coincidentes estén juntos, con Incoming en la parte superior y Saliente debajo.

En Excel podría usar una fórmula como esta, y luego, después de que pueda ignorar las filas salientes, ya que Incoming tendrá el campo AGE que necesito:

=SI(A2=A3, B2-B3, " ")

¿Cómo puedo hacer esto en Power Query?

3 REPLIES 3
Syndicate_Admin
Administrator
Administrator

Encontré una solución a esta última parte usando "Fill Up", y luego eliminé los duplicados ya que ya no eran necesarios.

Syndicate_Admin
Administrator
Administrator

Hi Vicky,

Gracias por su respuesta.

Creo que tienes razón, necesito usar Pivot para obtener una sola fila con ambas marcas de tiempo como las que describiste.

Estoy tratando de hacer eso, pero cuando pivoto, todavía tengo dos filas por ID de ticket. Ahora tengo dos nuevas columnas de cada DIRECCIÓN, Entrante y Saliente, así que creo que estoy en el camino correcto. La pregunta ahora es ¿cómo puedo obtener el valor de la columna Saliente de cada segunda fila para llenar el valor nulo en la fila superior?

Ejemplo de un "par" de un solo billete:

Brenden_0-1682691362354.png

Syndicate_Admin
Administrator
Administrator

Una forma de hacerlo sería cambiar la estructura de datos en power query mediante las funciones dinámicas.

Así que tendrías algo como
Entrada | Hora entrante | Tiempo de salida | (calculada) diferencia horaria.

Si necesita mantener los datos iguales, puede crear una columna calculada como:
Edad =

var outgoingTime = CALCULATE(MAX([Timestamp]), FILTER(ALL([TableName]), [TICKET_ID] = EARLY([TICKET_ID]) && [DIRECTION] = "Outgoing")

return DATEDIFF(outgoingTime, [TIMESTAMP], DAY)

(Tenga en cuenta que esta función devuelve un número entero que representa los días completos entre las dos fechas)

Helpful resources

Announcements
RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

Ask questions in Eventhouse and KQL, Eventstream, and Reflex.

LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.