Страницы: 1
RSS
Power query добавить столбец с частичным именем соседнего
 
Добрый день!
Есть нетривиальная задача, гугл с яндексом не помогают.
Можно ли в готовый результат запроса добавить столбец который будет содержать первые 2 символа из имени соседнего столбца во всех ячейках?
Ну то есть имеем в таблице по итогу столбец А_1_333, а нужно рядом добавить произвольный столбец с именем и данными первых 3 символов А_1.
Реально ли это сделать в PQ?
Заранее благодарю за помощь!
 
на костылях

Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    #"Пониженные заголовки" = Table.DemoteHeaders(Источник),
    #"Добавлен пользовательский объект" = Table.AddColumn(#"Пониженные заголовки", "Пользовательская", each Text.Start(#"Пониженные заголовки"[Column1]{0},3)),
    #"Повышенные заголовки" = Table.PromoteHeaders(#"Добавлен пользовательский объект", [PromoteAllScalars=true])
in
    #"Повышенные заголовки"
Изменено: mechanix 85 - 22.12.2021 11:09:24
 
Цитата
написал:
1Text.Start(Столбец,3)
Это писать в формулу добавления произвольного столбца? Не сработало..
Изменено: Игорь Иванов - 22.12.2021 11:07:38
 
Ок, это не совсем то, тогда другой вопрос - я добавил столбец с нужной формулой в уже готовую таблицу запроса.
Будут ли слетать добавленные мной столбцы (порядок или данные) при добавлении данных и обновлении запроса?
 
Цитата
Игорь Иванов написал:
Не сработало..

Не сработало где?
Примера то у вас нет. Добавьте файл пример и покажите тот столбец из которого нужно брать первые три символа.
Нужно бежать со всех ног, чтобы только оставаться на месте, а чтобы куда-то попасть, надо бежать как минимум вдвое быстрее!
 
Цитата
Игорь Иванов написал:
Будут ли слетать добавленные мной столбцы (порядок или данные) при добавлении данных и обновлении запроса?
Вы в примере опишите начальные данные и необходимый результат.
Можно создать столбцы с обрезанными наименованиями хоть ко всем столбцам таблицы. Будут появляться новые столбцы - будут добавляться и новые обрезанные наименования (последние 2 шага):
Код
let
  table = [
    generate = List.Buffer (
      List.Generate (
        () =>  [
          data     = List.Random ( 100 ), 
          clmnName = "A_" & Text.From ( n + 1 ) & "_" & Text.From ( Number.Round ( 100 * Number.Random() ) ), 
          n        = 0
        ], 
        each [n] < 9, 
        each [
          data     = List.Random ( 100 ), 
          clmnName = "A_" & Text.From ( n + 1 ) & "_" & Text.From ( Number.Round ( 99 * Number.Random() + 1 ) ), 
          n        = [n] + 1
        ], 
        each [[clmnName], [data]]
      )
    ), 
    table = Table.FromColumns ( List.Transform ( generate, ( x ) => x[data] ), List.Transform ( generate, ( x ) => x[clmnName] ) )
  ][table], 


  clmnNames = List.Buffer ( Table.ColumnNames ( table ) ), 
  trimmedClmns = List.Accumulate ( clmnNames, table, ( s, c ) => Table.AddColumn ( s, c & "_trimm", each Text.Start ( c, 3 ) ) )
in
  trimmedClmns
Изменено: surkenny - 22.12.2021 13:00:26
 
Например сюда
Таблица

И все же вопрос - а полученную таблицу (результат запроса) каким либо образом можно обрабатывать?
Я имею ввиду вставлять столбцы и писать формулы, чтобы они оставались на тех же местах, куда их разместить.
Или же все слетит при изменениях таблицы с обновлением запроса?
 
Цитата
Игорь Иванов написал:
Я имею ввиду вставлять столбцы и писать формулы, чтобы они оставались на тех же местах, куда их разместить.
Мне очень тяжело понять Вашу мысль :)
Добавлять другие столбцы никто не мешает.
 
Цитата
Игорь Иванов написал:
И все же вопрос - а полученную таблицу (результат запроса) каким либо образом можно обрабатывать?
На листе это просто таблица, делайте с ней все, что захотите. Но при обновлении запрос отправит данные на то же место. В окошке ПКМ-таблица-свойства внешних данных - можно немного настроить.
Достаточно "безопасно" добавлять столбцы с формулами и доп. данными справа.
 
Цитата
написал:
Мне очень тяжело понять Вашу мысль
Мысль простая - вставлять промежуточные столбцы напрямую в таблицу -результат, чтобы не городить огород внутри запроса)
 
Лучше всего взять и попробовать  :D Получится наглядно.
 
Попробовал - если в исходнике не добавлять столбцов и консолидировать одинаковые таблицы - вроде бы как не меняется порядок и они остаются на своих местах.
Страницы: 1
Наверх