1

我试图以列联表的形式获得 Hive 中几个分类变量的结果。

Var1 = {val_11, val_12, val_13}  
Var2 = {val_21, val_22, val_23}

结果应该是这样的

       val11    val12   val13      
------------------------------  
val21    x        x       x   
val22    x        x       x   
val23    x        x       x

其中 x - 各个值组合的计数。我的数据对于每个变量都有 3 个以上的分类值,大约 100 个。

所以,我尝试了几个步骤:

CREATE TABLE tmp_1 as SELECT Var1, COUNT (DISTINCT Var2) AS Var2_count FROM my_table GROUP BY Var1;  
CREATE TABLE tmp_2 as SELECT Var2, COUNT (DISTINCT Var2) AS Var1_count FROM my_table GROUP BY Var2;  

那会给我 tmp_1

val11 num_val21  
val11 num_val22  
val11 num_val23  
val12 num_val21  
val12 num_val22  
val12 num_val23  
val13 num_val21  
val13 num_val22  
val13 num_val23  

和 tmp_2 类似。

现在,从 tmp_1 中
选择 Var1,collect_set(Var2_count);
从 tmp_2 中选择 Var2、collect_set(Var1_count);

对于许多分类值和超过 2 个变量,是否有更好的方法、正确的方法?

4

0 回答 0