Pular para o conteúdo principal

contagem_aproximada_distinta

Retorna uma nova coluna, que estima a contagem aproximada de elementos distintos em uma coluna especificada ou em um grupo de colunas.

Sintaxe

Python
from pyspark.sql import functions as sf

sf.approx_count_distinct(col, rsd=None)

Parâmetros

Parâmetro

Tipo

Descrição

col

pyspark.sql.Column ou nome da coluna

O rótulo da coluna na qual serão contados os valores distintos.

rsd

flutuar, opcional

O desvio padrão relativo máximo permitido (default = 0,05). Se rsd < 0,01, seria mais eficiente usar count_distinct.

Devoluções

pyspark.sql.ColumnUm novo objeto Column representando a contagem aproximada de valores únicos.

Exemplos

Exemplo 1 : Contagem de valores distintos em um DataFrame de coluna única representando números inteiros

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

Exemplo 2 : Contagem de valores distintos em um DataFrame de coluna única representando strings

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

Exemplo 3 : Contando valores distintos em um DataFrame com múltiplas colunas

Python
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()
Output
+-------------------------------+
|approx_count_distinct(combined)|
+-------------------------------+
| 3|
+-------------------------------+

Exemplo 4 : Contagem de valores distintos com um desvio padrão relativo especificado

Python
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()
Output
+----------------+------------+
|with_default_rsd|with_rsd_0.1|
+----------------+------------+
| 95546| 102065|
+----------------+------------+