Examples/Grouping/TimestampBucket.ps1

try {Import-Module $PSScriptRoot\..\..\ImportExcel.psd1} catch {throw ; return}
$data = ConvertFrom-Csv @"
Timestamp,Tenant
10/29/2018 3:00:00.123,1
10/29/2018 3:00:10.456,1
10/29/2018 3:01:20.389,1
10/29/2018 3:00:30.222,1
10/29/2018 3:00:40.143,1
10/29/2018 3:00:50.809,1
10/29/2018 3:01:00.193,1
10/29/2018 3:01:10.555,1
10/29/2018 3:01:20.739,1
10/29/2018 3:01:30.912,1
10/29/2018 3:01:40.989,1
10/29/2018 3:01:50.545,1
10/29/2018 3:02:00.999,1
"@
 | Select-Object @{n = 'Timestamp'; e = {Get-date $_.timestamp}}, tenant, @{n = 'Bucket'; e = { - (Get-date $_.timestamp).Second % 30}}

#Get rid of pre-exisiting sheet
$xlSourcefile = "$env:TEMP\ImportExcelExample.xlsx"
Write-Verbose -Verbose -Message  "Save location: $xlSourcefile"
Remove-Item $xlSourcefile -ErrorAction Ignore

$pivotDefParams = @{
    PivotTableName = 'Timestamp Buckets'
    PivotRows      = @('Timestamp', 'Tenant')
    PivotData      = @{'Bucket' = 'count'}
    GroupDateRow   = 'TimeStamp'
    GroupDatePart  = @('Hours', 'Minutes')
    Activate       = $true
}

$excelParams = @{
    PivotTableDefinition = New-PivotTableDefinition @pivotDefParams
    Path                 = $xlSourcefile
    WorkSheetname        = "Log Data"
    AutoSize             = $true
    AutoFilter           = $true
    Show                 = $true
}

$data | Export-Excel @excelParams