Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Transponieren von großen Abfragen

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

aus
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]
)

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

aus

Das 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