Hive中的列联表/交叉表

时间:2013-12-03 22:32:25

标签: hive hiveql contingency

我试图以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类似。

现在,
    SELECT Var1,collect_set(Var2_count)FROM tmp_1;
    SELECT Var2,collect_set(Var1_count)FROM tmp_2;

是否有更好的方法,正确的方法为许多分类值和2个变量做更多?

0 个答案:

没有答案