Neo4j Dgs.fastrp.write返回所有UnionProperties必须具有相同的类型,但找到了[LONG,DOUBLE,DOUBLE,DOUBLE]”错误

mitkmikd  于 2022-11-05  发布在  其他
关注(0)|答案(2)|浏览(166)

我正在处理一个由不同类型的标签组成的大型图,这些标签有它们自己的属性。

  1. CALL gds.graph.create(
  2. 'derin',
  3. {
  4. Transaction: {
  5. label: 'Transaction',
  6. properties: {legacy_customer: {defaultValue: 0}
  7. , trx_amount: {defaultValue: 1000}
  8. , atm_trx: {defaultValue: 0}
  9. , fast_credit_flag: {defaultValue: 0}
  10. , silver_bullet_flag: {defaultValue: 0}
  11. }
  12. }
  13. , Withdraw: {
  14. label: 'Withdraw',
  15. properties: {legacy_customer: {defaultValue: 0}
  16. , trx_amount: {defaultValue: 1000}
  17. , atm_trx: {defaultValue: 0}
  18. , fast_credit_flag: {defaultValue: 0}
  19. , silver_bullet_flag: {defaultValue: 0}
  20. }
  21. }
  22. , Loan: {
  23. label: 'Loan',
  24. properties: {legacy_customer: {defaultValue: 0}
  25. , trx_amount: {defaultValue: 1000}
  26. , atm_trx: {defaultValue: 0}
  27. , fast_credit_flag: {defaultValue: 0}
  28. , silver_bullet_flag: {defaultValue: 0}
  29. }
  30. }
  31. , Customer: {
  32. label: 'Customer',
  33. properties: {legacy_customer: {defaultValue: 0}
  34. , trx_amount: {defaultValue: 1000}
  35. , atm_trx: {defaultValue: 0}
  36. , fast_credit_flag: {defaultValue: 0}
  37. , silver_bullet_flag: {defaultValue: 0}
  38. }
  39. }}, {
  40. SENDS: {type: 'SENDS', orientation: 'UNDIRECTED'},
  41. RECEIVES: {type: 'RECEIVES', orientation: 'UNDIRECTED'},
  42. INSPECTS: {type: 'INSPECTS', orientation: 'UNDIRECTED'},
  43. WITHDRAWS: {type: 'WITHDRAWS', orientation: 'UNDIRECTED'},
  44. APPLIES: {type: 'APPLIES', orientation: 'UNDIRECTED'}
  45. })

由于缺少属性,我创建了一个具有默认值的图形。创建后,我正在运行查询;

  1. CALL gds.fastRP.write('derin'
  2. ,{
  3. embeddingDimension: 32,
  4. writeProperty: 'fast_embedding',
  5. propertyRatio: 0.2,
  6. featureProperties: ['legacy_customer', 'trx_amount', 'atm_trx', 'fast_credit_flag', 'silver_bullet_flag']
  7. }
  8. )

我收到错误消息“无法调用过程gds.fastRP.write:错误原因:java.lang.非法参数异常:UnionProperties必须全部具有相同的类型,但找到[LONG,DOUBLE,DOUBLE,DOUBLE]"。如有任何帮助或建议,我们将不胜感激。谢谢。

kzipqqlq

kzipqqlq1#

我能够使用Neo4j版本模拟您的问题:4.2.3与GDS:1.8.3

  1. Failed to invoke procedure `gds.fastRP.write`: Caused by: java.lang.IllegalArgumentException: UnionProperties must all have the same type, but found [DOUBLE, DOUBLE, LONG, DOUBLE]

我创建了下面的节点,它抱怨数据类型LONG和DOUBLE不一致。

  1. (:Transaction {trx_amount: 1000}) and (:Withdraw{trx_amount: 1000.00)

我建议您运行查询并扫描,一次尝试一个featureProperties。(我知道这很乏味!)然后运行下面的查询,找出哪些节点是LONG(整数)。查询可能会运行很长时间,所以我会让您对它进行微调。

  1. MATCH (n)
  2. WHERE apoc.meta.type(n.trx_amount) = 'INTEGER'
  3. RETURN DISTINCT labels(n) as label, collect(n.trx_amount) AS trx_amount
ntjbwcob

ntjbwcob2#

感谢@jose_bacoy,我的答案是从bacoy的响应中得到启发的。

  1. MATCH (n:Transaction)
  2. RETURN DISTINCT apoc.meta.type(n.trx_amount) limit 25

对所有标签重复此操作。我发现事务标签存在一些缺失值(空值、trx_amount)。非缺失值均为浮点型。因此,我使用浮点型默认值(1000.0而不是1000)更新了图形创建查询,如下所示:

  1. CALL gds.graph.create(
  2. 'derin',
  3. {
  4. Transaction: {
  5. label: 'Transaction',
  6. properties: {legacy_customer: {defaultValue: 0}
  7. , trx_amount: {defaultValue: 1000.0}
  8. , atm_trx: {defaultValue: 0}
  9. , fast_credit_flag: {defaultValue: 0}
  10. , silver_bullet_flag: {defaultValue: 0}
  11. }
  12. }
  13. , Withdraw: {
  14. label: 'Withdraw',
  15. properties: {legacy_customer: {defaultValue: 0}
  16. , trx_amount: {defaultValue: 1000.0}
  17. , atm_trx: {defaultValue: 0}
  18. , fast_credit_flag: {defaultValue: 0}
  19. , silver_bullet_flag: {defaultValue: 0}
  20. }
  21. }
  22. , Loan: {
  23. label: 'Loan',
  24. properties: {legacy_customer: {defaultValue: 0}
  25. , trx_amount: {defaultValue: 1000.0}
  26. , atm_trx: {defaultValue: 0}
  27. , fast_credit_flag: {defaultValue: 0}
  28. , silver_bullet_flag: {defaultValue: 0}
  29. }
  30. }
  31. , Customer: {
  32. label: 'Customer',
  33. properties: {legacy_customer: {defaultValue: 0}
  34. , trx_amount: {defaultValue: 1000.0}
  35. , atm_trx: {defaultValue: 0}
  36. , fast_credit_flag: {defaultValue: 0}
  37. , silver_bullet_flag: {defaultValue: 0}
  38. }
  39. }}, {
  40. SENDS: {type: 'SENDS', orientation: 'UNDIRECTED'},
  41. RECEIVES: {type: 'RECEIVES', orientation: 'UNDIRECTED'},
  42. INSPECTS: {type: 'INSPECTS', orientation: 'UNDIRECTED'},
  43. WITHDRAWS: {type: 'WITHDRAWS', orientation: 'UNDIRECTED'},
  44. APPLIES: {type: 'APPLIES', orientation: 'UNDIRECTED'}
  45. })

这解决了我的问题。

展开查看全部

相关问题