graph_test_1.sql 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. DROP TABLE IF EXISTS temp_core_nodes;
  2. DROP TABLE IF EXISTS other_filter_all_rel_edge;
  3. DROP TABLE IF EXISTS other_filter_rel_edge;
  4. DROP TABLE IF EXISTS other_core_nodes;
  5. DROP TABLE IF EXISTS call_filter_all_rel_edge;
  6. DROP TABLE IF EXISTS call_filter_rel_edge;
  7. DROP TABLE IF EXISTS call_core_nodes;
  8. DROP TABLE IF EXISTS trans_filter_all_rel_edge;
  9. DROP TABLE IF EXISTS trans_filter_rel_edge;
  10. DROP TABLE IF EXISTS trans_core_nodes;
  11. DROP TABLE IF EXISTS final_rel_edge;
  12. CREATE
  13. TEMP TABLE final_rel_edge AS
  14. SELECT CAST(NULL AS VARCHAR) AS node1,
  15. CAST(NULL AS VARCHAR) AS node2,
  16. CAST(NULL AS VARCHAR) AS node1cn,
  17. CAST(NULL AS VARCHAR) AS node2cn,
  18. CAST(NULL AS VARCHAR) AS mc,
  19. CAST(NULL AS VARCHAR) AS clazz,
  20. CAST(NULL AS VARCHAR) AS num,
  21. CAST(NULL AS INTEGER) AS fx,
  22. CAST(NULL AS INTEGER) AS lx WHERE 1 = 0;
  23. CREATE
  24. TEMP TABLE temp_core_nodes AS
  25. SELECT unnest(['513126197412174415','513126199410052413', '110101199003071233', '330382199003081853',
  26. '510183198103160051', '6222024505288690226', '1023254100000211',
  27. '6216603637176773705', '3521023012569874', '6223092984200995695',
  28. '6237683810003447983', '6237683810003442235', '6225881084437762',
  29. '6222027549499181296']) AS node_id,
  30. unnest(['obj','obj', 'obj', 'obj', 'obj', 'card', 'card', 'card', 'card', 'card', 'card', 'card', 'card',
  31. 'card']) AS node_type;
  32. CREATE
  33. TEMP TABLE trans_core_nodes AS
  34. SELECT *
  35. FROM temp_core_nodes;
  36. CREATE
  37. TEMP TABLE trans_filter_all_rel_edge AS
  38. SELECT node1,
  39. node2,
  40. ANY_VALUE(node1cn) AS node1cn,
  41. ANY_VALUE(node2cn) AS node2cn,
  42. ANY_VALUE(mc) AS mc,
  43. ANY_VALUE(clazz) AS clazz,
  44. sum(num::decimal) AS num,
  45. sj AS sj,
  46. ANY_VALUE(fx) AS fx,
  47. ANY_VALUE(lx) AS lx
  48. FROM rel_edge
  49. WHERE clazz = 'card_card'
  50. AND num::decimal >= 1 AND num::decimal <= 2000000
  51. GROUP BY node1, node2, sj;
  52. CREATE
  53. TEMP TABLE trans_filter_rel_edge AS
  54. SELECT *
  55. FROM (SELECT *
  56. FROM trans_filter_all_rel_edge
  57. WHERE clazz = 'card_card'
  58. AND fx = 1
  59. AND node1 IN (SELECT node_id FROM temp_core_nodes)
  60. AND node2 NOT IN (SELECT node_id FROM temp_core_nodes)
  61. UNION ALL
  62. SELECT *
  63. FROM trans_filter_all_rel_edge
  64. WHERE clazz = 'card_card'
  65. AND fx = 2
  66. AND node1 NOT IN (SELECT node_id FROM temp_core_nodes)
  67. AND node2 IN (SELECT node_id FROM temp_core_nodes)) AS combined_edges;
  68. insert into trans_core_nodes
  69. select node_id, node_type
  70. from (select node1 as node_id, 'card' as node_type
  71. from trans_filter_rel_edge
  72. union all
  73. select node2 as node_id, 'card' as node_type
  74. from trans_filter_rel_edge) as temp_node_id
  75. GROUP BY node_id, node_type;
  76. INSERT INTO final_rel_edge
  77. SELECT node1,
  78. node2,
  79. node1cn,
  80. node2cn,
  81. mc,
  82. clazz,
  83. sum(num::decimal) as num,
  84. ANY_VALUE(fx) as fx,
  85. ANY_VALUE(lx) as lx
  86. FROM trans_filter_rel_edge
  87. WHERE node1 IN (SELECT node_id FROM trans_core_nodes)
  88. AND node2 IN (SELECT node_id FROM trans_core_nodes)
  89. GROUP BY node1, node2, mc, clazz;
  90. CREATE
  91. TEMP TABLE call_core_nodes AS
  92. SELECT *
  93. FROM temp_core_nodes;
  94. CREATE
  95. TEMP TABLE call_filter_all_rel_edge AS
  96. SELECT node1,
  97. node2,
  98. ANY_VALUE(node1cn) AS node1cn,
  99. ANY_VALUE(node2cn) AS node2cn,
  100. ANY_VALUE(mc) AS mc,
  101. ANY_VALUE(clazz) AS clazz,
  102. count() AS num,
  103. ANY_VALUE(sj) AS sj,
  104. ANY_VALUE(fx) AS fx,
  105. ANY_VALUE(lx) AS lx
  106. FROM rel_edge
  107. WHERE clazz = 'tel_tel'
  108. GROUP BY node1, node2;
  109. CREATE
  110. TEMP TABLE call_filter_rel_edge AS
  111. SELECT *
  112. FROM (SELECT *
  113. FROM call_filter_all_rel_edge
  114. WHERE clazz = 'tel_tel'
  115. AND fx = 1
  116. AND node1 IN (SELECT node_id FROM call_core_nodes)
  117. AND node2 NOT IN (SELECT node_id FROM call_core_nodes)
  118. UNION ALL
  119. SELECT *
  120. FROM call_filter_all_rel_edge
  121. WHERE clazz = 'tel_tel'
  122. AND fx = 2
  123. AND node1 NOT IN (SELECT node_id FROM call_core_nodes)
  124. AND node2 IN (SELECT node_id FROM call_core_nodes)) AS combined_edges
  125. WHERE num >= 4;
  126. INSERT INTO call_core_nodes
  127. select node_id, node_type
  128. from (select node1 as node_id, 'tel' as node_type
  129. from call_filter_rel_edge
  130. union all
  131. select node2 as node_id, 'tel' as node_type
  132. from call_filter_rel_edge) as temp_node_id
  133. GROUP BY node_id, node_type;
  134. INSERT INTO final_rel_edge
  135. SELECT node1,
  136. node2,
  137. node1cn,
  138. node2cn,
  139. mc,
  140. clazz,
  141. sum(num::integer) as num,
  142. ANY_VALUE(fx) as fx,
  143. ANY_VALUE(lx) as lx
  144. FROM call_filter_rel_edge
  145. WHERE node1 IN (SELECT node_id FROM call_core_nodes)
  146. AND node2 IN (SELECT node_id FROM call_core_nodes)
  147. GROUP BY node1, node2, mc, clazz;
  148. CREATE
  149. TEMP TABLE other_core_nodes AS
  150. SELECT *
  151. FROM temp_core_nodes;
  152. CREATE
  153. TEMP TABLE other_filter_all_rel_edge AS
  154. SELECT *
  155. FROM rel_edge
  156. WHERE clazz NOT IN ('card_card', 'tel_tel');
  157. CREATE
  158. TEMP TABLE other_filter_rel_edge AS
  159. SELECT *
  160. FROM other_filter_all_rel_edge
  161. WHERE clazz NOT IN ('card_card', 'tel_tel')
  162. AND node1 IN (SELECT node_id FROM trans_core_nodes)
  163. AND node2 IN (SELECT node_id FROM trans_core_nodes);
  164. INSERT INTO other_core_nodes
  165. SELECT node_id, node_type
  166. FROM (SELECT node1 as node_id, 'other' as node_type
  167. FROM other_filter_rel_edge
  168. UNION ALL
  169. SELECT node2 as node_id, 'other' as node_type
  170. FROM other_filter_rel_edge) as temp_node_id
  171. GROUP BY node_id, node_type;
  172. INSERT INTO final_rel_edge
  173. SELECT node1,
  174. node2,
  175. node1cn,
  176. node2cn,
  177. mc,
  178. clazz,
  179. num,
  180. fx,
  181. lx
  182. FROM other_filter_rel_edge
  183. WHERE clazz not in ('card_card', 'tel_tel')
  184. AND node1 IN (SELECT node_id FROM other_core_nodes)
  185. AND node2 IN (SELECT node_id FROM other_core_nodes);
  186. SELECT node1,
  187. node2,
  188. mc,
  189. node1cn,
  190. node2cn,
  191. clazz,
  192. SUM(COALESCE(num, '0')::DECIMAL) AS num,
  193. ANY_VALUE(fx) as fx,
  194. ANY_VALUE(lx) as lx
  195. FROM final_rel_edge