$csvFilePaths = Get-ChildItem ".\20*_*_daily.csv"
$data = $csvFilePaths | ForEach-Object { Import-Csv $_ } | Select-Object *,@{Name="FilePath";Expression={$_.PSPath}}
$dailyDiff = $data | ForEach-Object {
$date = [DateTime]::ParseExact($_.Date, "yyyy/MM/dd", $null)
if($_.FirstEventTime) {
$firstTime = $date + [TimeSpan]::Parse($_.FirstEventTime.Trim())
}
if($_.LastEventTime) {
$lastTime = $date + [TimeSpan]::Parse($_.LastEventTime.Trim())
}
$diff = New-TimeSpan $firstTime $lastTime
$diff = $diff.Subtract([TimeSpan]::FromHours(1))
New-Object psobject -Property @{
Month = "{0:yyyy/MM}" -f $firstTime
User = $_.User
Diff = $diff
}
}
$monthlyDiff = $dailyDiff | Group-Object Month, User | ForEach-Object {
$diffs = $_.Group.Diff.TotalHours
$count = $diffs.Count
$avg = $diffs | Measure-Object -Average | Select-Object -ExpandProperty Average
$max = $diffs | Measure-Object -Maximum | Select-Object -ExpandProperty Maximum
$min = $diffs | Measure-Object -Minimum | Select-Object -ExpandProperty Minimum
$sum = $diffs | Measure-Object -Sum | Select-Object -ExpandProperty Sum
New-Object psobject -Property @{
Month = $_.Name.Split(',')[0]
User = $_.Name.Split(',')[1]
Count = $count
AvgDiff = [Math]::Round($avg, 1)
MaxDiff = [Math]::Round($max, 1)
MinDiff = [Math]::Round($min, 1)
SumDiff = [Math]::Round($sum, 1)
}
}
$monthlyDiff |
Select-Object Month, User, Count, AvgDiff, MaxDiff, SumDiff, MinDiff |
Export-Csv -Path "all_member.csv" -NoTypeInformation
"Month","User","Count","AvgDiff","MaxDiff","SumDiff","MinDiff"
"2023/04"," xcendou","14","9.5","15.5","132.5","0.1"
"2023/04"," xmyokosm","16","4.4","4.4","70.9","4.4"