Как отфильтровать определенные строки и столбцы данных CSV с помощью Powershell и рассчитать сумму? - PullRequest
0 голосов
/ 21 ноября 2018

Я новичок в Powershell и пытаюсь создать сценарий, который может фильтровать определенные строки и столбцы информации в CSV-файле и отображать сумму для определенных столбцов информации.

На листе около 70 столбцов и3000 строк в настоящее время

Пример формата ниже

Tracking #  Project Activity    Description         18-Mar  18-Apr  18-May  18-Jun  18-Jul  

Tra_id_000  ABC Development 2 line summary of the work          100 50  10      
Tra_id_001  DEF Development 2 line summary of the work      100     200 50
Tra_id_002  HIJ Testing     2 line summary of the work  50  10  
Tra_id_003  KLM Requirement 2 line summary of the work          100     
Tra_id_004  ABC Testing     2 line summary of the work              100     
Tra_id_005  ABC Other       2 line summary of the work                  1000
Tra_id_006  ABC Testing     2 line summary of the work              1000

Я попытался использовать пример на https://www.pluralsight.com/blog/it-ops/powershell-excel-quick-tip, чтобы придумать пример кода.

$data=import-csv -path '.\Test.csv'
$data|select-object -first 5|Format-Table -AutoSize
$data|select-object -property Project,'Activity'|group-object -property Prject,'Activity'|select-object -property name,count|sort-object -property name|format-table -autosize

Здесь я могу выбрать столбцы для Project и Activity и отобразить их.

Теперь я застрял на следующих шагах с точки зрения того, как отфильтровать конкретный проект и мероприятие, а затем рассчитать сумму за соответствующие месяцы.Например, я хочу фильтровать только для проектов "ABC" и "Тестирование деятельности" и отображать счетчик, а также отображать сумму за 18 марта, 18 апреля и т. Д.

Любой намек на то, как это может бытьдостигли?

1 Ответ

0 голосов
/ 21 ноября 2018

Для фильтрации следует использовать командлет Where-Object.В ваших примерах фильтрации столбцов проекта и действия вы должны использовать:

$data | Where-Object { $_.Project -eq 'ABC' } | Format-Table

$data | Where-Object { $_.Project -eq 'ABC' -and $_.Activity -eq 'Testing' } | Format-Table

, который будет возвращать:

Tracking # Project Activity    Description                Mar Apr May Jun  Jul
---------- ------- ---------   ------------               --- --- --- ---  ---
Tra_id_000 ABC     Development 2 line summary of the work         100 50   10
Tra_id_004 ABC     Testing     2 line summary of the work             100
Tra_id_005 ABC     Other       2 line summary of the work                  1000
Tra_id_006 ABC     Testing     2 line summary of the work             1000

и:

Tracking # Project Activity  Description                Mar Apr May Jun  Jul
---------- ------- --------- ------------               --- --- --- ---  ---
Tra_id_004 ABC     Testing   2 line summary of the work             100
Tra_id_006 ABC     Testing   2 line summary of the work             1000

Я не был 'Я не уверен, что вы хотите суммировать каждый столбец даты отдельно, но вот пример индивидуальной суммы с использованием ваших данных:

($data | Measure-Object Jun, May -sum).sum

Это вернет сумму каждой строки, 1 на строку:

1350
200
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...