Encontrar el número de referencia anterior

Un usuario Pregunto ✅

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.

Deja un comentario

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