我试图以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个变量做更多?