Back2Básicos
Bien, tengo una tabla con registros que tienen un número de cliente. Cada número de cliente puede tener varias filas de pedidos. De alguna manera, un montón de pedidos recientemente tuvieron sus números de referencia sobreescritos a ‘1’. Afortunadamente, tenemos una tabla de historial, por lo que puedo ver los números de pedido anteriores …
Lo que espero hacer es encontrar a todos los clientes que tienen una referencia de pedido de ‘1’ y luego actualizarlos a la referencia de pedido anterior. En el historial de pedidos tengo algo como esto:
Lo que necesito, para importar los datos para corregirlos, es una tabla que tenga la referencia del historial del cliente para actualizar (por ejemplo, AB1001 / 2) en una columna, la referencia del pedido para ese registro en la columna 2 y la referencia del pedido anterior en columna 3. ¿Hay alguna forma de hacer esto directamente en PBI o necesito exportar y jugar en Excel?
Cliente | Pedido |
AB1001/1 | 15000 |
AB1001 / 2 | 1 |
BC1001 / 1 | 14000 |
BC1001/2 |
1 |
Back2Básicos
En respuesta a mfelix
Gracias por la respuesta @MFelix pero estaba un poco por encima de mi cabeza.
Logré solucionar esto duplicando la tabla un par de veces y haciendo algunos cambios, explicaré lo que hice:
- Dupliqué la tabla y filtré para tener solo los registros donde el número de orden era 1. Esto me dio una lista de todos los que necesitaban ser corregidos. llamaremos a esta tabla A.
- Volví a duplicar la tabla original y luego eliminé los registros donde el número de pedido era 1. Ahora tenía dos tablas, una con las filas que necesitaban corregirse y otra con el número de pedido anterior. Llamaremos a esta tabla B.
- Luego, volví a la tabla A y dupliqué la columna Cliente. Luego dividí este duplicado por «https://community.powerbi.com/» dándome, por ejemplo. AB1001 en una columna y 2 en otra.
- Luego agregué una nueva columna para proporcionar la referencia anterior usando textcombine – textcombine([customer1], ([customer2] -1), /). Llamaremos a este ‘cliente anterior’
- Luego cerré el editor y creé una relación entre el cliente anterior de la tabla A y el cliente de la tabla B.
Esto me dio lo que quería. Podría haber una forma más limpia de hacerlo, pero tuvo el efecto deseado.
mfelix
Hola @Back2Basics,
Sin saber cómo tiene los datos históricos conectados a sus datos (lo que se considera la ID para una línea específica), puede fusionar ambas tablas por la ID específica.
Suponiendo que en los datos que ha enviado, el cliente AB1001/2 es el valor único y que las tablas son las siguientes:
Actual
Cliente | Pedido |
AB1001/1 | 15000 |
AB1001 / 2 | 1 |
BC1001/1 | 14000 |
BC1001/2 |
1 |
Histórico
Cliente | Pedido |
AB1001/1 | 15000 |
AB1001/2 | 18000 |
BC1001/1 | 14000 |
BC1001/2 |
10000 |
Ahora necesitas hacer lo siguiente:
- Haga una combinación de Por cliente de ambas tablas
- El enlace entre ambas tablas es el Cliente pero pueden ser más columnas
- Luego expanda el orden de las columnas con los valores que necesita.
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WcnQyNDAw1DdU0lEyNDUwMFCK1YELGoEEwQJOzghVJjBVUEGoqlgA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Customer = _t, Order = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Customer", type text}, {"Order", Int64.Type}}),
#"Merged Queries" = Table.NestedJoin(#"Changed Type", {"Customer"}, Historical, {"Customer"}, "Historical", JoinKind.LeftOuter),
#"Expanded Historical" = Table.ExpandTableColumn(#"Merged Queries", "Historical", {"Order"}, {"Historical.Order"})
in
#"Expanded Historical"
Tenga en cuenta que, dependiendo de sus datos, la forma en que realiza la combinación (izquierda, derecha, borrosa) puede necesitar ajustes.
Compruebe el adjunto de PBIX.
Back2Básicos
En respuesta a mfelix
Gracias por la respuesta @MFelix pero estaba un poco por encima de mi cabeza.
Logré solucionar esto duplicando la tabla un par de veces y haciendo algunos cambios, explicaré lo que hice:
- Dupliqué la tabla y la filtré para tener solo los registros donde el número de orden era 1. Esto me dio una lista de todos los que necesitaban ser corregidos. llamaremos a esta tabla A.
- Volví a duplicar la tabla original y luego eliminé los registros donde el número de pedido era 1. Ahora tenía dos tablas, una con las filas que necesitaban corregirse y otra con el número de pedido anterior. Llamaremos a esta tabla B.
- Luego, volví a la tabla A y dupliqué la columna Cliente. Luego dividí este duplicado por «https://community.powerbi.com/» dándome, por ejemplo. AB1001 en una columna y 2 en otra.
- Luego agregué una nueva columna para proporcionar la referencia anterior usando textcombine – textcombine([customer1], ([customer2] -1), /). Llamaremos a esto ‘cliente anterior’
- Luego cerré el editor y creé una relación entre el cliente anterior de la tabla A y el cliente de la tabla B.
Esto me dio lo que quería. Podría haber una forma más limpia de hacerlo, pero tuvo el efecto deseado.
mfelix
En respuesta a Back2Básicos
Hola @Back2Basics,
Me alegro de que pudieras resolverlo.