メインコンテンツまでスキップ

約トップk

文字列、ブール値、日付、タイムスタンプ、または数値の列col内で最も頻繁に出現する上位kの項目値とその概算数を返します。 各カウントの誤差は最大2.0 * numRows / maxItemsTrackedになる可能性があります ( numRowsは行の合計数)。k (自信: 5) とmaxItemsTracked (自信: 10000) は両方とも整数です。 maxItemsTrackedの値が高ければ高いほど、メモリ使用量は増加しますが、精度は向上します。異なる項目がmaxItemsTracked未満の列では、正確な項目数が生成されます。NULL 値は結果に独自の値として含まれます。

結果は、 item個の値(元の入力タイプ)とその出現回数count (long タイプ)を含む構造体の配列として返され、カウントの降順で並べ替えられます。

構文

Python
from pyspark.databricks.sql import functions as dbsf

dbsf.approx_top_k(col, k=5, maxItemsTracked=10000)

パラメーター

パラメーター

Type

説明

col

pyspark.sql.Column または列名

上位 k 項目を検索する列。

k

pyspark.sql.Column または int(オプション)

返される上位アイテムの数。デフォルトは 5 です。

maxItemsTracked

pyspark.sql.Column または int(オプション)

追跡する個別のアイテムの最大数。デフォルトは 10000 です。値を大きくすると精度は向上しますが、メモリ使用量は増加します。

Python
from pyspark.sql.functions import col
from pyspark.databricks.sql.functions import approx_top_k
item = (col("id") % 3).alias("item")
df = spark.range(0, 1000, 1, 1).select(item)
df.select(
approx_top_k("item", 5).alias("top_k")
).printSchema()
Output
root
|-- top_k: array (nullable = false)
| |-- element: struct (containsNull = false)
| | |-- item: long (nullable = true)
| | |-- count: long (nullable = false)