Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more.
Get startedGrow your Fabric skills and prepare for the DP-600 certification exam by completing the latest Microsoft Fabric challenge.
Hola Comunidad,
Estoy leyendo algunos datos de una tabla en Big Query y una de las columnas es una columna anidada que se extrae en PQ en formato JSON como este:
{"v":[{"v":{"f":[{"v":"MANUFACTURER"},{"v":"DUMMY GROUP"}]}},{"v":{"f":[{"v":"OPRINDELSESLAND"},{"v":"EUROPA"}]}},{"v":{"f":[{"v":"LØSVÆGT"},{"v":"FALSE"}]}},{"v":{"f":[{"v":"INSERTID"},{"v":"D8A2CEE5-7278-40F0-AFCD-21A9B3D0E12B"}]}}]}
Estos son pares clave/valor y estoy tratando de extraerlos en dos columnas separadas.
Puedo analizar el col como JSON y luego expandir record -> unpack list un montón de veces y termino con una larga lista de claves y valores, pero no puedo encontrar la manera de obtenerlo como columnas separadas.
Aquí está mi editor avanzado:
let
Source = GoogleBigQuery.Database(),
database = Source{[Name=#"project"]}[Data],
PBI_Schema = database{[Name="anonName",Kind="Schema"]}[Data],
DimProduct_Table1 = PBI_Schema{[Name="anonName2",Kind="Table"]}[Data],
#"Removed Other Columns" = Table.SelectColumns(DimProduct_Table1,{"Id", "Metadata"}),
#"Parsed JSON" = Table.TransformColumns(#"Removed Other Columns",{{"Metadata", Json.Document}}),
#"Expanded Metadata" = Table.ExpandRecordColumn(#"Parsed JSON", "Metadata", {"v"}, {"v"}),
#"Expanded v" = Table.ExpandListColumn(#"Expanded Metadata", "v"),
#"Expanded v1" = Table.ExpandRecordColumn(#"Expanded v", "v", {"v"}, {"v.1"}),
#"Expanded v.1" = Table.ExpandRecordColumn(#"Expanded v1", "v.1", {"f"}, {"f"}),
#"Expanded f" = Table.ExpandListColumn(#"Expanded v.1", "f"),
#"Expanded f1" = Table.ExpandRecordColumn(#"Expanded f", "f", {"v"}, {"v"}),
#"Filtered Rows" = Table.SelectRows(#"Expanded f1", each ([v] <> null))
in
#"Filtered Rows"
Una vez que llegue al último nivel de la lista, que tiene la clave como un registro y el valor como otro, puede crear 2 nuevas columnas, una para tomar cada registro y luego expandir los registros.
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45Wqo5RKotRsoqG0kAqDYkbo+Tr6Bfq5ugcEhrkGhSjVKsDl3AJ9fWNVHAP8g8NAIrH1sKlMIzwDwjy9HNx9Ql2DfZx9HNBMcU1NMg/wJGAAT6HZwSHHW5zD0HR6uYINJGATk+/YNegEE9UO10sHI2cXV1Ndc2NzC10TQzcDHQd3ZxddI0MHS2djF0MXA2NnCDmxtYqxcYCAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type text}}),
#"Parsed JSON" = Table.TransformColumns(#"Changed Type",{},Json.Document),
#"Expanded Column1" = Table.ExpandRecordColumn(#"Parsed JSON", "Column1", {"v"}, {"Column1.v"}),
#"Expanded Column1.v" = Table.ExpandListColumn(#"Expanded Column1", "Column1.v"),
#"Expanded Column1.v1" = Table.ExpandRecordColumn(#"Expanded Column1.v", "Column1.v", {"v"}, {"Column1.v.v"}),
#"Expanded Column1.v.v" = Table.ExpandRecordColumn(#"Expanded Column1.v1", "Column1.v.v", {"f"}, {"Column1.v.v.f"}),
#"Added Custom" = Table.AddColumn(#"Expanded Column1.v.v", "key", each [Column1.v.v.f]{0}),
#"Added Custom1" = Table.AddColumn(#"Added Custom", "Value", each [Column1.v.v.f]{1}),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom1",{"Column1.v.v.f"}),
#"Expanded key" = Table.ExpandRecordColumn(#"Removed Columns", "key", {"v"}, {"key"}),
#"Expanded Value" = Table.ExpandRecordColumn(#"Expanded key", "Value", {"v"}, {"value"})
in
#"Expanded Value"
Gracias por su respuesta.
De hecho, terminé resolviéndolo usando la función BQ TO_JSON_STRING() al leer el col de db. Esto funcionó como un encanto, pero también probaré su solución, aunque solo sea para aprender cómo en otro momento.