approx_count_distinct

Belirtilen sütundaki veya sütun grubundaki öğelerin yaklaşık ayrı sayısını tahmin eden yeni bir Sütun döndürür.

Sözdizimi

from pyspark.sql import functions as sf

sf.approx_count_distinct(col, rsd=None)

Parametreler

Parametre Türü Description
col pyspark.sql.Column veya sütun adı içinde ayrı değerleri saymak için sütunun etiketi.
rsd float, isteğe bağlı İzin verilen en yüksek göreli standart sapma (varsayılan = 0,05). rsd < 0,01 ise, count_distinct kullanmak daha verimli olacaktır.

İade

pyspark.sql.Column: Yaklaşık benzersiz sayıyı temsil eden yeni bir Sütun nesnesi.

Örnekler

Örnek 1: Tamsayıları temsil eden tek bir sütundaki DataFrame'deki ayrı değerleri sayma

from pyspark.sql import functions as sf
df = spark.createDataFrame([1,2,2,3], "int")
df.agg(sf.approx_count_distinct("value")).show()
+----------------------------+
|approx_count_distinct(value)|
+----------------------------+
|                           3|
+----------------------------+

Örnek 2: Dizeleri temsil eden tek bir sütundaki DataFrame'deki ayrı değerleri sayma

from pyspark.sql import functions as sf
df = spark.createDataFrame([("apple",), ("orange",), ("apple",), ("banana",)], ['fruit'])
df.agg(sf.approx_count_distinct("fruit")).show()
+----------------------------+
|approx_count_distinct(fruit)|
+----------------------------+
|                           3|
+----------------------------+

Örnek 3: Birden çok sütun içeren bir DataFrame'de ayrı değerleri sayma

from pyspark.sql import functions as sf
df = spark.createDataFrame(
    [("Alice", 1), ("Alice", 2), ("Bob", 3), ("Bob", 3)], ["name", "value"])
df = df.withColumn("combined", sf.struct("name", "value"))
df.agg(sf.approx_count_distinct(df.combined)).show()
+-------------------------------+
|approx_count_distinct(combined)|
+-------------------------------+
|                              3|
+-------------------------------+

Örnek 4: Belirtilen göreli standart sapmayla ayrı değerleri sayma

from pyspark.sql import functions as sf
spark.range(100000).agg(
    sf.approx_count_distinct("id").alias('with_default_rsd'),
    sf.approx_count_distinct("id", 0.1).alias('with_rsd_0.1')
).show()
+----------------+------------+
|with_default_rsd|with_rsd_0.1|
+----------------+------------+
|           95546|      102065|
+----------------+------------+