Объедините две или более строки в CSV, используя PowerShell - PullRequest
0 голосов
/ 20 декабря 2011

Я получаю файл от одного из наших клиентов, который выглядит следующим образом: (я добавил к нему заголовки для упрощения обработки).Пример ввода:

PlanID,Date,Transaction,Type,Ticker,Amount,Cash
01,121211,div,mf,fjk,25,cash
01,121211,div,mf,fjk,30,cash
01.121211,buy,mf,fjk,55,cash
02,121211,div,sd,ejd,10,cash
02,121211,div,sd,ejd,15,cash
02,121211,buy,sd,ejd,25,cash

Мне нужен способ объединить все строки с Transaction = 'div', суммируя их количество для каждого PlanID.Вот как я хочу, чтобы мой вывод выглядел так:

Пример вывода:

PlanID,Date,Transaction,Type,Ticker,Amount,Cash
01,121211,div,mf,fjk,55,cash
01.121211,buy,mf,fjk,55,cash
02,121211,div,sd,ejd,25,cash
02,121211,buy,sd,ejd,25,cash

Итак, перед строкой покупки есть только одна строка div (с суммированной суммой всегда будетсумма покупки).Любые идеи, как подойти к этому будет принята с благодарностью?

Большое спасибо заранее !!

1 Ответ

4 голосов
/ 21 декабря 2011
Import-Csv input.csv | Group-Object planid, transaction | 
Select @{n="PlanId";E={($_.name -split ',')[0]}},
       @{n="Date";e={($_.group)[0].date}}, 
       @{n="Transaction";E={(($_.name -split ',')[1]).trim()}},
       @{n="Type";e={($_.group)[0].type}},  
       @{n="Ticker";e={($_.group)[0].ticker}}, 
       @{n="Amount";e={($_.group | measure-object amount -sum).sum}},
       @{n="Cash";e={($_.group)[0].cash}} |
Export-Csv output.csv -NoTypeInformation

Шаги:

  1. Импорт файла input.csv
  2. Группировка объектов по planid и транзакции
  3. Выберитесвойства, которые вы хотите указать в выводе
    1. PlanId = все, что осталось от запятой в поле имени объекта, возвращаемого group-object
    2. Transaction = все, что находится справа от запятой в поле имениобъекта, возвращаемого group-object
    3. Amount = сумма всех сумм для сгруппированного объекта
    4. Date = дата для сгруппированного объекта
    5. Type = тип для сгруппированного объекта
    6. Ticker = тикер для сгруппированного объекта
    7. Cash = денежные средства за сгруппированный объект
  4. Экспорт объектов в output.csv (добавьте notypeinformation, чтобы убрать верхнюю строку свведите информацию)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...