V BigQuery zatím neexistuje žádný pěkný způsob, jak to udělat, ale můžete to udělat podle níže uvedeného nápadu
Krok 1
Spustit pod dotazem
SELECT 'SELECT [group], ' +
GROUP_CONCAT_UNQUOTED(
'SUM(IF([date] = "' + [date] + '", value, NULL)) as [d_' + REPLACE([date], '/', '_') + ']'
)
+ ' FROM YourTable GROUP BY [group] ORDER BY [group]'
FROM (
SELECT [date] FROM YourTable GROUP BY [date] ORDER BY [date]
)
Výsledkem je, že získáte řetězec jako níže (z důvodu čitelnosti je formátován níže)
SELECT
[group],
SUM(IF([date] = "date1", value, NULL)) AS [d_date1],
SUM(IF([date] = "date2", value, NULL)) AS [d_date2]
FROM YourTable
GROUP BY [group]
ORDER BY [group]
Krok 2
Stačí spustit nad složeným dotazem
Výsledek bude jako níže
group d_date1 d_date2
group1 15 30
Poznámka 1 :Krok 1 je užitečný, pokud máte mnoho skupin, na které je potřeba tolik manuální práce. V tomto případě – Krok 1 vám pomůže vygenerovat dotaz
Poznámka 2 :tyto kroky lze snadno implementovat v libovolném klientovi podle vašeho výběru nebo je můžete jednoduše spustit ve webovém uživatelském rozhraní BigQuery
Více o pivotování můžete vidět v mých dalších příspěvcích.
Jak škálovat Pivoting v BigQuery?
Upozorňujeme – existuje omezení na 10 000 sloupců na tabulku – takže jste omezeni na 10 000 organizací.
Níže můžete také vidět zjednodušené příklady (pokud je výše uvedený příliš složitý/podrobný):
Jak v BigQuery/SQL transponovat řádky do sloupců s velkým množstvím dat?
Jak vytvořit fiktivní sloupce proměnných pro tisíce kategorií v Google BigQuery?
Pivot opakovaných polí v BigQuery