Power Query中DISTINCT与UNIQUE的区别及相关逻辑验证问询
Power BI 中 DISTINCT、UNIQUE 与 SQL 逻辑的对比
先澄清 SQL 中的逻辑误区
你提到的 select count(*) from table 其实是统计所有行(包含空值行),但 SQL 里不存在 count(distinct *) 的写法——DISTINCT 只能针对列或表达式,不能直接跟 *。正确的逻辑对比是:
COUNT(DISTINCT column):排除空值(NULL),只统计非空的唯一值,重复项不计,非重复项计1COUNT(*):统计所有行,不管列是否有空值,每行计1
Power BI 中 DISTINCT 的逻辑
Power BI 里的 DISTINCT 函数(常用写法是 COUNTROWS(DISTINCT(Table[Column])))和 SQL 的 COUNT(DISTINCT column) 逻辑不同:
- 它会包含空值(NULL)和空白字符串(""),空值会被算作一个独立的唯一项,空白字符串则是另一个。
- 重复值只计1,非重复值计1,这个计数逻辑和 SQL 一致,但空值处理相反。
Power BI 中 UNIQUE 的作用
UNIQUE 就是用来统计不重复值的数量,它和 DISTINCT 的核心逻辑几乎完全相同:
- 同样会统计空值和空白字符串,重复项只计1。
- 唯一区别是在直接查询模式下,UNIQUE 会尽量把计算推送到数据源执行,而 DISTINCT 可能在本地处理;如果是导入模式,两者的结果完全一致。
空值与空白值的统一处理
Power BI 中的 DISTINCT 和 UNIQUE 都会将空值(NULL)和空白字符串("")视为两个不同的唯一项,不会忽略任何一个。
内容的提问来源于stack exchange,提问作者variable
相关产品推荐
相关产品推荐

