Forum Discussion

ovetteabejuela's avatar
ovetteabejuela
Icon for Impactful Individual rankImpactful Individual
9 years ago
Solved

PowerQuery Question: Renaming Header

Hi,   I've got a data source that is in Chinese, the headers are in Chinese but I already have the equivalent in English but how do I rename the header in Advanced Mode that   If <header-in-chine...
  • MarcelBeug's avatar
    MarcelBeug
    9 years ago

    MissingField.Error would halt the input process.

     

    I don't know if there is a standard approach.

    My suggestion would be to create 3 queries, like:

    1. ColumnRenames with From and To column Names
    2. GetInput: getting the input and renaming the columns with MissingField.Ignore
    3. CheckInput: select all records from ColumnRenames of which the To name does not exist in GetInput (should be empty).

    You may then include CheckInput in some visual as an alert.

     

    Below some sample code you can copy/paste in an empty pbix file to see how t works.

     

    ColumnRenames:

    let
        Source = #table(type table[From = text, To = text],{{"Chinese 1", "English 1"},{"Chinese 2", "English 2"},{"Chinese 3", "English 3"}})
    in
        Source

     

    GetInput (I just created some data in a table with 2 columns):

    let
        Source = {1..10},
        #"Converted to Table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
        #"Renamed Columns" = Table.RenameColumns(#"Converted to Table",{{"Column1", "Chinese 1"}}),
        #"Added Index" = Table.AddIndexColumn(#"Renamed Columns", "Chinese 2", 0, 1),
        #"Renamed Columns1" = Table.RenameColumns(#"Added Index",Table.ToRows(ColumnRenames), MissingField.Ignore)
    in
        #"Renamed Columns1"

     

    CheckInput (just a oneliner, without let .. in):

    Table.SelectRows(ColumnRenames, each not List.Contains(Table.ColumnNames(GetInput),[To]))