Ak pracujete s BigQuery, SQL funkciu GROUP BY vám netreba podrobnejšie predstavovať. Pri analýze dát patrí medzi jednu z najpoužívanejších. Funguje tak, že v určených stĺpcoch zoskupuje riadky, ktoré majú rovnaké hodnoty. Na tieto riadky aplikuje agregované funkcie ako sú SUM, AVG, COUNT a ďalšie.
Čo ste možno nevedeli, funkcia GROUP BY má viacero variánt, ktoré rozširujú jej možnosti. Pozrieme sa na ne v nasledujúcich riadkoch.
GROUP BY groupable items
Alebo teda zoskupovanie podľa položiek prestavuje jednoduchý GROUP BY, ako ho používame zvyčajne. Dopyt združí riadky v tabuľke, ktoré majú spoločné hodnoty pre určité stĺpce.
GROUP BY GROUPING SETS
Je užitočný, ak chcete agregované hodnoty pre rôzne stĺpce, ale nechcete vykonávať viacero samostatných dopytov. Výsledky sa zobrazia v jednej tabuľke, čo zjednodušuje analýzu údajov.
Napríklad dopyt:
GROUP BY x UNION ALL GROUP BY y UNION ALL GROUP BY z
môžete nahradiť jednoduchým
GROUPING SETS(x,y,z)
Pohľad na rovnaké dáta ako v prvom príklade, ale z inej perspektívy.
* null hodnoty znamenajú, že daný stĺpec sa pri agregácii nepoužil. Neplatí to však pre prvý riadok. Dáta nie sú vyčistené, stĺpec medium obsahoval hodnotu null.
GROUP BY ROLLUP a GROUP BY CUBE
Majú podobnú funkcionalitu. Vytvárajú medzisúčty pre každú skupinu aj podskupinu údajov. To je ideálne pre hierarchickú agregáciu dát. Rozdiel je v tom, že GROUP BY CUBE generuje riadky medzisúčtu pre všetky permutácie zoskupení, čo sa hodí pre komplexné analýzy, odhaľovanie vzťahov v rôznych dimenziách údajov a hlbšie pochopenie dát.
Príklad sme zjednodušili, aby bol výstup dopytu lepšie čitateľný.
* riadky s null hodnotami označujú medzisúčty. Prvý riadok je celkový súčet.
Veríme, že vás tento stručný prehľad možností GROUP BY funkcie inšpiroval preskúmať ju podrobnejšie. Kompletnú dokumentáciu môžete nájsť na tomto linku.
Budeme veľmi radi, ak sa s nami podelíte o to, ako využívate funkciu GROUP BY vy a napíšete nám vaše tipy a triky. ✌
* UPDATE: V BigQuery máte možnosť využiť novú klauzulu, v ktorej namiesto GROUP BY 1,2,3,…n stačí napísať GROUP BY ALL.