Показать полную графическую версию : [решено] [Вопрос новичка] Ошибка в скрипте PowerShell
Да, задача такая, нужно собрать топ ±3000 повторяющихся строк из списка) »
т.е. остальные записи не нужны совсем?
Тогда:
1. Установите powershell core, лучше крайнюю версию (7.0). В powershell core командлет group-object был оптимизирован и работает гораздо быстрее, чем в версиях PS 5.1 и ниже. В общем, для получения адекватного времени обработки, необходимо использовать свежую версию powershell.
2. Если откидывать уникальные строки, то можно код оптимизировать (у меня отрабатывает на Вашем файле ps.txt, примерно 50-55 сек.):
measure-command{
$in = 'ps.txt'
$out = 'ps.csv'
$arr = gc $in -r 0 -enc utf8|%{$_|sort}
$arrnum = for ($i=1;$i -lt $arr.count;$i++){
if($arr[$i] -eq $arr[($i-1)]){$i;$i-1}
}
$arrsnum = $arrnum|sort -uni
$arrresult = for($i=0;$i -lt $arrsnum.count;$i++){
$arr[($arrsnum[$i])]
}
$arrresult|group -noel |select name,count|sort count -d|
export-csv $out -notype -enc utf8
}
DJ Mogarych
30-01-2020, 10:22
В powershell core командлет group-object был оптимизирован и работает гораздо быстрее, чем в версиях PS 5.1 и ниже. »
Подтверждаю!
Файл обрабатывался минут 15 на моей машине в Powershell 7 RC2. Окончания работы PS 5.1 я ждал почти сутки, но так и не дождался.
В целом, код такой:
(gc C:\temp\PS.txt |group -noel |select name,count).where{$_.count -ge 3000} |sort count -desc |Export-Csv C:\temp\PS.txt ';' -NoType
v79italya
30-01-2020, 19:54
coollogan, попробуйте в Excel. Поменять путь до файла и нажать Ctrl+Alt+F5
У меня выгружало около минуты.
Выгрузит адреса с наибольшими повторениями (3000 адресов)
coollogan
31-01-2020, 10:16
Друзья, YuS_2, v79italya, DJ Mogarych, Serguei Kouzmine, Busla, ВСЕМ ВАМ ОГРОМНОЕ СПАСИБО!
Не ожидал такой помощи, сейчас буду пробовать все варианты)
попробуйте в Excel. Поменять путь до файла и нажать Ctrl+Alt+F5 »
А Ctrl+Alt+F5 какую функцию выполняет? Хочу попробовать на mac, не помогает, а гуглеж такой горячей клавиши не находит.
v79italya
31-01-2020, 15:54
Ctrl+Alt+F5 какую функцию выполняет? » Запускает запрос Power Query.
Забыл написать что Power Query встроена в Excel2016 и в Excel 365. Для Excel 2010-2013 надстройку Power Query надо скачивать отдельно. И все это на Windows.
Насчет Excel на Mac мне ничего не известно
здесь внизу есть и про Mac https://support.office.com/ru-ru/article/%D0%93%D0%B4%D0%B5-%D0%BD%D0%B0%D0%B9%D1%82%D0%B8-%D0%BF%D1%80%D0%B5%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F-power-query-e9332067-8e49-46fc-97ff-f2e1bfa0cb16
coollogan
31-01-2020, 16:43
v79italya, получилось сделать на удаленном рабочем столе! Реально за пару секунд все сделалось, шок! Спасибо!
v79italya
31-01-2020, 17:00
за пару секунд все сделалось »
Пожалуйста. Только, откровенно говоря, с трудом верится в эту скорость. У меня текстовый файл только читает секунд пятнадцать.
Попробуйте на другом текстовом файле, о котором вы говорили(147мб).
v79italya, может, у него там SSD в чередовании?!
v79italya
31-01-2020, 18:14
Iska, не ну хорошо если все так.
А я грешу на Power Query, типа медленно обрабатывает объемы данных. А надо оказывается на свою несостоятельность грешить, что не могу себе позволить какое нибудь мощное железо для компа. Или на место проживания грешить? Типа, в гиблом месте живу :)
Вообще то мне мой нэтбук с двумя гигами озу и с двумя ядрами процессора и неизвестно какой видяхой нравится. А че, куплен бу по цене аккамулятора и не планирую менять ближайшие лет пять. Вернее, в ближайшие лет пять не видятся никаких заработков, потому и не планируются покупки. Как то так :)
coollogan
02-02-2020, 01:48
Только, откровенно говоря, с трудом верится в эту скорость »
Перепроверил, файл 7мб сортирует за +- 3 секунды
На файл 148 мегабайт ушло секунд 15 :)
v79italya, а если возникнет необходимость получить больше 3 000 строк, я могу внести какие-то корректировки?
может, у него там SSD в чередовании?! »
не знаю SSD или HDD, но оперативки 32 ГБ
Дали попользоваться
v79italya
02-02-2020, 13:52
coollogan, в ячейке рядом с адресом файла введите необходимое количество строк и обновите запрос
coollogan
24-03-2020, 03:17
coollogan, в ячейке рядом с адресом файла введите необходимое количество строк и обновите запрос »
Приветствую! Вернулся к вопросу и кажется что-то не работает, подскажите, файл как-то зависит от вас, не работает автономно?
Пишет ошибка инициализации к внешнему источнику данных.
v79italya
24-03-2020, 06:56
coollogan, файл ко мне никак не привязан. Раз работал запрос на этой машине, то и сейчас должен работать. Другой вопрос, если в одном Excel2016 работает, а в другом Excel2016 не работает. Можно попробовать установить обновление для Excel и Power Queryhttps://www.catalog.update.microsoft.com/Search.aspx?q=KB4462115
coollogan
24-03-2020, 12:14
файл ко мне никак не привязан. Раз работал запрос на этой машине, то и сейчас должен работать. Другой вопрос, если в одном Excel2016 работает, а в другом Excel2016 не работает. Можно попробовать установить обновление для Excel и Power Queryhttps://www.catalog.update.microsoft...px?q=KB4462115 »
Понял, да, скорее всего дело в Excel, пробовал на другой машине) Спасибо!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.