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.