#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 и вставьте запрос в панель «Запросы». Все зависимые запросы и параметры также будут скопированы. Затем вы можете настроить шаги запроса и сохранить новую книгу.