約数
指定された列または列のグループ内の要素のおおよその個別数を推定する新しい列を返します。
構文
Python
from pyspark.sql import functions as sf
sf.approx_count_distinct(col, rsd=None)
パラメーター
パラメーター | Type | 説明 |
|---|---|---|
|
| 一意の値をカウントする列のラベル。 |
| float、オプション | 許容される最大相対標準偏差 (デフォルト = 0.05)。rsd < 0.01 の場合は、count_distinct を使用する方が効率的です。 |
戻り値
pyspark.sql.Column: おおよその一意のカウントを表す新しい Column オブジェクト。
例
例1 : 整数を表す単一列DataFrame内の重複しない値を数える
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|
+----------------------------+
例2 : 文字列を表す単一列DataFrame内の重複しない値を数える
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|
+----------------------------+
例3 : 複数の列を持つDataFrame内の重複しない値を数える
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|
+-------------------------------+
例4 : 指定された相対標準偏差を持つ異なる値を数える
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|
+----------------+------------+