Страницы: 1
RSS
Возможно ли наименованию столбца прописать префикс, если наименование похоже на 'ABC' (или содержит 'ABC'), Power Query M
 
Уважаемые коллеги, направьте пож-та в нужное русло:

Проблема: заголовки столбцов не только меняются местами, но и регулярно переименовываются в ежеквартальном/ежемесячном цикле. Для квартальных ужасает наличие похожих столбцов с данными неактуальных кварталов

Главная цель – отсеять все, кроме столбца по текущему кварталу (в данном случае текущий квартал 2 - его необходимо сохранить), в таблице заранее создан столбец с номером квартала 2


Имеются след наименования столбцов:
условия работы в 1-м   кв 2020
условия 2 кв 2020
условия работы в 3 м кв 2020
В процессе решения я обратил внимание на функцию сохраняющую/удаляющую столбцы по общему признаку:
Код
УдаленыСтолбцыМатр = Table.RemoveColumns(ЧистыеНаимСтолбцов, List.Select(Table.ColumnNames(ЧистыеНаимСтолбцов), each Text.Contains(_, "матр"))),

... вследствие чего возникла идея поочередно присваивать единый префикса столбцам, наименованиями соответствующими маскам/шаблонам, и последующим сохранением Table.SelectColumns() в таблице только столбцов с этим покритериально расставленным префиксом  
 
Судя по примерам - если в названиях оставить только цифры и "кв" то этого должно быть достаточно. Как сделать в PQ - не знаю.
Изменено: Hugo - 05.08.2020 16:46:49
 
Цитата
Hugo написал:
если в названиях оставить только цифры и "кв"
Да, или унифицировать имеющиеся, думаю о КенПулсе ...
 
Можно как-то так:
Код
let
    Source = Table.FromColumns( {{1},{2},{3}}, {"условия работы в 1-м   кв 2020", "условия 2 кв 2020", "условия работы в 3 м кв 2020"}),
    SelectedColumns = Table.SelectColumns(Source,List.Select(Table.ColumnNames(Source), each Text.Contains(Text.BetweenDelimiters(_, "словия ", " кв"), "2")) )
in
    SelectedColumns
Вот горшок пустой, он предмет простой...
 
Отлично ловит нужный столбец, пытаюсь сформулировать критерий, чтобы строка выбирала этот столбец и все остальные непохожие, т.е. похожие
пытаюсь удалить (которые одновременно содержат {"словия ",  " кв"}, и не содержат "2",  
 
Первоначальный запрос
Цитата
присваивать единый префикс столбцам, наименованиями соответствующими маскам/шаблонам

решен с помощью формулы на M
Код
= Table.TransformColumnNames(ЧистыеНаимСтолбцов, each if Text.Contains(Text.BetweenDelimiters(_, "словия ", " кв"), Text.From(Excel.CurrentWorkbook(){[Name="ВыбранФайл"]}[Content]{0}[Кв])) then "1." & Text.Replace(_,_,_) else _)

Отдельное большое спасибо Hugo и PooHkrd
Изменено: Дмитрий Марков - 06.08.2020 11:34:45
Страницы: 1
Наверх