¿Es posible procesar archivos EDI 835 u 837 usando Power Query?

Un usuario Pregunto ✅

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:

arpost_0-1628211771049.png

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):

arpost_1-1628212220876.png

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. 😀

Deja un comentario

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