countDistinct 和 distinct.count 之间的区别



为什么我得到不同的..agg(countDistinct("member_id") as "count")..distinct.count输出?select count(distinct member_id)select distinct count(member_id)之间的区别相同吗?

为什么我得到不同的输出..agg(countDistinct("member_id"( 作为 "count"( 和 ..独特计数?

因为.distinct.count是一样的:

SELECT COUNT(*) FROM (SELECT DISTINCT member_id FROM table)

虽然..agg(countDistinct("member_id") as "count")

SELECT COUNT(DISTINCT member_id) FROM table

COUNT(*)使用的规则与遇到空值时COUNT(column)不同的规则。

df.agg(countDistinct("member_id") as "count")

返回member_id列的非重复值数,忽略所有其他列,而

df.distinct.count

将计算数据帧中不同记录的数量 - 其中"不同"表示所有列的值相同。

因此,例如,数据帧:

+-----------+---------+
|member_name|member_id|
+-----------+---------+
|          a|        1|
|          b|        1|
|          b|        1|
+-----------+---------+

只有一个不同的member_id值,但有两个不同的记录,因此agg选项将返回 1,而后者将返回 2。

第一个命令:

DF.agg(countDistinct("member_id") as "count")
返回

select count distinct(member_id) from DF 相同的返回。

第二个命令:

DF.distinct.count

实际上是获取不同的记录或从 DF 中删除所有重复项,然后进行计数。

最新更新