Forum Discussion

hnguyen76's avatar
hnguyen76
Resolver II
6 years ago
Solved

Power Query Bulk Rename Basado en la matriz

¡Hola a todos!

Tengo una tabla simple que tiene estos nombres de columna:

TB_BalanceDiferenciaErpGmYear_QuarterProporcionadoUnprovidedL1_Type
10010SYS1GM12020-Q1100Tipo1

Voy a tener algunos archivos de diferentes fuentes que tienen diferentes nombres de columna y me gustaría hacer una búsqueda de texto y reemplazar usando una matriz. Creo que la idea que quiero es enumerar todos los nombres de columna, encontrar cualquiera de los nombres de columna que coincida con el lado izquierdo de la matriz y luego reemplazarlo con el lado derecho de la matriz.

Por lo tanto, en este ejemplo "TB_Balance" se reemplazaría por sólo "Balance", "Proporcionado" a "Provision", etc. Creo que estoy bastante cerca, pero no puedo obtener los resultados correctos. THis es mi guión actual:

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjQwUNIBkkAiODLYEEi5+4JIIwMjA91AQ5gcCIdUFqQaKsXGAgA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [TB_Balance = _t, Difference = _t, ERP = _t, GM = _t, Year_Quarter = _t, Provided = _t, Unprovided = _t, L1_Type = _t]),

    // BEGIN CUSTOM SUBSTITUTION ARRAY 
    ReplaceArr = 
        [
            TB_Balance = "Balance",
            Provided = "Provision",
            Unprovided = "Unprovision",
            L1_Type = "Type",
            L2_Type = "Type",
            L3_Type = "Type",
            Diff = "Difference"
        ],

    FindAndReplace = Table.TransformColumns(Table.ColumnNames(Source), Record.FieldOrDefault(ReplaceArr, _, _)),
    
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"TB_Balance", Int64.Type}, {"Difference", Int64.Type}, {"ERP", type text}, {"GM", type text}, {"Year_Quarter", type text}, {"Provided", Int64.Type}, {"Unprovided", Int64.Type}, {"L1_Type", type text}})
in
    #"Changed Type"

Cualquier ayuda sería muy apreciada! ¡Gracias!