Členenie (partition)
Členenie zoskupí riadky podľa stĺpca a agreguje každú skupinu — dáta pre koláčový alebo stĺpcový graf. Skupiny sú zoradené od najväčšej:
use App\Models\User;
use RoundlyConsulting\Metrics\Facades\Metrics;
Metrics::partition()->count(User::query(), 'plan')->toArray();
// result => ['partitions' => ['pro' => 120.0, 'free' => 80.0, ...]] // largest firstsum(), average(), max() a min() prijímajú rovnaké argumenty — zoskupte podľa jedného stĺpca a agregujte iný:
// Revenue per country this month
Metrics::partition()->sum(Order::query(), 'country', 'total')->range('MTD')->toArray();Top N a skupina „Other“
Členenie obmedzte na najväčšie skupiny a zvyšok zlúčte do jednej, aby graf zostal čitateľný:
Metrics::partition()
->count(User::query(), 'country')
->limit(5) // 5 groups + "Other"
->otherLabel('Elsewhere') // optional; defaults to the translatable "Other"
->toArray();
// result => ['partitions' => ['DE' => 120.0, ..., 'Elsewhere' => 35.0]]Zvyšková skupina vznikne zlúčením zvyšku vlastnou agregáciou metriky: pri count() a sum() súčtom, pri max() najväčšou hodnotou, pri min() najmenšou a pri average() priemerom všetkých zostávajúcich riadkov (nie priemerom priemerov skupín). Skutočná skupina, ktorej kľúč sa zhoduje s popisom zvyškovej skupiny, nikdy nepatrí medzi top N — pridá sa do zvyšku, takže sa žiadna skupina neprepíše.
Predvolený popis pochádza z metrics.partition.other_label („Other“) a prechádza prekladačom Laravelu; otherLabel() ho prepíše pre konkrétnu metriku.
Skupina NULL
// Without a value column, count() counts rows — the NULL group is keyed ''
Metrics::partition()->count(User::query(), 'plan')->toArray();
// result => ['partitions' => ['pro' => 120.0, 'free' => 80.0, '' => 12.0]]Vlastné popisy
Surové kľúče skupín — kód krajiny, id cudzieho kľúča — namapujte na zobrazované popisy cez labelUsing(). Surové kľúče zostanú v partitions a popisy sa objavia pod ďalším kľúčom labels. Popisy sa vyhodnocujú pri každom čítaní a nikdy sa necachujú; skupina „Other“ si ponechá vlastný popis a resolveru sa nikdy neodovzdá:
Metrics::partition()
->count(User::query(), 'country_id')
->labelUsing(fn (int|string $key): string => Country::name($key))
->toArray();
// result => ['partitions' => ['1' => 40.0, ...], 'labels' => ['1' => 'Germany', ...]]Čítanie výsledku
- partitions() — kľúč skupiny → hodnota.
- keys() — surové kľúče skupín bez ohľadu na resolver popisov.
- labels() — popisy z resolvera, ak je nastavený, inak surové kľúče.
- values() — hodnoty v poradí.
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.