Udostępnij przez


approx_count_distinct

Zwraca nową kolumnę, która szacuje przybliżoną liczbę unikatowych elementów w określonej kolumnie lub grupie kolumn.

Składnia

from pyspark.sql import functions as sf

sf.approx_count_distinct(col, rsd=None)

Parametry

Parameter Typ Description
col pyspark.sql.Column lub nazwa kolumny Etykieta kolumny do zliczenia unikatowych wartości.
rsd zmiennoprzecinkowy, opcjonalny Maksymalne dozwolone względne odchylenie standardowe (wartość domyślna = 0,05). Jeśli rsd < 0.01, bardziej wydajne byłoby użycie count_distinct.

Zwraca

pyspark.sql.Column: nowy obiekt Kolumna reprezentujący przybliżoną unikatową liczbę.

Przykłady

Przykład 1. Zliczanie unikatowych wartości w pojedynczej kolumnie ramki danych reprezentującej liczby całkowite

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|
+----------------------------+

Przykład 2. Zliczanie unikatowych wartości w pojedynczej kolumnie ramki danych reprezentującej ciągi

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|
+----------------------------+

Przykład 3. Zliczanie unikatowych wartości w ramce danych z wieloma kolumnami

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|
+-------------------------------+

Przykład 4. Zliczanie unikatowych wartości z określonym względnym odchyleniem standardowym

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|
+----------------+------------+