我正在开发一种产品,用户可以阅读分支故事。在BI事件中,我们仅捕获用户选择一个节点而不是另一个节点的决策节点。我们还有一个故事内容的主数据,其中包含树的信息。所以,我们的表格如下:
user_events:
user_id link_id
1000 1
1000 7
2000 2
2000 6
因此,具有user_id 1000的用户点击了链接1和7,其中用户2000点击了链接2和6.根据这一点,两个用户都遍历了不同的节点路径。静态路径详细信息存储在分层数据中,如下所示:
链接信息:
link_id from_node to_node
1 101 102
2 101 103
3 102 104
4 104 105
5 103 106
6 106 107
7 105 107
8 106 108
9 105 108
在节点101,105和106处,用户可以采用两个不同的路径,并且它们是决策节点'在故事中(101到102或103; 105和106,到107或108)。因此,我们只捕获user_events中的那些点击信息,而不捕获中间路径,因为一旦用户点击决策节点就定义了这些路径。
现在从上面的两个表中,我试图生成每个用户遍历的完整路径,如下所示:
user_id node_id
1000 101
1000 102
1000 104
1000 105
1000 107
2000 101
2000 103
2000 106
2000 107
但我在这里失去了如何实现这一目标。我正在尝试使用链接信息表加入用户事件表,但我只能获得第一个节点。有人可以说明实现这一目标的最佳途径吗?
答案 0 :(得分:0)
尝试:
With Links as
(Select L1.link_id, L2.to_node as from_node, L1.from_node as to_node
from link_Info L1
inner join
link_Info L2 on L2.to_node=L1.from_node
union all
Select link_id, from_node, to_node
from Link_info)
Select E.user_id, L.from_node as node_id
from user_events E inner join Links L
on L.link_id=E.link_id
union all
Select E.user_id, L.to_node as node_id
from user_events E inner join Links L
on L.link_id=E.link_id