Цитата |
---|
Hugo написал: objFile.WriteLine Split(strNextLine, ";")(11) Но это если разделитель полей ; |
Цитата |
---|
PooHkrd написал: можно загрузить весь ваш массив в модель данных и вытаскивать нужную строку фильтром сводной таблицы |
18.05.2020 18:12:19
|
|||||
|
|
18.05.2020 19:43:18
|
|
|
|
18.05.2020 19:56:29
Подумал о таком Хотя, конечно, интересно за сколько секунд будет обрабатываться данные в .exe или xll.
Изменено:
«Бритва Оккама» или «Принцип Калашникова»?
|
|||
|
|
18.05.2020 21:19:54
|
|||||
|
|
18.05.2020 21:24:25
|
|
|
|
18.05.2020 21:30:45
|
|||
|
|
18.05.2020 22:11:47
Поддерживаются следующие версии Office: Microsoft Office 2010 Professional Plus c Software Assurance |
|||
|
|
18.05.2020 22:16:26
|
|||
|
|
18.05.2020 22:23:52
И еще чтобы протащить такой массив офис обязательно должен быть 64битный. 32 бит такой объем не потянет от слова совсем.
Но опять же если идея в том чтобы вытаскивать из огромного массива значения фильтрами, то можно скачать MS Power BI Desktop он бесплатный, и загрузить в модель данные с его помощью, а далее уже фильтрами вытягивать нужные значения в аналог экселевской сводной таблицы.
Вот горшок пустой, он предмет простой...
|
|||||
|
|
18.05.2020 22:29:43
там же и Поддерживаются следующие версии Office: Microsoft Office 2010 Professional Plus c Software Assurance Microsoft Office 2013
По вопросам из тем форума, личку не читаю.
|
|
|
|
19.05.2020 02:10:49
Решил просто попробовать на одном файле размером 1,2 Гб. Ввел путь к папке с этим единственным файлом, нажал Ctrl+Alt+5. Ждал 5 минут. Появилось сообщение "Данные, возвращаемые запросом, не умещаются на листе". Подтвердил ОК и отобразились данные из 12 столбца (насколько это поддерживает эксель). Смутило, что символы (кроме цифр), в большинстве своем, отображаются в виде крякозябр. Дело в кодировке. Но сам эксель (не через запуск в Power Query) символы отображает корректно. Решил попробовать на папке, где находятся 10 файлов по 500 000 строк, полученные из файла в 1,2 Гб. Ждал 15 минут, пока откроются 10 столбцов, содержащих 12-ый столбец каждого из файлов в папке. Опять отображаются Итог по процессу: все работает, только расходует много памяти и отображает крякозябры. Но я так понял, что Power Query гораздо шустрее обрабатывает тяжелые файлы в сравнении с эксель. Думаю, что фильтры и формулы в Power Query будут работать так же быстро. Но для этого нужно знать синтаксис PQ.
Изменено: |
|||||||
|
|
19.05.2020 05:00:39
|
|||
|
|
19.05.2020 08:23:14
уже платный SQL Standard или свободные А имеющиеся инструменты - ну да, поддерживаю идею индексирования файлов по 12му столбцу. то есть сперва долго индексируем, чтоб получить набор файлов по которым уже будет поиск. Эти индексы можно разместить уже в access, для быстрого поиска, результатом которого будет например стрка файл, и номер строки где это найдено, ну а дальше получить строку данных уже обычным образом. Фактически имеем в три таблицы. 1 Справочник имен файлов (ID,Filepath) 2 Значения (ID,Column12Value) 3 номера стroк (ID, AValueID, FileID, Rownumber)
Изменено:
По вопросам из тем форума, личку не читаю.
|
|||
|
|
19.05.2020 11:07:18
Приложите небольшой пример csv-файла, что ищем и какой результат возвращаем. Будет время сделаю вам библиотеку, думаю, будет быстрее всего, здесь предложенного. У вас сколько ОЗУ, какой разрядности система, в каком формате/кодировке csv файл?
Изменено:
«Бритва Оккама» или «Принцип Калашникова»?
|
|
|
|
19.05.2020 14:04:06
Андрей VG, а если по словам ТС все значения в 12 столбце уникальные, то можно перебирать файлы List.Generate'ом и остановиться в случае нахождения полного результата. По идее должно быть еще быстрее.
Вот горшок пустой, он предмет простой...
|
|
|
|
19.05.2020 15:42:22
QLIK после загрузки модели может выгрузить данные в свои оптимизированные файлы, которые и места занимают поменьше, и грузятся быстрее.
Мы делали в два захода - сперва одним приложением тянули всё что есть в 1С в эти файлы (попутно приводя к нужному виду), затем уже разными другими из этих чистых оптимизированных данных выводили данные в визуализации кому что нужно. Это для информации, как можно реализовывать в принципе. P.S. цитата с одной темы Телеграма по Qlik - Интересный факт - 20 гб. csv файлов при перегонке в qvd весят 700 мб) - Так это известное поведение, у меня в проекте 17 тыс текстовых файлоа по 0.5-3 мб в QVD было 150 мегабайт))
Изменено: |
|
|
|
19.05.2020 16:30:56
sokol92 Hugo Я встречал базы с еще большим числом данных, но они и весили гораздо меньше (как описывает Hugo) и поиск в них происходит очень шустро. Это базы в системе Cronos. Может, стоит перегнать все в эту базу? Никто не сталкивался с перегонкой в Cronos?
Изменено: |
|||||||
|
|
19.05.2020 16:59:32
Ну, можно ещё и регулярками попробовать, правда мне так и не стала понятна цель задачи - простое подтверждение того, что есть такой код в каком-нибудь из файлов?
|
|||||||||
|
|
19.05.2020 17:03:48
|
|||
|
|
19.05.2020 17:43:36
excel_and, скиньте файл, я вам сделаю простое решение - функцию в Excel, возвращающую нужную часть строки или всю строку, по первому совпадению из указанного csv.
«Бритва Оккама» или «Принцип Калашникова»?
|
|||
|
|
19.05.2020 19:13:44
Идея с индексом (будем это называть так) заключалась в том, чтобы создать ОТДЕЛЬНЫЙ ФАЙЛ ИЛИ НЕСКОЛЬКО (ввиду ограничений Excel на число строк, а их будет около 130 млн.!!!), в котором бы присутствовали заданные идентификаторы (извлеченный из всех csv 12-ый столбец (СТОЛБЕЦ L) только с идентификаторами). Если поиск нужного идентификатора в ИНДЕКСНОМ ФАЙЛЕ (ФАЙЛАХ) находит совпадение, то уже тогда целесообразно производить поиск, как указано выше. Т.е. чтобы сэкономить время на поиск во всех csv, сперва нужно убедиться, что сам идентификатор присутствует в ИНДЕКСНОМ ФАЙЛЕ/ФАЙЛАХ со всеми извлеченными заранее из всех csv идентификаторами. И уже потом выводить номер строки со ссылкой на соответствующий csv из папки (или всю строку полностью, желательно также со ссылкой на исходный файл). Если при реализации функции будет возможен поиск с использованием подстановочных символов "*" (заменяет любое число символов) или "?" (заменяет один символ), это будет самое идеальное решение. Это объясняется тем, что на основе анализа выявлены идентификаторы, где одинаковые по написанию символы на латинице и на кириллице создают проблему при ТОЧНОМ поиске идентификатора. Например "ASD123FGH456" (в латинице) может визуально быть похожим на "АSD123FGН456" (в кириллице). Вопрос с поиском всегда бы заканчивался удачно, если бы строка для поиска могла бы быть задана в виде "?SD123FG?456". Заранее спасибо.
Изменено: |
|||
|
|
19.05.2020 19:54:18
Я вашу цитату привёл как пример на запрос файла-примера. И вот, не прошло двух суток... А остальное укоризна ТСу. Загнал в SQLite, проиндексировал. Power Query даже с ленивым In загружает за менее секунды (дольше ширину столбцов подгоняет).
Даже такая наглая конструкция в VBA вполне себе пристойно ведёт - вызов для 2500 значений за 6 секунд.
|
|||||||
|
|
19.05.2020 20:00:06
Вопрос по латиница/кириллица - в самих csv тоже может быть такая пересортица? По логике там обязано всё быть ровно. Но если вдруг не так - то при запросе одного номера "ASD123FGH456" нет особых проблем запросить у словаря все 4 варианта, и даже вывести все 4 строки в худшем случае...
Изменено: |
|
|
|
19.05.2020 20:23:07
Андрей, спасибо за очередное интересное исследование!
Владимир
|
|
|
|
19.05.2020 21:44:17
Изменено: |
|||
|
|
19.05.2020 21:48:37
Я говорил про то, что и в исходных csv может ли путаться раскладка. Если путается - это бардак-с Кто-то данные не чистит в базе...
Если делать как я описал - это можно игнорировать. Т.е. пишем в словарь всё как есть, ищем в словаре все варианты, извлекаем все строки... А там уже пользователь пускай сам репу чешет - а какая строка правильная, если вдруг их 4 и все разные?
Изменено: |
||||
|
|
|||