approx_top_k toplama işlevi

Şunlar için geçerlidir:onay işareti evet olarak işaretlenmiş Databricks SQL onay işareti evet olarak işaretlenmiş Databricks Runtime 10.4 LTS ve üzeri

En sık oluşan öğe değerlerinin yanı sıra, bir k içindeki yaklaşık sayılarıyla birlikte ilk expr öğe değerlerini verir.

Sözdizimi

approx_top_k(expr[, k[, maxItemsTracked]]) [FILTER ( WHERE cond ) ]

Bu işlev, yan tümcesi kullanılarak OVER pencere işlevi olarak da çağrılabilir.

Tartışmalar

  • expr: STRING, BOOLEAN, DATE, TIMESTAMP veya sayısal türün ifadesi.
  • k: 0'dan büyük, isteğe bağlı bir tam sayı sabiti. Belirtilmezse k , varsayılan olarak olur 5.
  • maxItemsTracked: İsteğe bağlı, k değerine eşit veya daha büyük bir Tamsayı değişmez değeri. Belirtilmezse maxItemsTracked , varsayılan olarak olur 10000.
  • cond: İsteğe bağlı bir boole ifadesi, toplama için kullanılan satırları filtreler.

İadeler

Sonuçlar STRUCT türünde bir ARRAY olarak döndürülür; burada her STRUCT değeri için bir item alanı (özgün giriş türüyle) ve yaklaşık yineleme sayısıyla count alanı (LONG türünde) içerir. Dizi azalan düzende sıralanır count .

Toplama işlevi, bir ifadede en sık rastlanan k öğe değerlerini ve bunların yaklaşık sayımlarını expr getirir. Her sayıdaki hata 2.0 * numRows / maxItemsTracked kadar olabilir; burada numRows toplam satır sayısıdır. Daha yüksek maxItemsTracked değerleri, artan bellek kullanımı maliyetinde daha iyi doğruluk sağlar. Ayrı öğelerden daha maxItemsTracked az öğe içeren ifadeler, tam öğe sayılarını verir. Sonuçlar, kendi öğesi olarak NULL değerlerini içerir.

Yaygın hata koşulları

Örnekler

> SELECT approx_top_k(expr) FROM VALUES (0), (0), (1), (1), (2), (3), (4), (4) AS tab(expr);
 [{'item':4,'count':2},{'item':1,'count':2},{'item':0,'count':2},{'item':3,'count':1},{'item':2,'count':1}]

> SELECT approx_top_k(expr, 2) FROM VALUES ('a'), ('b'), ('c'), ('c'), ('c'), ('c'), ('d'), ('d') AS tab(expr);
 [{'item':'c','count':4},{'item':'d','count':2}]

> SELECT approx_top_k(expr, 10, 100) FROM VALUES (0), (1), (1), (2), (2), (2) AS tab(expr);
 [{'item':2,'count':3},{'item':1,'count':2},{'item':0,'count':1}]