private/Get-AggregatedStats.ps1

function Get-AggregatedStats {
    param([string]$Dir, [int]$currentDepth = 1, [int]$Depth = [int]::MaxValue)
    $di = [System.IO.DirectoryInfo]::new($Dir)
    $count = $di.GetFiles("*.dat").Length + $di.GetFiles("*.json").Length
    $hasSubBuckets = $false

    foreach ($child in $di.GetDirectories()) {
        if ($child.Name -eq ".buckets") { continue }
        $hasSubBuckets = $true
        if ($currentDepth -lt $Depth) {
            $childStats = Get-AggregatedStats -Dir $child.FullName -currentDepth ($currentDepth + 1) -Depth $Depth
            $count += $childStats.TotalCount
        }
    }

    [PSCustomObject]@{ TotalCount = $count; HasSubBuckets = $hasSubBuckets }
}