Страницы: 1
RSS
Power Qwery фильтрация получаемых данных из источника
 
Доброго времени суток!

Понимаю, вопрос чайника, но все же ломаю голову вторые сутки...
Решил пойти в ногу с прогрессом и возложить некоторые функции по подготовке данных на Power Qwery но зашел в примитивный тупик...
Прошу помочь!!!

Имеем: ексель книга, в которой находятся структурированные данные, размер книги 300+ мб и 1+млн строк на 100+ колонок.
Задача: загрузить данную книгу в стартовом запросе "Источник" в Power Qwery для дальнейшей работы в нем.
Проблема:
-Если загружать базу, предварительно открыв книгу и делая на основе таблицы внутри самой базы - тогда это мероприятие занимает больше часа...
-Если пытаться загрузить книгу, не открывая ее, ждал 3+ часа и результата не дождался...

Решение: Применять фильтр в запросе к данной книге, что бы оптимизировать передаваемый массив данных. Для 90% обращений к данной книге, можно применить фильтр по дате и отобрать 10-20% от всех строк в таблице. Установка фильтра после шага с источником, логично не приносит оптимизации в загрузке данных...

Тут как в притче- принести мешок сахара чтобы положить в чай всего 1-2 ложечки.

Прошу помочь подправить запрос, что бы в момент запроса отбиралось только те строки в колонке Дата из примера, где значение "28.02.2017"

Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content] 

тут отбор по "Дата"="29.02.2017"

in
    Источник

Поиск использовал... Умные статьи читал... Не помогло...

ПС- Или тут как не делай запрос, а подключения к файлу в 1+ час не избежать?

Заранее спасибо!
С ув. Тарас
 
Здравствуйте
Фильтрация таблицы (Power Query)
Код
let
    Источник   = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    Фильтрация = Table.SelectRows(Источник, each ([Дата] = #datetime(2018, 12, 28, 0, 0, 0)))
in
    Фильтрация
 
Цитата
dknox написал:
Или тут как не делай запрос, а подключения к файлу в 1+ час не избежать?
есть возможность выполнить запрос со стороны сервера, если это будет не книга Excel, а БД, к которой обратимся с SQL-запросом
Соблюдение правил форума не освобождает от модераторского произвола
 
Андрей Лящук, а что это даст? Все равно PQ будет читать весь файл целиком.
Тут только вариант от buchlotnik прокатит - разворачивать сервер и обращаться как к полноценной БД.
Еще скорость чтения можно повысить если сохранить ваш файл с БД в виде текстового CSV. Должно быть быстрее в 5-6 раз.
Если фильтровать выгрузки требуется в основном по дате, то рекомендую еще и разбить файл на периоды по месяцу, тогда фильтрация будет еще быстрее:  сначала обращаетесь к папке с файлами, из неё выцепляете только нужные вам месяцы, а потом уже запросом объединяете нужные файлы и работаете с массивом. Сам так работаю - все летает. И добавлять новые порции данных так очень удобно - залил в папку новый файл с новым периодом и делов.
А вообще структура файла не хорошая, зачем в таблице фактов хранить столько столбцов? Наверняка же там вагон и маленькая тележка справочной инфы, которую проще загрузить отдельными справочниками и по мере необходимости либо подцеплять их в запросе либо загружать в модель данных и там связывать.
Изменено: PooHkrd - 21.08.2019 00:24:40
Вот горшок пустой, он предмет простой...
 
PooHkrd, ну дык
Цитата
dknox написал:
Power Qwery фильтрация получаемых данных из источника
Какой вопрос, такой ответ.
А то, что суть задачи не совсем соответствует названию темы, это не моя проблема.
 
Андрей Лящук, Спасибо!, но этот вариант пробовал сам - не помогает, оно просто накладывает фильтр после того как все закачает.

PooHkrd, УРА!!! Получилось!!! Спасибо!

Меня спасло перегнать из двоичной книги в формат CSV - да стало в 2 раза больше занимать места, НО! - открывает и закачивает в модель за десятки секунд! Спасибо! Мысль с разбиением файла на несколько логических частей - тоже хороший инструмент, если автоматически их обрабатываешь.

PooHkrd, buchlotnik,  подскажите,
В ближайшее время буду пытаться подключить SQL базу к Power qwery, а там есть таблицы избыточно большие для моих целей. Для правильного отбора нужно использовать другую логику построения запроса- править сам запрос не в Power qwery, а в екселе - в свойствах подключения? Больше вариантов нет (во вложении)?
Изменено: dknox - 20.09.2019 21:52:50
 
Тыц
А вообще когда вы стандартным коннектором прицепитесь к БД, то в запросе будет код SQL, которым осуществляется выборка, вот прямо в запросе его можно будет и менять.
Изменено: PooHkrd - 21.08.2019 13:37:26
Вот горшок пустой, он предмет простой...
 
PooHkrd, Спасибо! пошел изучать мат часть)
 
Коллеги, Добрый день!

Форум читал… вопрос для знающих, наверное, легкий и чтобы не плодить новые темы добавлю его сюда…

Продолжаю изучать PQ и в очередной раз напоролся на тупик.

Есть задача, которая во вложении. Суть: имеем 2 таблицы – 1-звонки менеджеров по клиентам и 2- продажи товара по клиентам. И между ними нет прямой связи. Нужно определить, после звонка какого сотрудника была продажа и присвоить ее этому звонку.

Проблема заключается в том что я не могу найти способ как в процесс объединить запрос (слияние) в Table.NestedJoin добавить сопоставление не только по 100% совпадению колонок, а и по фильтру > , <, =…

Я нашел костыльный вариант как обойти это через буферную таблицу с кучей расчетов (пример во вложении) … Но когда положил это на реальную базу, скрестить 2 таблицы за год где в каждой в месяц по 1+млн строк не получается…

Помогите советом, наверное, можно объединить эти таблицы более простым и менее ресурсоемким способом. Я уже приуныл ковырять интернет и скудный мануал от майкрософта….

Заранее спасибо за помощь!
 
Цитата
dknox написал:
чтобы не плодить новые темы
буду плодить сообщения в чужой теме - так?
Ваш вопрос каким-либо образом связан с этой темой? Не считая того, что вопрос касается PQ.
 
Юрий М,

Добрый вечер.
Ну, тему начинал я.

Что я сделал не так? Нужно создать новую тему?
 
Да, я не заметил, что автор тот же ))
Правильно будет создать новую.
Страницы: 1
Наверх