所以我有两列,分别是group_user_id和user_ids数组。最终目标是根据不同user_id之间的传递关系来组合user_id_list数组。
例如,当前我的数据格式如下
group_user_id user_id_list
123 123
456
345
234
567 567
678
456
并且我正在尝试根据关系 123-456-567 来实现这一目标,因此要从group_user_id 123和567中加入user_id_list。PS:user_id_list中user_id的顺序无关紧要。
group_user_id user_id_list
123 123
456
345
234
567
678
567 567
123
345
234
678
456
我知道使用graphDB之类的方法可能会更简单。但是,我坚持使用google-bigquery
答案 0 :(得分:1)
我只花了几分钟的时间在研究这个问题,但希望这就是您要寻找的,并且我还没有完全错过您的问题。
您在user_id_list
列上进行自联接,然后使用联接中新的group_id
字段联接回原始表:
SELECT distinct
v1.group_id v1_group_id,
v3.user_id_list v3_user_id_list
FROM
simon_test.test_data v1
JOIN simon_test.test_data v2
on v1.user_id_list = v2.user_id_list
join simon_test.test_data v3
on v2.group_id = v3.group_id
order by v1_group_id, v3_user_id_list;
以上内容产生:
|----------+--------------|
| group_id | user_id_list |
|----------+--------------|
| 123 | 123 |
| | 234 |
| | 345 |
| | 456 |
| | 567 |
| | 678 |
| 567 | 123 |
| | 234 |
| | 345 |
| | 456 |
| | 567 |
| | 678 |
|----------+--------------|