我想计算Hive中几列的基数。
例如,表格就像
------------------------------------------
| A | B | C | D |
------------------------------------------
| Windows | C:\Users\aa | 0 | 1234 |
------------------------------------------
| Windows | D:\Videos | 1 | 2345 |
------------------------------------------
| Linux | /usr/local | 0 | 1234 |
------------------------------------------
| OS X | /Users/aa | 0 | 5678 |
------------------------------------------
A,C,D列的基数为3,2,3。
天真的解决方案是在每列上运行SELECT DISTINCT
。然而,这似乎是一种可怕的方式。那么可以通过仅扫描一次表来计算这些值吗?
答案 0 :(得分:0)
如果您只想要每列的唯一计数,可以使用count distinct
select
count(distinct a),
count(distinct c),
count(distinct d)
from mytable