Страницы: 1
RSS
оптимизация запросов в Power Query, Выполнение запросов жрет слишком много оперативки. Есть ли пути оптимизации?
 
Здавствуйте всем.
Возникла такая проблема: сварганил запрос,который разворачивает из двух столбцов таблицу А на 55 тыс строк, потом фильтрами обрабатывает 4 разных таблицы и джойнит результаты обработки к таблице А и получается заказанный начальством отчет. Ура. Теперь нужно передавать этот скрипт на ежеденевное выполнение оператору, а у него в компе Коре Ай 5 и 4 гига опеативки и скрипт через 10 минут обработки жалуется на нехватку памяти. У меня на 8 гигах и стареньком Коре Ай 3 вся обработка происходит за 5 минут.
Скрипт я ваял в исключительно в конструкторе. В модель данных загружается только результирующая таблица. Может кто-нибудь намекнуть что можно сделать, чтобы скрипт смог прокрутить данные на 4 гигах?
Пример запроса пока не могу предоставить он на работе остался, смогу только в понедельник. Задайте хотя бы в общих чертах вектор куда двигаться, или просто скажите, что нет смысла париться, а просто увеличить оперативку до 16 гиг и будет щястье.
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
что можно сделать, чтобы скрипт смог прокрутить данные на 4 гигах
Пересмотреть алгоритм решения, выбрав использующий минимум памяти. Докупить памяти - сегодня не дорого. Установить 64-битный Excel, чтобы мог её использовать ;)
 
64 бит ексель установлен, по диспетчеру задач память забита целиком и своп-файл тоже.

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

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

Все равно спасибо.
Изменено: PooHkrd - 14.02.2022 10:25:19
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
просто не думал что обработка сравнительно не большого, по количеству строк и столбцов, объема данных будет так много кушать
Вы же понимаете, что без примера и описания логики того, что вы делаете, это разговор на пальцах. Допустим вы делаете выборку 10000 строк, а потом соединяете через Table.NestedJoin с исходной таблицей - фактически получаете 55000*10000 элементов - мало ли это?
 
Цитата
Андрей VG написал:
55000*10000 элементов - мало ли это?
Да фиг его знает. Я ориентировался на то, что до этого джойнил к 700 000 строкам массив из 2 700 000 строк, и за 4 часа оно рассчиталось без выдачи каких-либо ошибок о нехватке памяти. А тут 4 гигов мало ему на такую фигню.

Короче говоря, буду наращивать память. Это будет для меня быстрее чем оптимизировать алгоритм. Да и память судя по всему в дальнейшем не помешает, т.к. много отчетности планирую формировать через Power Query. А времени на вылизывание кода почти не бывает.
Андрей VG, спасибо за уделенное внимание.
Изменено: PooHkrd - 19.01.2022 21:55:19
Вот горшок пустой, он предмет простой...
 
По моему опыту, больше всего жрет именно разворачивание столбцов, особенно столбцов таблиц.
Поэтому, если возможно, нужно использовать Table.Join вместо Table.NestedJoin.

Для примера, простой скрипт, собирающий из 10 разноразмерных столбцов декартово произведение (через добавление столбца и разворачивание его), работает в несколько раз (3-5 раз) дольше, чем джойн при помощи "на лету" добавленного столбца единичек.
F1 творит чудеса
 
Цитата
Максим Зеленский написал:
Для примера, простой скрипт, собирающий из 10 разноразмерных столбцов декартово произведение (через добавление столбца и разворачивание его), работает в несколько раз (3-5 раз) дольше, чем джойн при помощи "на лету" добавленного столбца единичек.
Максим, можно поподробнее: как "джойном с единицами" сделать декартово произведение?
Изменено: Владимир - 13.07.2017 20:19:52
 
Комбинирование двух столбцов в Power Query, В Power Query из двух столбцов из разных источников нужно сделать комбинацию всех сочетаний значений этих столбцов
Вот здесь мне помогли по данному вопросу.
Вот горшок пустой, он предмет простой...
 
Цитата
написал:
Для примера, простой скрипт, собирающий из 10 разноразмерных столбцов декартово произведение (через добавление столбца и разворачивание его), работает в несколько раз (3-5 раз) дольше, чем джойн при помощи "на лету" добавленного столбца единичек.
Добрый день. Натолкнулся на ваш старый пост. Для меня сейчас остро встал вопрос с долгой обработкой PQ запроса на огромной загружаемой таблице (5 млн строк, 30 столбцов с огромными по длине текстовыми данными в ячейках): джойню к такой таблице данные из др. нескольких таблиц (некоторые ~ 1 млн строк) стандартно через Table.NestedJoin и все начинает жутко тормозить на i10700 32Gb RAM. Абсолютно согласен, что основные тормоза происходят на шагах разворачивания отВПРенных столбцов. Заинтересовало, что вы имели в виду в части джойнов "единичек"? Можете привести пример, если не затруднит?
Изменено: voler83 - 19.12.2023 11:29:21
Страницы: 1
Наверх