Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Оптимизация запросов в Power Query
 
mechanix 85, спасибо большое за инфу, будем посмотреть в сторону DAX.
surkenny, проектировать ничего не надо. Я вроде про проектирование ничего не писал. Я ожидал возможно какие-то общие советы, типа "зачем вы так таблицы группируете" или "вот ссылка, тут с О365 проблемы были, помогла переустановка Фреймворка", ну к примеру.
вот тут например , и вот тут тоже, и тут, и тут например, была мотивация у людей. Да много тем подобных, ну о чем Вы уважаемый. Да, я наверное перестарался, много текста написал. Но тут как, мало напишешь - недостаточно вводных данных как же мы вам поможем, много - "да у вас тут целое ТЗ".:) В любом случае форуму и в частности Вам большое спасибо, узнаю всегда много нового. Тему давайте закроем, платные советы мне конечно же не нужны.
Оптимизация запросов в Power Query
 
mechanix 85, ну для какой платной ветки, я же совета прошу, best practices, поделиться как люди такие объемы обрабатывают, может какие-то еще лайфхаки есть как ускорить обработку запросов, может что-то переустановить надо или удалить какой-нибудь компонент, мало ли с чем люди сталкивались. Я же не написал переделайте мне вот это вот все. Это же уже все работает, долго просто :)
Шаблон, в котором запросы крутятся пускай остается шаблоном (или книга, где модель находится в случае с DAX). Я написал про финальный результат. Например, я при помощи VBA могу удалить запросы в PQ или изменить (что я и делаю при формировании отчета выдачи). Может коряво конечно, но до чего докопался.  
А про DAX я просто незнаю ничего. С модели на лист данные же вытягиваются в виде сводной таблицы? У меня будет потом возможность это все в плоские таблицы преобразовать? Смогу я защитить модель при задании пароля на структуру?  Какие объемы обрабатываете сами? Почему Вы написали про DAX, он что быстрее работать точно будет?
Power Query - сгруппировать данные с прочих строк в одну по идентификатору
 
так надо?
только там где кол-во у Вас везде единицы в шаблоне, так что если что измените сами группировку, если вдруг нужна будет сумма
Оптимизация запросов в Power Query
 
mechanix 85, все варианты рассматриваю с условием, что в конечном итоге (в отчете выдачи) должна получиться книга без привязки к запросам в виде плоских таблиц и данных (сейчас это делаю макросом по итогу формирования данных, который потом просто пересохраняет из шаблона в обычную книгу) . DAX вообще пока освоение не начинал даже. Но если это решение существенно выгоднее, буду переделывать.
Оптимизация запросов в Power Query
 
Добрый день!
Прошу подсказать возможно ли ускорить выполнение запросов в Power Query.
Незнаю с чего начать, но попробую описать суть проблемы. Я новичок в PQ. Заранее скажу, я уже перелопатил кучу статей, часть рекомендаций выполнена. Стало конечно быстрее, но не намного.
Исходные данные следующие:
1. Ноутбук с О365/х64. 16 Gb ОЗУ, Core i5
2. Данные получаю из исходных файлов (формат txt, гружу из папки). Изначально был формат mdb, почитал, написано текстовые быстрее, а т.к. исходные данные можно и в txt получить перешел на него. Файлов от 1 до 6, вес каждого 50-100 Мб. Суммарное кол-во строк, получаемое в итоге от выгрузки от 500 000, в зависимости от кол-ва файлов в папке). Все бы ничего, если бы файлов было 1 или два, но когда их допустим 6, ожидать выполнение можно, пожалуй, вечность. 500 к  строк, 12 столбцов. Пример ниже (создан через стандартный сэмпл).
Запрос подключения
3. Структура следующая:
а.  Всего в файле xlsm 36 запросов, в каждом из которых выполняются определенные вычисления с исходными данными. Все эти запросы надо выгружать на лист Excel (там тоже произвел настройки согласно рекомендациям - убрал галочки с авто изменения ширины и отключил с каждого запроса Enable Background Refreshed).
б. Организовано все следующим образом - вот код что выше, это я значит обрабатываю исходные данные. Эти данные никуда не выгружаются. Следующим запросом получаю исходные данные для динамической фильтрации (использую для этого код на VBA, который в зависимости от нужд вставляется в запрос). Остальные запросы ссылаются на этот, отфильтрованный запрос.  Пример основного запроса ниже. (пробовал оборачивать его в буфер, результат нулевой, даже хуже вроде бы, т.к. контейнеры эти загружаются просто в хлам сразу все).

Основной запрос

