
实体 A 标志 交易金额 实体 B
账户 1 出 2 账户 11
账户 1 出 1 账户 12
账户 1 出 2 账户 12
账户 1 出 3 账户 12
账户 1 出 1 账户 2
账户 1 进 2 账户 2
账户 10 出 8 账户 6
账户 10 进 5 账户 11
账户 12 出 22 账户 10
账户 3 进 2 账户 2
账户 3 出 5 账户 7
账户 3 出 7 账户 7
账户 3 出 5 账户 7
账户 3 出 4 账户 9
账户 6 进 7 账户 4
账户 6 进 8 账户 10
账户 6 出 5 账户 10
账户 6 出 7 账户 11
账户 6 进 5 账户 7
账户 8 出 6 账户 4
账户 9 出 3 账户 8
假设这些数都存在sql数据库中,且有几百万条数据,如何用python连接数据库在并通过python 程序跑出账户1到账户6的5层以内的所有路径账户及每个路径中账户之间的单向汇总转账金额,如图上,转回的路径要剔除。
提个思路,看是否可行
1、用sql 的groupby sum , 统计所有的 流出值 、 流入值 ,这里要确认一个问题
比如有 账户 1 出 2 账户 11 , 是否就有 账户 11 进 2 账户 1 , 如果有,要做排除。
根据 出 进 关键字, 统计
流出账户 流入账户 值
流入账户 流出账户 值
2、将结果集2 , 字段调换 , 变成流出流向
按逻辑需求,去重(如果有1里提的问题的话) , 合并结果集
3、筛选流出账户和流入账户有 重叠的数据, 就是有回转的流向数据,
把值改为负数,合并到结果集
4、筛选结果集 , 把所有的负值 , 调换流出、流入账户, 改为正值。
这样就得到所有的正流向数据。
建立一个链表 , 或者直接从账户1开始遍历流向 , 大过5层还没流到账户6的,忽略。
库 networkx
直接用SqlServer的路径查询
可以用到数据流式处理