首页 > 解决方案 > 将子关系映射到父关系的复杂递归调用(SQL/Pyspark)

问题描述

您好,我有两个包含对象名称及其 rid 的表,以及另一个包含 rid 与其子对象之间关系的表。

表格1

RID 姓名
rd.123 果酱
------ ---
rd.890 火腿

这仅包含项目名称和项目 RID 之间的链接。需要注意的一点是,它不包含我拥有的每个 RID 的名称,因为有些没有名称。这将被视为一切的基础父级。或根节点。

我的第二个表是这样设置的每个父子关系的列表

RID Child_RID
rd.123 rd.234
rd.123 rd455
rd.234 rd.777
rd.234 rd.789
rd.234 rd.667
rd.667 rd.544

现在我讨厌的一件事是孩子也会出现在父母一方,这会显示他们的孩子。所以这将有一个像 setup 一样的树节点。我要做的是制作另一个表,显示基本节点(来自 table1 的节点)及其所有连接的子节点,基本上构建一个节点树。我尝试合并和加入,但它没有产生我真正想要的。它接近但不正确。

我想要的结果是这样的

姓名 RID Child_1 Child_2 Child_3
果酱 rd.123 rd.454 rd.456 无效的 无效的
果酱 rd.123 rd.444 rd.677 rd.999 rd.222
果酱 rd.123 rd.444 rd.677 rd.409 无效的
果酱 rd.123 rd.444 rd.677 rd.544 rd.211
火腿 rd.890 rd.311 无效的 无效的 无效的

我想对第一列中的每个对象执行此操作,以在第二个表中查找所有父子关系。我愿意以两种方式做到这一点。SQL 或 Pyspark 对我来说很好,因为我可以将它们混合使用。什么都更容易完成这项任务。

标签: sqldatabasedataframepyspark

解决方案


推荐阅读