Страницы: 1
RSS
Power Query: собрать CSV файлы из папки и сохранить в один файл
 
Привет всем!

Можно ли с помощью Power Query собрать из папки несколько CSV файлов (в сумме дают несколько миллионов строк), и экспортировать результат в новый CSV файл (один) ?
Если нельзя, то как сделать это средствами MS Excel?
 
Один вариант из тысячи - "Ссылки" - http://www.rondebruin.nl/win/addins/rdbmerge.htm ... ;)
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
Да, действительно, а зачем привлекать PQ, или Excel к обработке теста?

Вот тут обсуждалась подобная проблема. По самой ссылке приведен пост с тем вариантом файла-скрипта, что собирает данные из нескольких однотипных файлов CSV в один общий, проделывая некоторые промежуточные манипуляции с данными.
 
Цитата
Z написал: Один вариант из тысячи - "Ссылки"
Немного не подходит, так как на выходе нужно получить не все столбцы, а выбранные + переименовать некоторые столбцы.  
 
Цитата
Дмитрий Экселев написал: ...так как на выходе нужно получить не...
OFF Сколько еще у вас жокеров в рукавах заныкано? Правила чтить и блюсти следует - сразу толково заявлять свою хотелку и желаемые/возможные варианты решения. Да и со своими потугами, а если их нет и не предвидится, то - "Работа" ждет вас с вашим заказом... ;)
"Ctrl+S" - достойное завершение ваших гениальных мыслей!.. ;)
 
А все же, не получил точного отчета на свой вопрос - Можно ли с помощью Power Query это сделать или нет ?
 
Можно.
Сначала комбинируете и обрабатываете запросом данные - запихиваете это дело в модель данных.
Далее устанавливаете надстройку DAX Studio в ней есть функция экспортировать содержимое модели данных в файл .csv
Удачи.
Вот горшок пустой, он предмет простой...
 
Цитата
Дмитрий Экселев написал:
с помощью Power Query это сделать или нет
А вариант со скриптом смотрели?

Ну вот не нравятся мне рассуждения "сначала из текста будем долго куда-то конвертировать, а потом будем конвертировать обратно в такой же текст" :)
Даже с учетом "надо обработать столбцы" - не нужно привлекать излишние инструменты...
 
В принципе, коллеги, можно сделать и на Power Query. Прилагаю вариант, правда, он по не понятным мне причинам дублирует строки. Ну, да это уже для допиливания напильником. В конце концов, можно читать требуемые столбцы из исходных csv, а потом выполнять вставки строк. Архив распаковать в папку c:\path\csv convert
 
Андрей, такой запрос можно выполнить и прямо из Excel, используя тот же ADO/OLEDB, поскольку мы оперируем прямой вставкой результата в конечную таблицу.
То есть это не "решение с помощью PQ", а "решение средствами некоего поставщика данных"  :)  
 
Цитата
AndreTM написал:
это не "решение с помощью PQ", а "решение средствами некоего поставщика данных"
Тут не поспоришь. :)  Можно лишь дополнить, что через VBA с составлением схемы и выполнением вставки кодом для ADODB.Connection будет самое быстрое решение. Уже тестировал на 10000000 записей легко уделывает текстовые преобразования в VBA.
А так, это просто, как вариант, ну, если очень надо именно и только именно через PQ. То ещё извращение, достойное анекдота про гланды и автоген.
Изменено: Андрей VG - 24.08.2017 12:47:22
 
Цитата
Андрей VG написал:
будет самое быстрое решение... легко уделывает текстовые преобразования в VBA
Смотря что ты подразумеваешь под "текстовыми преобразованиями в VBA". Именно преобразование данных в некоей структуре средствами VBA, или (не дай боже для таких объемов) работу в Excel на листе...

А также все будет зависеть от конкретной задачи. Вот как-то мне кажется, что именно в данной задаче при заданных условиях ("читаем текстовые файлы в формате с разделителями и пишем в текстовый файл только подблоки из строк в нужном порядке"), обычное потоковое чтение/запись данных шеллом ОСи - уделает любые решения с привлечением сторонних программных средств. Ну не может любое приложение читать и писать быстрее, чем ОС :)
 
Цитата
AndreTM написал:
обычное потоковое чтение/запись данных шеллом ОСи - уделает любые решения с привлечением сторонних программных средств.
Не могу найти обсуждение, но задача была посложнее, чем просто слияние файлов. Нечто вроде, отобрать уникальные (не имеющие повторов по заданным столбцам записи из двух или трёх файлов) и как в этой теме вывести в результирующий csv только требуемый набор столбцов. Игорь (Hugo) сделал через строковое чтение и словари - получилось на порядок медленнее, как раз из-за строковых операций. Хотя, конечно, ADODB внутри тоже разбивает по разделителю, но код там куда эффективнее, видимо, а может скорость чтения влияет.
 
Цитата
AndreTM написал:
как раз из-за строковых операций
подразумевает, что надо будет сравнивать между собой (и обрабатывать) данные строк-"записей", что, конечно всегда выполняется эффективнее специализированными инструментами. Ну и тогда как раз любая СУБД и её провайдеры окажутся именно тем инструментом, что необходим :)

А у нас
Цитата
AndreTM написал:
все будет зависеть от конкретной задачи
Цитата
AndreTM написал:
именно в данной задаче при заданных условиях
Именно слияние файлов и плюс ещё - выбросить целиком ненужные строки, либо переставить части строки. И здесь дополнительные перекачки данных туда-сюда - будут только вносить лишние проблемы и затраты.
 
Блин, коллеги, по моему куда-то вы ударились не туда.
Я так понял, ТС знает как ему сделать загрузку и обработку файлов в PQ и загрузить в модель данных, но результат нужен именно в csv.
Задача скорее всего разовая, так расти до ваших высот знания ему ни к чему, вот и возник вопрос как результат выгрузить в нужный формат.
Дмитрий Экселев, вы хоть расскажите, мой совет помог?
Вот горшок пустой, он предмет простой...
 
Цитата
PooHkrd написал:
знает как ему сделать загрузку и обработку файлов в PQ и загрузить в модель данных, но результат нужен именно в csv.
Не уверен
Цитата
Дмитрий Экселев написал:
обрать из папки несколько CSV файлов (в сумме дают несколько миллионов строк)
Цитата
Дмитрий Экселев написал:
так как на выходе нужно получить не все столбцы, а выбранные + переименовать некоторые столбцы
А молчуна-партизана я занёс в персональный чёрный список
 
Цитата
Андрей VG написал:
он по не понятным мне причинам дублирует строки.
Андрей VG, дублирую ответ тут тоже:

Надо снять галочку в Параметрах запроса - Текущая книга - Загрузка данных - Фоновые данные.
Из-за нее (а также предпросмотров результатов в окне редактора) данные могут грузиться неоднократно.
Если галочку снять, то данные будут при обновлении (Данные - Обновить) пихаться один раз. Гарантия 90%. Еще 10% остается на то, что PQ при обращении через какие-нибудь дрова может предварительно читать схему данных или еще что-то, что может и привести к лишней отправке запроса.
F1 творит чудеса
Страницы: 1
Наверх