猪拉丁内部加入执行共同出现矩阵

时间:2016-10-14 19:12:02

标签: sql apache-pig self-join unpivot

我将在Stack overflow

中已经关闭已经关闭的案例

Making a co-occurrence matrix from mysql database in MYSQL, PHP or R

在sql中创建共生矩阵有一个很好的解决方案:

SELECT   a.uid first_uid, b.uid second_uid, COUNT(*) cnt
FROM     my_table a JOIN my_table b ON b.id = a.id AND b.uid > a.uid
GROUP BY a.uid, b.uid

给出一张表:

id       uid
1         a
1         b
1         c
2         a
2         b
2         c
3         b
3         c 

会产生这样的共生矩阵:

first_uid    second_uid    cnt
     a           b           2   
     a           c           2   
     b           c           3   

这也可以使用SQL server unpivot命令完成。 我想知道如何用Pig Latin实现类似的解决方案。特别是有一种方法可以在Pig Latin中加入不等式。

使用PIG

获得共生矩阵还有哪些其他替代方法

1 个答案:

答案 0 :(得分:0)

您问题的关键部分似乎是:

  

有没有办法在Pig \

中进行不等式的连接

答案是肯定的,但并不总是很好。

接近这种方法的方法是先没有条件地加入,然后在不等式上过滤结果。

通常猪可以将过滤器向上推一点以防止临时结果爆炸,但我不确定这通常有多高效。