다음을 통해 공유


approx_count_distinct

지정된 열 또는 열 그룹에 있는 요소의 대략적인 고유 개수를 예측하는 새 열을 반환합니다.

문법

from pyspark.sql import functions as sf

sf.approx_count_distinct(col, rsd=None)

매개 변수

매개 변수 유형 Description
col pyspark.sql.Column 또는 열 이름 고유 값을 계산할 열의 레이블입니다.
rsd float, 선택 사항 허용되는 최대 상대 표준 편차(기본값 = 0.05)입니다. rsd < 0.01이면 count_distinct 사용하는 것이 더 효율적입니다.

Returns

pyspark.sql.Column: 대략적인 고유 개수를 나타내는 새 Column 개체입니다.

예시

예제 1: 정수를 나타내는 단일 열 DataFrame의 고유 값 계산

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

예제 2: 문자열을 나타내는 단일 열 DataFrame의 고유 값 계산

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

예제 3: 여러 열이 있는 DataFrame의 고유 값 계산

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

예제 4: 지정된 상대 표준 편차를 사용하여 고유 값 계산

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