我想计算Hive中几列的基数。
例如,这张table就像
------------------------------------------
| 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
在每列上。然而,这似乎是一个可怕的方式。那么,是否可以只扫描一次表来计算这些值呢?
1条答案
按热度按时间jum4pzuy1#
如果您只需要每个列的唯一计数,则可以使用
count distinct
```select
count(distinct a),
count(distinct c),
count(distinct d)
from mytable