в. Ниже приложу код некоторых запросов, прошу соориентировать в какую сторону копать для оптимизации запроса. Уверен, что вопрос лишь в нехватке знаний и практики. Вероятно был выбран неправильный подход к сбору данных.
Пример запроса
Пример запроса
Пример запроса
Несколько примечаний:
1. Т.к. в исходных данных 12 столбцов, а каждый конкретный запрос работает только с определенными столбцами, влияет ли это на скорость вычислений (ну допустим при группировке по Col9, Описателю и Col6 из 2 примера под спойлером? Если да, то возможно ли как то обращаться к отдельным столбцам таблицы из основного запроса или лучше использовать в таком случае list.generate/accumulate? Ускорит ли это каким-то образом выполнение запроса?
2. Попробовал импортировать в PBI Desktop, там как то быстрее по ощущениям работает (CPU меньше грузит и выполняется все в теч. 5-10 мин). Но надо в Excel, т.к. доп.софт никто ставить не будет.

Как вообще, подскажите схематично, какие best practices по сбору больших данных, как лучше такой объем данных собирать (желательно без костылей) с наименьшим кол-вом чтения источника,  опыта пока не хватает.
Спасибо.
Изменено: creept - 29.06.2022 12:58:11
Вычисление продолжительности по условию, Power Query. Работа с Date/Time
 
PooHkrd, спасибо. Все работает. Как то я недопетрил Table.SelectRows использовать.
Вычисление продолжительности по условию, Power Query. Работа с Date/Time
 
PooHkrd, да выбрасываем. В отчете рассматриваются значения, которые сначала были АКТ (от 1-го АКТ, если 2-й тоже АКТ), а потом стали НЕАКТ в течение отчетного периода.  
Изменено: creept - 15.06.2022 12:55:41
Вычисление продолжительности по условию, Power Query. Работа с Date/Time
 
не, где статуса НЕАКТ нету ничего не считаем, только duration между условиями от АКТ до НЕАКТ. Соответственно абрикосы в итоговую таблицу не попадают
Изменено: creept - 15.06.2022 12:26:02
Вычисление продолжительности по условию, Power Query. Работа с Date/Time
 
Добрый день, что-то я всю голову сломал над этим. Подскажите пжл. как вычислить продолжительность по условию.
То есть, на основе примера,  надо высчитать продолжительность между State ГРУШИ (АКТ) и State ГРУШИ (НЕАКТ). Если после НЕАКТ снова появляется в списке ГРУШИ (АКТ), то отсчет продолжительности начинается заново. State необязательно последователен - может быть ГРУШИ (АКТ), потом опять ГРУШИ (АКТ) и потом ГРУШИ (НЕАКТ). В таком случае отсчет должен идти от первого ГРУШИ (АКТ) до ГРУШИ (НЕАКТ).
Подсчет продолжительности и поиск пиковых значений, Power Query. Работа с Date/Time
 
Здравствуйте, задача из этой темы усложнилась. Прошу помочь в решении.
Прикладываю модифицированный пример, решение 1 части любезно предоставил surkenny
В результирующей таблице должна отображаться информация согласно следующего алгоритма:
1. Отчетный период разделен на 10-минутные интервалы, начинающиеся в полночь (следует учесть что данные в исходной таблице при этом могут начинаться с любого времени, не обязательно с 00:00). Полагаю от этого видоизмениться текущий запрос. Возможно такое вообще? Если допустим начать отсчет периода не с начальной даты/времени, указанной в таблице, а с 00:00
2. Информация вводится (время в столбце duration суммируется), когда за 10-минутный период поступает 10 или более значений в столбце "Count"
3. Информация не вводится если по достижении каждого любого нового 10-минутного периода значений пришло менее 5. Время в столбце Duration сбрасывается.
4. Пиковое значение 10-минутки показывает информацию о периоде с максимальным кол-вом значений в текущем массиве данным (например за время в 32 минуты он ищет пиковую 10-минутку).
Спасибо
Подсчет количества вхождений за определенный интервал времени, Power Query
 
surkenny, Браво! Спасибо
Подсчет количества вхождений за определенный интервал времени, Power Query
 
Добрый день, нужно подсчитать кол-во (сумму столбца) вхождений (столбец "Count") за интервал времени в 10 минут. Подскажите пжл. как это реализовать.
Спасибо. Пример во вложении
Реорганизация данных в таблице, Перенос значений исходной таблицы в другую таблицу
 
Получилось сделать с помощью добавления индексов строк с последующим слиянием. Я не уверен  правильно это или нет, тыкаю на все подряд :) Возможно есть более правильный способ, после которого все будет быстрее обрабатываться?
Курс обязательно буду проходить, очень интересный функционал, можно от половину таблиц с макросами избавиться. Как я этим раньше не пользовался не пойму.
Реорганизация данных в таблице, Перенос значений исходной таблицы в другую таблицу
 
