Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
Hola
Hay un problema similar que encontré, pero hay filas fijas donde intercambiar dos valores. En mi caso, tengo que definir dinámicamente en qué filas intercambiar los valores.
Tengo una tabla Relaciones con 3 columnas donde necesito comprobar 2 columnas(item_id y item_to_id) e intercambiarlas si es necesario.
Tabla de relaciones
Id | item_id | item_to_id | ||
1 | 10 | 51 | ||
2 | 20 | 61 | ||
3 | 51 | 20 | ||
4 | 30 | 20 |
Una decisión que los valores para intercambiar dependen de los valores de las otras dos tablas (Task y SubTask)
Tabla de tareas
Id | Descripción | |
10 | Tarea A | |
20 | Tarea B | |
30 | Tarea C |
Tabla de subtareas
Id | Descripción | |
51 | Subtarea X | |
61 | Subtarea Y |
Me gustaría que la tabla Relation se ordenara para que item_id columna contenga el identificador de la tabla Task y item_to_id columna contiene el identificador de la tabla Subtarea o Tarea. La tabla resultante debe ser similar a continuación
Id | item_id | item_to_id | item_id_swapped | item_to_id_swapped | ||||
1 | 10 | 51 | 10 | 51 | ||||
2 | 20 | 61 | 20 | 61 | ||||
3 | 51 | 20 | 20 | 51 | ||||
4 | 30 | 20 | 30 | 20 |
Espero con ansias cualquier consejo.
Solved! Go to Solution.
Gracias @MFelix por su respuesta. Sí, entendiste mi problema correctamente.
Hay un resultado inesperado en su captura de pantalla : 1a, 2a y 4a filas no se deben intercambiar.
Mientras tanto, encontré una manera más fácil de resolver eso.
Agregué Columna personalizada con la siguiente fórmula:
por item_id_swapped
= if ( List.Contains (Task[id], [item_id] ) ) then [item_id] else [item_to_id]
y por item_to_id_swapped
= if ( List.Contains (Task[id], [item_id] ) ) then [item_to_id] else [item_id]
El resultado se ve como se esperaba
No @Hennadii ,
No estoy seguro de si esto es lo que necesita, pero asumo que para cada línea que el item_id no está presente en la tarea que desea realizar el cambio.
Lo que hice en el editor de consultas fue lo siguiente:
if [Tasks.id] = null then[item_id]else [Tasks.id]
= Table.ReplaceValue(#"Added Custom",each [Tasks.id],each if [Tasks.id] = null then [item_to_id] else [Tasks.id] ,Replacer.ReplaceValue,{"Tasks.id"})
Resultado final a continuación y en adjuntar archivo PBIX (versión de diciembre).
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSUTI0ABKmhkqxOtFKRkCmEYhvBuEbQ6TAgiC+CZBpbADlxwIA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [id = _t, item_id = _t, item_to_id = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"id", Int64.Type}, {"item_id", Int64.Type}, {"item_to_id", Int64.Type}}),
#"Merged Queries" = Table.NestedJoin(#"Changed Type", {"item_id"}, Tasks, {"id"}, "Tasks", JoinKind.FullOuter),
#"Expanded Tasks" = Table.ExpandTableColumn(#"Merged Queries", "Tasks", {"id"}, {"Tasks.id"}),
#"Added Custom" = Table.AddColumn(#"Expanded Tasks", "item_to_id_swapped", each if [Tasks.id] = null then[item_id]else [Tasks.id] , Int64.Type),
#"Replaced Value" = Table.ReplaceValue(#"Added Custom",each [Tasks.id],each if [Tasks.id] = null then [item_to_id] else [Tasks.id] ,Replacer.ReplaceValue,{"Tasks.id"}),
#"Renamed Columns" = Table.RenameColumns(#"Replaced Value",{{"Tasks.id", "item_id_swapped"}})
in
#"Renamed Columns"
Regards
Miguel Félix
Proud to be a Super User!
Check out my blog: Power BI em PortuguêsGracias @MFelix por su respuesta. Sí, entendiste mi problema correctamente.
Hay un resultado inesperado en su captura de pantalla : 1a, 2a y 4a filas no se deben intercambiar.
Mientras tanto, encontré una manera más fácil de resolver eso.
Agregué Columna personalizada con la siguiente fórmula:
por item_id_swapped
= if ( List.Contains (Task[id], [item_id] ) ) then [item_id] else [item_to_id]
y por item_to_id_swapped
= if ( List.Contains (Task[id], [item_id] ) ) then [item_to_id] else [item_id]
El resultado se ve como se esperaba
No @Hennadii ,
Mi mal cuando escribí las fórmulas mezclé los dos nombres de columna.
Pero me alegro de que estuvieras abble para encontrar una solución. No olvides marcar la respuesta para ayudar a los demás.
Regards
Miguel Félix
Proud to be a Super User!
Check out my blog: Power BI em PortuguêsCovering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
2 | |
1 | |
1 | |
1 | |
1 |