Страницы: 1
RSS
Повышение заголовков Power Query без повышения, работа с заголовками таблицы при загрузки данных с помощью power query
 
Привет, Планета.

Попрошу у Вас совета по следующей проблеме.
Есть папка с файлами-выгрузками с одинаковой структурой, которую я не могу менять. В каждом файле таблица-диапазон.
Строится запрос PQ, который объединяет все в одну таблицу. Пример запроса в файле с примером. При этом есть потребность, чтобы напротив каждой строчки было указано из какого файла взята эта строка и когда тот файл был создан. То есть +две колонки вначале таблицы [Имя] и [Дата].
В результате удается получить эти данные в нужные колонки.

Но проблема начинается здесь.
В запросе применяю команду "повысить заголовки" и она "затирает" правильные заголовки в первых двух столбцах значениями из первой строки. В то время как в остальной часть таблицы значения из первой строки справедливо занимают места заголовков. Из-за того, что заголовки первых двух столбцов могут меняться, я не смогу больше  к ним обращаться и работать дальше с таким запросом

а. Есть ли способ как-нибудь по хитрому расправится с заголовками?
б. Может есть другой способ добиться того, чтобы каждая строка с данными была "промаркирована" откуда она пришла (без изменения структуры выгрузки исходных файлов).
Изменено: Alexey795 - 17.03.2019 05:00:52
 
как-то так
Код
let
    Источник = Table.SelectRows(Folder.Files("D:\пост планета заголовки\папка с файлами"),each [Attributes][Kind]="Excel File" and not Text.StartsWith([Name], "~"))[[Name],[Date created],[Content]],
    Листы = Table.ExpandListColumn(Table.TransformColumns(Источник, {{"Content",each let a=_ in Table.SelectRows(Excel.Workbook(a),each try [Kind]="Sheet" otherwise true)[Data]}}),"Content"),
    #"Развернутый элемент Content" = Table.ExpandTableColumn(Table.TransformColumns(Листы,{{"Content",Table.PromoteHeaders}}),"Content",List.Transform(Record.FieldValues(Листы[Content]{0}{0}),Text.From))
in
    #"Развернутый элемент Content"
Или так для мозговыноса (для строки формул)
Код
=  ((a)=>
    ((b)=>
      ((c)=>
        Table.ExpandTableColumn(c,"Content",Table.ColumnNames(c[Content]{0}))
      )(
        Table.TransformColumns(b,{{"Content",Table.PromoteHeaders}})
      )
    )(
      Table.ExpandListColumn(
        Table.TransformColumns(
          a, 
          {
            {
              "Content",
              each 
                Table.SelectRows(
                  Excel.Workbook(_),
                  each 
                    try [Kind]="Sheet" otherwise true
              )[Data]
            }
          }
        ),
        "Content"
      )
    )
  )(
    Table.SelectRows(
      Folder.Files("D:\пост планета заголовки\папка с файлами"),
      each 
        [Attributes][Kind]="Excel File" and 
        not Text.StartsWith([Name], "~")
    )[[Name],[Date created],[Content]]
  )
Изменено: Андрей Лящук - 17.03.2019 02:35:04
 
Использую стандартный метод загрузки данных из папки
и изменив на этапе удаления столбцов наименование столбца.
= Table.SelectColumns(#"Переименованные столбцы1", {"Source.Name", "Date created", "Преобразовать файл из папка с файлами"})
Страницы: 1
Наверх