MyTetra Share
Делитесь знаниями!
Переименовать столбцы по словарю элементов
Время создания: 17.03.2022 17:21
Текстовые метки: Power Query, ColumnNames, renameColumn
Раздел: !Закладки - MSO - Excel - Power Query
Запись: xintrea/mytetra_db_adgaver_new/master/base/16475268629mv10meje3/text.html на raw.githubusercontent.com

 

let

    Источник = main_Data1,

    //список имен столбцов таблицы

    List_NamesBuffered = List.Buffer( Table.ColumnNames( Источник ) ),

    //список новых имен столбцов таблицы

    List_NewNames = List_Cln_Name_New( Источник ),

    //комбинируем списки Количество элементов должно совпадать

    List_CombineColumnNames = List.Zip({List_NamesBuffered, List_NewNames}),

    //переименовываем столбцы

    Result = Table.RenameColumns( Источник, List_CombineColumnNames )

in

   Result

 

 

//List_Cln_Name_New

//ищет в таблице-словаре имена по элементам столбцов

let 

    Источник = (t_Table as table) =>

    let

   

        Источник = t_Table,

        //----------------------------------------------------------------------------------------

        //список имен столбцов таблицы

        List_NamesBuffered = List.Buffer( Table.ColumnNames( Источник ) ),

        //заполниь все пустоты во всех столбцах

        #"Заполнено вверх" = Table.FillUp(Источник,List_NamesBuffered),

        //Заменить NULL

        #"Замененное значение" = Table.ReplaceValue(#"Заполнено вверх",null,"-",Replacer.ReplaceValue,List_NamesBuffered),

        //Сформировать заготовку для словаря

        #"Отменено свертывание только для выбранных столбцов" = Table.Unpivot(#"Замененное значение", List_NamesBuffered, "Key1", "Item"),

        //Индекс записй для последующей сортировки

        #"Добавлен индекс" = Table.AddIndexColumn(#"Отменено свертывание только для выбранных столбцов", "Индекс", 0, 1, Int64.Type),

        //Сносим все дубли

        #"Удаленные дубликаты" = Table.Distinct(#"Добавлен индекс", {"Key1"}),

        //----------------------------------------------------------------------------------------

   

        //----------------------------------------------------------------------------------------

        //добавляем таблицу-словарь (Имена  столбцов-элементы)

        #"Объединенные запросы" = Table.NestedJoin(#"Удаленные дубликаты", {"Item"}, t_Cri_Item, {"Item"}, "t_Cri_Item", JoinKind.LeftOuter),

        #"Развернутый элемент t_Cri_Item" = Table.ExpandTableColumn(#"Объединенные запросы", "t_Cri_Item", {"Nb", "Key"}, {"Nb", "Key"}),

        //восстанавливаем изначальную сортировку

        #"Сортированные строки" = Table.Sort(#"Развернутый элемент t_Cri_Item",{{"Индекс", Order.Ascending}}),

        //если номер пустой, то оставляем изначальное имя столбца, если нет, то формируем новое (Номер-Имя)

        #"Условный столбец добавлен" = Table.AddColumn(#"Сортированные строки", "Пользовательский", each if [Nb] = null then [Key1] else [Nb]&"-"&[Key]),

        //Удаляем все лишние столбцы

        #"Другие удаленные столбцы" = Table.SelectColumns(#"Условный столбец добавлен",{"Пользовательский"}),

        // Формируем список

        Пользовательский = #"Другие удаленные столбцы"[Пользовательский]

    in

        Пользовательский

in

    Источник

 

Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования