Bisher gibt es in BigQuery noch keine gute Möglichkeit, dies zu tun, aber Sie können dies anhand der folgenden Idee tun
Schritt 1
Führen Sie die folgende Abfrage
ausSELECT '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]
)
Als Ergebnis erhalten Sie eine Zeichenfolge wie unten (sie ist aus Gründen der Lesbarkeit unten formatiert)
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]
Schritt 2
Führen Sie einfach die oben zusammengestellte Abfrage
ausDas Ergebnis wird wie unten aussehen
group d_date1 d_date2
group1 15 30
Anmerkung 1 :Schritt 1 ist hilfreich, wenn Sie viele Gruppen drehen müssen, so dass zu viel manuelle Arbeit erforderlich ist. In diesem Fall hilft Ihnen Schritt 1 bei der Generierung Ihrer Anfrage
Anmerkung 2 :Diese Schritte lassen sich problemlos in jedem Client Ihrer Wahl implementieren oder Sie können sie einfach in der BigQuery-Web-UI ausführen
Weitere Informationen zum Pivotieren finden Sie in meinen anderen Beiträgen.
Wie skaliere ich Pivoting in BigQuery?
Bitte beachten Sie – es gibt eine Begrenzung von 10.000 Spalten pro Tabelle – Sie sind also auf 10.000 Organisationen beschränkt.
Sie können unten auch vereinfachte Beispiele sehen (falls das obige zu komplex/ausführlich ist):
Wie transponiere ich Zeilen in Spalten mit großen Datenmengen in BigQuery/SQL?
Wie erstelle ich Dummy-Variablenspalten für Tausende von Kategorien in Google BigQuery?
Wiederkehrende Felder in BigQuery drehen