arpost
Necesito procesar una gran cantidad de archivos 835 y 837 y me pregunto si Power Query puede hacer el truco.
Aquí hay un ejemplo de BlueCross (se pueden encontrar detalles de muestra en las páginas 12-13) que muestra datos de muestra sin procesar:
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("hZK9jp0wEIVfxdryFFfjPzDpjOEKEsDEsCs2qy1S7XaRIqVI42fPALqbK6WIhQvLM+c7c/DLy8OywmkLqbTJ9ZzQQ1ZKXVyBgNB9wd1SJCVJcnlNEyRIlRWV1sEW5CpTkcmpveKqMITBG+2a3KwjDNlbp8mTBDPq4bEVIcVlEX5qxHFcur4dGhGvYopp7UTwKQ795POkMYso6rgJpSqZJ4PmMXV+xBSgypJUntuEsGFt4YistcaZE9Vie/4mutYPa8eCDI1pjsmvfZywbaDKlYU1Wsl7DPfslND5NMSVVXeQ2wPa51s/H2HZonRVHjbIHIaZJyT+qsJ4qzgbJYk+gpRGXayBtKiMtJwER0F5GiW+Bq5tfvx6e8f4/efvPeSxh3ie6w8EFx8xkqVbjDovTwFd+GQroxnDMEiy5c5ivfNC0pl+qfY2Yj026heECKOgzaU4jvw32K8s2eAxXZFAO9KPK+piv7EXc8czBPYEV9j/o1hbQ9k7XXWnpIrzVZVsZ9+Q/6r87dQ3R1yalxZan0/24fX1Dw==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Sample = _t]),
#"Split Column by Delimiter" = Table.ExpandListColumn(Table.TransformColumns(Source, {{"Sample", Splitter.SplitTextByDelimiter("~", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Sample"),
#"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Sample", type text}})
in
#"Changed Type1"
Por ahora, me gustaría obtenerlo para que la estructura de la columna se vea así, pero en todas las columnas sin requerir que cambie el nombre de las columnas o tenga columnas duplicadas para filas duplicadas (por ejemplo, CAS_1.1, CAS_2.1):
N1.1 | N1.2 | N1.3 | N1.4 | N1.5 |
EDUCACIÓN FÍSICA | XYZ Healthcare Corporation | XX | 987654321 | |
PR | Cruz azul y escudo azul | nulo | nulo | nulo |
Watkinnc
Amigo, Power Query es perfecto para archivos 835/837. ¡¡Ojalá todos escucharan !!
Puede filtrar solo las líneas que comienzan con «N1» usando Table.SelectRows (TableName, each Text.StartsWith ([ColumnName], «N1»))
A partir de ahí, es solo una cuestión de usar las funciones integradas, como SplitByDelimiter usando «*», elegir las columnas para mantener, agregar algunos nuevos nombres de encabezado, ¡todo está bien!
Tiendo a simplificar, pero Power Query es LA HERRAMIENTA PERFECTA para estos archivos.
–Nate
arpost
En respuesta a Watkinnc
@watkinnc, ¡gracias por la respuesta! Eso es lo que pensé también, y tengo la división del delimitador sucediendo, pero lo que no me di cuenta fue que los EDI son en realidad jerárquicos, por lo que ciertas filas pueden tener 3 niveles de profundidad en la jerarquía y ser parte de un bucle, por lo que no hay ‘ ¡Un identificador de registro rápido y fácil! 😢 Me imagino que esto podría tener que implicar algunos escalones a través de las columnas y luego rellenar los rellenos lógicos condicionales.
Microsoft tiene algunos documentos que resumen aspectos de esta estructura: https://docs.microsoft.com/en-us/biztalk/core/edi-message-structure
Espero que alguien de la comunidad haya explorado esto antes y haya tenido algunas ideas brillantes. 😀