Msi2102, то что надо! Крутой функционал, жаль я в нем не бум-бум пока что, но буду осваивать.
Подскажите пжл., а как сделать чтобы в столбце "Наименование" добавлялось значение (из примера) "КОЛЬЦО (наименование без номера)", а не "ололо,кольцо".
Я смотрел запрос в PQ, пытался разобраться, но не получилось пока что. Там на каком-то этапе мы удаляем чередующиеся строки, получается нам до этого этапа надо заменить  значение с "ололо,кольцо" на "КОЛЬЦО (наименование без номера)". Я смотрел там есть меню Replace values, но там как бы поиск построчно символов и замена их на других, а нам надо переместить два значения получается между собой в столбце "Описание". Такое возможно же да?
Пример Ваш же
Реорганизация данных в таблице, Перенос значений исходной таблицы в другую таблицу
 
Здравствуйте, прошу помочь в редизайне таблицы.
Есть таблица *.xlsx (получается от стороннего софта), очень неудобоваримая и огромная (см. пример Sheet1).
Хотелось бы эти данные отображать как в примере на Sheet 2 (с помощью VBA наверное, или как проще?).
---------------------
Планирую сделать шаблон в *xlsm, который будет запрашивать файл для редизайна и вставлять все на новый лист с помощью VBA, т.к. это не разовая операция, а на постоянной основе придется редизайнить эти таблицы. Но пока не очень понятно как выдергивать корректно нужные данные из текущей таблицы.
Спасибо.
Поиск значения в столбце другого листа
 
там вообще текст будет, можно любой текст

vikttur, сделал, спасибо
Код
IF(COUNTIF('Sheet2'!B:B;[@[имя]])>0;"требуется";"")
Изменено: vikttur - 01.07.2021 14:53:56
Поиск значения в столбце другого листа
 
Здравствуйте, подскажите пжл. - нужно из данные из листа 1 сверить с данными на листе 2 (они в одной колонке, но строки могут быть разные). Если данные на листе 2 присутствуют, то в соседеней колонке на листе 1 ставим +, если нет - пусто. Что-то я пробовал через индекс и поискпоз, но не получилось. Выдает ошибку "spill". Пример загрузил.

Спасибо.
Изменено: vikttur - 01.07.2021 13:34:13
Сопоставление данных строк из разных файлов и копирование диапазона
 
New,спасибо, все работает и даже быстрее стало, чем старый код (намного), но надо чтобы Book2 открытый был. Я пытался привязать Application FileDialog на Book2 (sht2), но у меня не получается. Как сделать чтобы при нажатии на кнопку появлялось диалоговое окно выбора файла, вытаскивал оттуда данные,  закрывал книгу и вставлял в Book1?
Почему так, потому что иногда к имени этого Book1 добавляется другой префикс и как бы он иногда под разным именем будет. Я извиняюсь, что не указал это изначально в условиях.
Сопоставление данных строк из разных файлов и копирование диапазона
 
Добрый день, есть обновляемый файл с данными (Book1) и другой файл со статичными данными (Book2). Если значение в столбце А book1 совпадает с столбцом A в book2, то копируется вся строка из book2 в book1. Необходимо, чтобы при выполнении макроса из файла Book2 копировался диапазон ячеек (а не вся строка как сейчас, т.к. в Book1 появились еще столбцы) A:G.
Что-то вот тут не так, а на что поменять не догоню.
Код
For rw = 1 To 999
    If Dict.exists(Cells(rw, "A").Value) Then
      cellValue = Cells(rw, "A").Value
      
    Rows(rw & ":" & rw).Select
Спасибо.
Группировка строк по значению в ячейке
 
Здравствуйте. много разных тем про группировку, но похожего не нашел/не получилось применить на практике. Подскажите пжл., как сгруппировать и свернуть строки в заданном диапазоне при наличии определенного значения в ячейке, а при отсутствии развернуть. Группировать не обязательно, как вариант можно скрыть.
Метод решения - VBA

Спасибо.
Подсчет значений за интервал времени
 
evgeniygeo, спасибо!
Подсчет значений за интервал времени
 
Всем привет, подскажите формулу (желательно не массива) - нужно посчитать кол-во ячеек, содержащих определенный текс за интервал времени (например, год).
Пример приложил. Вроде бы должно быть не сложно, но что-то жестко затупил. Спасибо.
Страницы: 1
Наверх