Как повторно использовать набор шагов power query в другом документе Excel?

#excel #powerpivot

Вопрос:

У нас есть csv-файл объемом 4 ГБ, который является источником для запроса питания в документе Excel. Для настройки всех преобразований требуется некоторое время, и мы хотели бы иметь возможность повторно использовать эти шаги при создании других документов, которые необходимо импортировать в файлы модели данных того же формата.

Есть ли способ сохранить запрос и повторно использовать его в другом документе? Я видел некоторые ссылки на копирование текста запроса из расширенного редактора, но, похоже, должен быть лучший способ сделать это.

Комментарии:

1. Я бы предложил сохранить ваши данные (файл данных) и преобразования данных PowerQuery (файл PQ) в отдельных документах. Затем вы можете легко скопировать свой файл PQ, чтобы использовать его с другими данными. Если вы создадите папку для каждого файла данных и поместите в них также свой файл PQ, вы сможете полностью автоматизировать процесс — при условии, что структура данных останется прежней.

2. Как вы экспортируете файл pq? Похоже, это правильный путь. Спасибо.

3. Пожалуйста, найдите мой ответ ниже.

Ответ №1:

Разделение преобразований данных и запросов на мощность

Я предполагаю, что вы открыли свой файл данных Excel и выполнили в нем все преобразования PowerQuery. Чтобы разделить их, вы можете либо обратиться к решению Питера, либо сделать две копии этого файла, одну для данных (например «data.xlsx») и другой для преобразований (например, «PQ_transformations.xlsx»). В любом случае, вам придется внести некоторые коррективы.

Корректировки

  • Удалите все запросы PQ из файла данных.
  • Измените файл PQ. Это зависит от того, хотите ли вы изменить расположение каждого файла данных в PowerQuery (вариант 1) или нет (вариант 2).

Вариант 1. Выберите файл данных в PowerQuery.

  • Откройте редактор PQ
  • Перейдите к первому запросу ваших преобразований и замените первое утверждение (которое должно выглядеть так = Excel.CurrentWorkbook(){[Name="Table1"]}[Content] ) на = Excel.Workbook(File.Contents("[PATH]data.xlsx"), null, true) [ПУТЬ], являющийся заполнителем для местоположения вашего файла.
  • Закройте редактор PQ
  • Удалите вкладку, которая содержала ваши исходные данные.

Вариант 2: Применяйте преобразования без редактирования PowerQuery

Следующая настройка предполагает, что вы упорядочиваете файлы данных в разных папках. Затем вы можете скопировать свой файл PQ в каждую из этих папок, открыть его и нажать «Данные»/»Обновить все», чтобы применить свои преобразования к файлу данных в данной папке.

Примечания:

  • Я предполагаю, что все файлы данных имеют одинаковую структуру и название.
  • Я определяю папку в Excel, а не в PowerQuery, чтобы пользователи, не знакомые с PQ, могли вручную изменять папку, перезаписывая формулу, если они не хотят все время копировать файл.
  • Добавьте вкладку «Пути».
  • Выберите A1 и введите Current folder .
  • Выберите A2 и введите =MID(CELL("filename"),1,FIND("[",CELL("filename"))-1) . Эта формула предоставляет вам папку текущего файла, как только он будет сохранен.
  • Выберите диапазон A1:A2 и внесите его в редактор PQ, выбрав ленту «Данные» и выбрав «Из таблицы/области» в разделе «Запрос и преобразование данных».
  • Будет сгенерирован новый запрос, показывающий текущую папку.
  • Откройте «Расширенный редактор» («Пуск»/»Расширенный редактор»), измените название второго шага на «Типы настроек» и добавьте дополнительные строки. Результат должен выглядеть примерно так:
 let
    Source = Excel.CurrentWorkbook(){[Name="Table2"]}[Content],
    SetTypes = Table.TransformColumnTypes(Source ,{{"Current folder", type text}}),
    GetPathAsValue = SetTypes{0}[Current folder],
    ShowFilesInPath = Folder.Files(GetPathAsValue),
    FilterForDataFile = Table.SelectRows(ShowFilesInPath, each ([Name] = "Data.xlsx"))
in
    FilterForDataFile 
 
  • Закройте «Расширенный редактор» и примите изменения.
  • Вы должны увидеть строку, в которой указан ваш файл данных.
  • Нажмите «Двоичный файл» в столбце «Содержимое», чтобы просмотреть список всех таблиц и листов в этом файле.
  • Выберите нужный «Лист» или «таблицу», что бы вы обычно ни имели в своем файле данных.
  • Переименуйте запрос в «GetFile».
  • Перейдите к первому запросу ваших исходных преобразований и замените первое утверждение (которое должно выглядеть так = Excel.CurrentWorkbook(){[Name="Table1"]}[Content] ) на = GetFile .

Комментарии:

1. Я сделал что-то вроде варианта 2. Я добавил лист под названием Конфигурация. Добавлена ячейка с указанной вами формулой, а затем названа ячейка. Затем я смог указать путь при создании источника. Это было необходимо, поскольку PowerQuery не поддерживает относительные пути.

Ответ №2:

Скопируйте и вставьте

В PowerQuery щелкните правой кнопкой мыши на конечном запросе и выберите копировать. Откройте новую книгу Excel, откройте PowerQuery и вставьте запрос в панель «Запросы». Все зависимые запросы и параметры также будут скопированы. Затем вы можете настроить шаги запроса и сохранить новую книгу.