【发布时间】:2018-05-23 18:45:42
【问题描述】:
我有一个如下所示的文件;
- Visitor ID,Revenue,Channel,Flight
- 1234,100,Email,BA123
- 2345,200,PPC,BA112
- 456,150,Email,BA456
我需要生成一个包含;
The count of distinct Visitor IDs (3)
The total revenue (450)
The count of each Channel
Email 2
PPC 2
The count of each Flight
BA123 1
BA112 1
BA456 1
到目前为止,我有以下代码,但是在 350MB 文件上执行此代码时,它需要的时间太长,并且在某些情况下会破坏 memory limit。因为我必须在multiple columns 上运行这个function,所以它会多次遍历文件。理想情况下,我需要在一个文件传递中执行此操作。
$file = 'log.txt'
function GroupBy($columnName)
{
$objects = Import-Csv -Delimiter "`t" $file | Group-Object $columnName |
Select-Object @{n=$columnName;e={$_.Group[0].$columnName}}, Count
for($i=0;$i -lt $objects.count;$I++) {
$line += $columnName +"|"+$objects[$I]."$columnName" +"|Count|"+ $objects[$I].'Count' + $OFS
}
return $line
}
$finalOutput += GroupBy "Channel"
$finalOutput += GroupBy "Flight"
Write-Host $finalOutput
任何帮助将不胜感激。
谢谢,
克雷格
【问题讨论】:
标签: powershell