emilypoon1
Hola,
Tengo un archivo mezclado con datos normales y con una columna de datos en formato XML.
¿Cómo puedo convertir la columna de formato XML a formato de texto normal con salto de línea?
Aquí hay un ejemplo.
Formato XML original en 1 columna mezclado con datos normales:
<CustomField>
<Key>Artwork</Key>
<Value>Adhesive Label - Paper MD PACKAGING</Value>
</CustomField>
<CustomField>
<Key>Comments</Key>
<Value>PACKAGED COMPLETE FOR FINISHED GOODS</Value>
</CustomField>
<CustomField>
<Key>Material</Key>
<Value>Lid, Top, body; ABS Weight; Steel</Value>
</CustomField>
Resultado deseado que quiero mostrar en PowerBI:
Atentamente,
Emily
Alba
En respuesta a emilypoon1
@ emilypoon1
¿Qué es lo que está tratando de hacer en última instancia? ¿Ha probado la funcionalidad del analizador XML que tiene Power Query? ¿Quizás sería útil en este caso? Intente lo siguiente. Probablemente no sea la solución más elegante, pero creo que servirá. Es posible que desee convertirlo en una función si tiene varias filas con contenido XML. El último paso muestra el contenido en la misma fila separado por un salto de línea. El paso anterior al último muestra cada elemento del XML en una fila diferente de la tabla. No me quedó claro cuál de las dos opciones te referías
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("xY9LC4JAFIX/ysW1odDSlflKfJJSC3Mx5iWHxkZ0LPz3RUoEFYGb7vLjnMP9skza96q6PBh9J3htU2TlAyC83Rj0cBgDeiuuvD2NVHnib70tYT1OzbLCjl4QfFIggwXEpMEWAhNi3fB0xw2dafWl9HlV+fn3XD2D1zWeRTfDb7SwTDCiIPat1AI72oDthm6yvlMniszk/4IBEdhSwmYI+rSUIeWNDAUvBw30VQI7pMdKaJAIRDbHTsrzGw==", 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}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each Text.SplitAny([Column1],"<>")),
#"Expanded Custom" = Table.ExpandListColumn(#"Added Custom", "Custom"),
#"Filtered Rows" = Table.SelectRows(#"Expanded Custom", each ([Custom] <> "" and [Custom] <> " " and [Custom] <> " ")),
#"Added Custom1" = Table.AddColumn(#"Filtered Rows", "Custom.1", each if Text.Contains([Column1],"<" & [Custom] & ">") then 1 else 0),
#"Filtered Rows1" = Table.SelectRows(#"Added Custom1", each ([Custom.1] = 0)),
#"Removed Columns" = Table.RemoveColumns(#"Filtered Rows1",{"Custom.1"}),
#"Grouped Rows" = Table.Group(#"Removed Columns", {"Column1"}, {{"Custom", each Text.Combine([Custom], Character.FromNumber(10
)), type text}})
in
#"Grouped Rows"
Marque la pregunta resuelta cuando haya terminado y considere dar felicitaciones si las publicaciones son útiles.
Comuníquese conmigo en privado para obtener asistencia con cualquier necesidad de BI a gran escala, tutoría, etc.
Salud
Alba
Hola @ emilypoon1
¿Lo que muestra en una celda o se distribuye en una columna? Si es lo último, ¿está cada línea de lo que muestra en una fila en la tabla? ¿Puede mostrar una imagen de pantalla y copiar la tabla aquí en texto?
Marque la pregunta resuelta cuando haya terminado y considere dar felicitaciones si las publicaciones son útiles.
Comuníquese conmigo en privado para obtener asistencia con cualquier necesidad de BI a gran escala, tutoría, etc.
Salud
emilypoon1
En respuesta a Alba
@Alba
Así es como se ve en Power Query en formato XML para la columna CustomData.
Quiero dividir la misma fila de datos en formato XML en un salto de línea.
¿Alguna idea de cómo hacer esta magia?
Gracias.
Código de texto para XML:
<root><Artwork>Adhesive Label - Paper MD PACKAGING</Artwork><Comments>PACKAGED COMPLETE FOR FINISHED GOODS</Comments><Material>Lid, Top, body; ABS Weight; Steel</Material><Finish>Lid, Top, body; Cool Gray 11C; IDI-OPQ-028 Weight; Chrome; IDI-MPL-001</Finish><PackSpecs>4 PCS PER BROWN CARTON W/LABEL</PackSpecs><DrawingNumber>10750-SFT-SQCAN-ASSY</DrawingNumber><SecondaryLinePrice>1750.7</SecondaryLinePrice><SecondaryUnitPrice>1.7507</SecondaryUnitPrice></root>
Atentamente,
Emily
Alba
En respuesta a emilypoon1
@ emilypoon1
¿Qué es lo que está tratando de hacer en última instancia? ¿Ha probado la funcionalidad del analizador XML que tiene Power Query? ¿Quizás sería útil en este caso? Intente lo siguiente. Probablemente no sea la solución más elegante, pero creo que servirá. Es posible que desee convertirlo en una función si tiene varias filas con contenido XML. El último paso muestra el contenido en la misma fila separado por un salto de línea. El paso anterior al último muestra cada elemento del XML en una fila diferente de la tabla. No me quedó claro cuál de las dos opciones te referías
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("xY9LC4JAFIX/ysW1odDSlflKfJJSC3Mx5iWHxkZ0LPz3RUoEFYGb7vLjnMP9skza96q6PBh9J3htU2TlAyC83Rj0cBgDeiuuvD2NVHnib70tYT1OzbLCjl4QfFIggwXEpMEWAhNi3fB0xw2dafWl9HlV+fn3XD2D1zWeRTfDb7SwTDCiIPat1AI72oDthm6yvlMniszk/4IBEdhSwmYI+rSUIeWNDAUvBw30VQI7pMdKaJAIRDbHTsrzGw==", 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}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each Text.SplitAny([Column1],"<>")),
#"Expanded Custom" = Table.ExpandListColumn(#"Added Custom", "Custom"),
#"Filtered Rows" = Table.SelectRows(#"Expanded Custom", each ([Custom] <> "" and [Custom] <> " " and [Custom] <> " ")),
#"Added Custom1" = Table.AddColumn(#"Filtered Rows", "Custom.1", each if Text.Contains([Column1],"<" & [Custom] & ">") then 1 else 0),
#"Filtered Rows1" = Table.SelectRows(#"Added Custom1", each ([Custom.1] = 0)),
#"Removed Columns" = Table.RemoveColumns(#"Filtered Rows1",{"Custom.1"}),
#"Grouped Rows" = Table.Group(#"Removed Columns", {"Column1"}, {{"Custom", each Text.Combine([Custom], Character.FromNumber(10
)), type text}})
in
#"Grouped Rows"
Marque la pregunta resuelta cuando haya terminado y considere dar felicitaciones si las publicaciones son útiles.
Contácteme de forma privada para obtener asistencia con cualquier necesidad de BI a gran escala, tutoría, etc.
Salud
emilypoon1
En respuesta a Alba
@AlB Muchas gracias por su propuesta de solución.
Lo probé en mi archivo y modifiqué un poco la consulta M y está funcionando bien.
¡Qué tengas un lindo día!
Atentamente,
Emily