cmalopez
Tengo una columna con varias filas de comentarios. Cada fila de esta columna contiene varias líneas de texto con una estructura con registros de productos como este:
2018-11-21 12:22:15 – Producto x (Comentario)
Aquí puede aparecer cualquier comentario.
2018-11-20 13:49:41 – Producto x (Comentario)
Aquí nuevamente puede aparecer cualquier comentario.
2018-11-17 16:42:41 – Producto y (Comentario)
Aquí nuevamente puede aparecer cualquier comentario.
2018-11-16 11:29:11 – Producto a (Comentario)
Aquí nuevamente puede aparecer cualquier comentario.
Entonces, esta columna tiene varias líneas de comentarios, pero siempre hay un encabezado con una fecha y un nombre de producto. No hay límite en la cantidad de registros de productos que pueden aparecer y también pueden aparecer productos repetidos (con diferentes fechas y horas). Los productos se pueden relacionar con dos categorías diferentes, Categoría 1 (tengo una columna llamada Categoría 1 con todos los valores de productos posibles para esta categoría) y Categoría 2 (tengo otra columna llamada Categoría 2 con todos los valores de productos posibles para esta categoría).
Los últimos productos de categoría, por tiempo récord, siempre son de categoría 2, pero algunas veces pueden ser solo registros de categoría 1.
Lo que necesito es extraer todos los registros de productos (eliminando otros comentarios), verificar el momento en que los registros de productos cambian de Categoría 1 a Categoría 2 (puede ocurrir solo una vez) y crear dos columnas, una con este último registro de producto para Categoría 1 y otra con registro de producto para la Categoría 2 (solo registros, sin comentarios). Quiero usar los datos de esta columna para medir el tiempo transcurrido entre el cambio de producto de la Categoría 1 a la Categoría 2.
Espero haber sido claro con mis explicaciones y muchas gracias por vuestra ayuda.
v-frfei-msft
Hola @cmalopez,
1. Divida la columna como se muestra en la imagen a continuación.
2. Divida la Columna 1.2 en función de «C», luego podemos obtener el resultado como se muestra a continuación.
Código M para su referencia.
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("dcrNCkBAFAbQV/maFWXKd42/u/UC9pOFsESJ4u1tZ4qzPt4bydlY0gpBURFlCYv+2OdrOnEjQbev67KdqRmyoOdgoa5Vx7h/btZgpU7i/fztCqRKqwz3GO7hBQ==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Column1 = _t]), #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type text}}), #"Split Column by Delimiter" = Table.SplitColumn(#"Changed Type", "Column1", Splitter.SplitTextByEachDelimiter({"-"}, QuoteStyle.Csv, true), {"Column1.1", "Column1.2"}), #"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Column1.1", type datetime}, {"Column1.2", type text}}), #"Split Column by Delimiter1" = Table.SplitColumn(#"Changed Type1", "Column1.2", Splitter.SplitTextByEachDelimiter({"("}, QuoteStyle.Csv, false), {"Column1.2.1", "Column1.2.2"}), #"Changed Type2" = Table.TransformColumnTypes(#"Split Column by Delimiter1",{{"Column1.2.1", type text}, {"Column1.2.2", type text}}), #"Removed Columns" = Table.RemoveColumns(#"Changed Type2",{"Column1.2.2"}) in #"Removed Columns"
cmalopez
En respuesta a v-frfei-msft
Muchas gracias, pero esto no es lo que necesito. Voy a pegar un mejor ejemplo. En esta tabla, en la columna Notas de trabajo, puede ver que tenemos varias líneas con diferentes registros de soporte. Tenemos dos niveles de soporte diferentes, el Nivel 1 y el Nivel 2. Necesito medir los tiempos transcurridos cada vez que hay una tarea del Nivel 1 al Nivel 2 (Necesito saber el tiempo de la tarea). Las personas de nivel 2 son de la casa Stark xD, así que puedes ver lo que debería aparecer en las columnas Último registro de nivel 1, Registro de nivel 2 y Tiempo transcurrido. En las dos primeras filas, todavía no hay asignado el Nivel 2 (no hay registro de Stark) pero en la última fila hay un registro de Sansa, por lo que son los valores que deberían aparecer. Para verificar si una persona es de soporte de Nivel 1 o Nivel 2, tengo dos tablas tLvl1 y tLvl2. Por lo tanto, debería buscar en la columna Notas de trabajo todos los registros de soporte y encontrar el momento en el que hay una escalada entre el Nivel 1 y el Nivel 2.
Muchas gracias.
Notas de trabajo Última bitácora de nivel 1 Bitácora de nivel 2 Tiempo de asignación
2019-04-17 17:19:50 – Varys (Notas de trabajo) Estimado equipo de soporte de Global Level 2, ¿Podría por favor ayudar? Atentamente, 2019-04-17 17:03:47 – Jaime Lannister (Notas de trabajo) Estimado equipo de soporte local de nivel 1: ¿Podría por favor ayudar? Atentamente, 2019-04-17 17:02:14 – Jaime Lannister (Notas de trabajo) |
2019-04-17 17:19:50 – Varía | aún no asignado | |
2019-04-17 16:33:51 – Robert Baratheon (notas de trabajo) Estimado equipo de soporte de Global Level 2, ¿Podría por favor ayudar? Atentamente, 2019-04-17 16:24:10 – Theon Greyjoy (notas de trabajo) 2019-04-17 16:22:52 – Jaime Lannister (Notas de trabajo) KA usado: No se encontró KBA Solución de problemas: Grupo de resolución sugerido: equipo de soporte local de nivel 1 Próxima acción: Escalamiento del ticket. 2019-04-17 16:02:48 – Viserys Targaryen (Notas de trabajo) |
2019-04-17 16:33:51 -Robert Baratheon | aún no asignado | |
2019-04-16 16:07:34 – Sansa Stark (notas de trabajo) Problemas con el sistema POS. 2019-04-13 11:48:07 – Tyrion Lannister (notas de trabajo) El precio del artículo es incorrecto Atentamente, 2019-04-13 11:32:32 -Khal Drogo (notas de trabajo) 2019-04-13 11:31:42 – Melisandre (notas de trabajo) Solución de problemas: Grupo de resolución sugerido: equipo de soporte local de nivel 1 Próxima acción: Escalamiento |
2019-04-13 11:48:07 – Tyrion Lannister | 2019-04-16 16:07:34 – Sansa Stark | Tiempo transcurrido entre el registro de Sansa y el registro de Tyrion |
cmalopez
Hola de nuevo.
Si es posible, preferiría usar una solución de consulta de energía.
Gracias de nuevo.