Schätzen von Perzentilwerten¶
Snowflake verwendet eine verbesserte Version des t-Digest-Algorithmus, eine speicherplatz- und zeiteffiziente Methode zum Schätzen von ungefähren Perzentilwerten in Datasets.
Unter diesem Thema:
Übersicht¶
Snowflake stellt eine verbesserte Version der Implementierung nach den Dokumenten zum t-Digest-Algorithmus von Dunning und Ertl bereit. Die Umsetzung erfolgte unter Verwendung der APPROX_PERCENTILE-Funktionsfamilie.
Wie dokumentiert hat der Algorithmus einen konstanten relativen Fehler. Beachten Sie, dass sich der Algorithmus auf umfangreiche empirische Analysen stützt, aber keinen strengen Beweis für eine bestimmte Genauigkeit liefert.
SQL-Funktionen¶
Die folgenden Aggregationsfunktionen sind für die Verwendung von t-Digest zur Approximation von Perzentilwerten vorgesehen:
APPROX_PERCENTILE: Gibt eine Approximation des gewünschten Perzentilwerts zurück.
APPROX_PERCENTILE_ACCUMULATE: Überspringt den letzten Schätzschritt und gibt stattdessen den mittleren t-Digest-Status am Ende einer Aggregation zurück.
APPROX_PERCENTILE_COMBINE. Kombiniert mehrere Eingabestatus zu einem einzigen Ausgabestatus (d. h. sie werden zusammengeführt).
APPROX_PERCENTILE_ESTIMATE: Berechnet die Perzentilschätzung eines t-Digest-Status mithilfe von APPROX_PERCENTILE_ACCUMULATE oder APPROX_PERCENTILE_COMBINE.
Implementierungsdetails¶
Die Schätzung verwendet eine konstante Menge an Speicherplatz, unabhängig von der Größe der Eingabe.
Der t-Digest-Status ist unabhängig vom Perzentilwert. Dies ermöglicht es, den t-Digest-Status einmalig zu berechnen und dann den Status für mehrere Perzentilwerte abzufragen.