我有一个测试输入csv文件,如下:
ID;Product;Price;Discount;Level
1;Alpha;23.00;0.03;A
2;Bravo;17.00;0.01;A
3;Charlie;11.00;0.05;A
4;Delta;17.00;0.05;A
5;Echo;29.00;0.07;A
6;Foxtrot;11.00;0.01;A
7;Golf;11.00;0.01;A
1;Hotel;53.00;0.11;B
2;India;53.00;0.13;B
3;Juliet;61.00;0.11;B
1;Kilo;79.00;0.23;C
2;Lima;89.00;0.23;C
3;Mike;97.00;0.29;C
4;November;83.00;0.17;C
5;Oscar;79.00;0.11;C
我想生成以下输出文件:
ID;Product;Price;Discount;Level
1;Alpha;23.00;0.03;A
5;Echo;29.00;0.07;A
2;India;53.00;0.13;B
3;Juliet;61.00;0.11;B
2;Lima;89.00;0.23;C
3;Mike;97.00;0.29;C
也就是说,对于每个级别,我想选择按价格排序的前两行,然后是折扣。例如,对于 level B
,我想要Juliet
而India
不是Juliet
and Hotel
。
我有以下代码片段并不能完全交付!
$input = '.\TestInput.csv'
$products = @(Import-CSV -Path $input -Delimiter ";")
$levels = $products |
Group-Object -Property Level -AsHashTable
$sales = $levels.GetEnumerator() |
Sort-Object -Property @{ Expression = { [int]($_.Price) } ; Descending = $true },
@{ Expression = { [int]($_.Discount) } ; Descending = $true } |
Select-Object -first 2
$output = '.\TestOutput.csv'
$sales | Export-Csv -Path $output -Delimiter ";" -NoTypeInformation
我错过了什么?