Busque y reemplace un valor específico en una fila

Un usuario Pregunto ✅

ebeauchamp

Hola a todos,

En Power BI, actualmente estoy usando una tabla con aproximadamente 8 millones de transacciones de una consulta SQL. Para una transacción muy específica, quiero cambiar el nombre de SKU y reemplazarlo con un nombre de SKU diferente. Con Power Query Editor, puedo lograrlo filtrando las transacciones para identificar la fila en cuestión (filtrar por nombre de cliente y la cantidad específica), y luego usar la opción «Reemplazar valores», con la columna SKU seleccionada. Pero luego no puedo volver atrás y eliminar el filtro de la tabla, por lo que este método no funciona.

¿Qué otros métodos están disponibles para encontrar una fila específica y luego reemplazar el valor original solo en esa fila? Con la restricción de que este mismo valor original está presente en miles de otras filas donde debe permanecer como está y no verse afectado por el reemplazo.

Gracias por tu ayuda,
Erik

Rocco_sprmnt21

En respuesta a ebeauchamp

Si está seguro de que solo hay un criterio de coincidencia de registros, puede usar esta línea de código:

= Table.ReplaceMatchingRows(yourTab, {Table.SelectRows(yourTab, each [name]="Client3" and [amount]=610){0},[name="Client3",amount=610,SKU=newValue]})

De lo contrario, en caso de que haya varias filas que coincidan con los criterios, intente esto:

Table.ReplaceMatchingRows(yourTab, List.Zip({Table.ToRecords(Table.SelectRows(yourTab, each [name]="Client3" and [amount]=610)), List.Repeat({[name="Client3",amount=610,SKU=newValue]}, List.Count(Table.ToRecords(Table.SelectRows(yourTab, each [name]="Client3" and [amount]=610))))}))

PD

En caso de filas duplicadas, parece que hay algunos problemas. Pero no investigué más.

Mariusz

Hola @ebeauchamp

¿Puede proporcionar una muestra de datos para que se pueda recrear el escenario?

Atentamente,
Mariusz

Si esta publicación ayuda, entonces por favor considere Aceptándolo como la solución.

No dude en conectarse conmigo.
LinkedIn

ebeauchamp

En respuesta a Mariusz

Este es un ejemplo muy simplificado de una tabla con 30 columnas y ms de filas. Pero básicamente, necesito aplicar una transformación después de la consulta donde puedo encontrar la fila con la cantidad «5787» y reemplazar el SKU «ProductABC», por otro SKU, por ejemplo, «ProductXYZ», solo para esa fila, sin afectar el otras filas. Gracias

Instantánea Cliente SKU Monto
2020-06-09 Cliente1 Producto ABC 100
2020-06-09 Cliente2 Producto ABC 120
2020-06-09 Cliente3 Producto ABC 90
2020-06-08 Cliente1 Producto ABC 130
2020-06-08 Cliente2 Producto ABC 5787
2020-06-08 Cliente3 Producto ABC 100
2020-06-07 Cliente1 Producto ABC 392
2020-06-07 Cliente2 Producto ABC 400
2020-06-07 Cliente3 Producto ABC 110

Rocco_sprmnt21

En respuesta a ebeauchamp

Si está seguro de que solo hay un criterio de coincidencia de registros, puede usar esta línea de código:

= Table.ReplaceMatchingRows(yourTab, {Table.SelectRows(yourTab, each [name]="Client3" and [amount]=610){0},[name="Client3",amount=610,SKU=newValue]})

De lo contrario, en caso de que haya varias filas que coincidan con los criterios, intente esto:

Table.ReplaceMatchingRows(yourTab, List.Zip({Table.ToRecords(Table.SelectRows(yourTab, each [name]="Client3" and [amount]=610)), List.Repeat({[name="Client3",amount=610,SKU=newValue]}, List.Count(Table.ToRecords(Table.SelectRows(yourTab, each [name]="Client3" and [amount]=610))))}))

PD

En caso de filas duplicadas, parece que hay algunos problemas. Pero no investigué más.

Rocco_sprmnt21

En respuesta a Rocco_sprmnt21

Esto debería funcionar en ambos casos:

Table.FromRecords(Table.TransformRows(yourTab, each if ([name]="nome3" and [amount]=5787) then Record.TransformFields(_,{"SKU", (_)=> newValue}) else _))

Rocco_sprmnt21

En respuesta a Rocco_sprmnt21

y otra forma más de establecer un campo en un valor específico:

Table.FromRecords(Table.TransformRows(yourTab, each if ([name]="nome3" and [amount]=5787) then Record.Combine({_,[SKU=newValue]}) else _))

Además, esta solución parece válida tanto en caso de coincidencia única, múltiple o nula

Deja un comentario

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