Verwenden Sie tablefunc für mehrspaltiges Pivotieren
Frage:
Wie verwende ich tablefunc, um mehrere Variablen statt nur Zeilennamen zu schwenken?
Hintergrund:
Datensätze mit Milliarden von Zeilen müssen in ein breites Format umgewandelt werden, um mehrere Messungen an zahlreichen Entitäten effizient vergleichen zu können. Diese Messungen variieren stark und erfordern ein häufiges Pivotieren der Daten in ein breites Format.
Frage:
Der Standard-Tablefunc-Ansatz geht davon aus, dass Attributspalten (auch „zusätzliche“ Spalten genannt) für jeden Zeilennamen konsistent sind. Wenn für eine Attributspalte innerhalb eines Zeilennamens mehrere Werte vorhanden sind, wird nur der erste Wert gemeldet, was zu unvollständigen Daten in der Pivot-Ausgabe führt.
Lösung:
Um diese Einschränkung zu überwinden, müssen Sie die Abfragespalten neu anordnen und die Attributspalte vor der Zeilennamenspalte platzieren. Dadurch wird sichergestellt, dass die Attributwerte aus der ersten Zeile jeder Zeilennamenpartition aufgefüllt werden und somit alle verschiedenen Attributwerte für diesen Zeilennamen erfasst werden.
Code:
<code class="language-sql">SELECT * FROM crosstab( 'SELECT entity, timeof, status, ct FROM t4 ORDER BY entity' , 'VALUES (1), (0)' ) AS ct ( "Attribute" character , "Section" timestamp , "status_1" int , "status_0" int );</code>
Zusammenfassung:
Durch Umkehren der Reihenfolge der ersten beiden Spalten (Attributspalten vor Zeilennamenspalten) kann tablefunc effektiv auf mehreren Variablen schwenken und so eine vollständige Pivot-Ausgabe bereitstellen. Dieser Ansatz funktioniert gut, wenn der Datensatz eine unterschiedliche Anzahl von Attributwerten pro Zeilenname enthält.
Das obige ist der detaillierte Inhalt vonWie kann Tablefunc mit dem Pivotieren mehrerer Variablen umgehen, um Datenverlust zu vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!