首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Neo4j Dgs.fastrp.write returnsUnionProperties必须具有相同的类型,但是找到了[长、双]“错误

Neo4j Dgs.fastrp.write returnsUnionProperties必须具有相同的类型,但是找到了[长、双]“错误
EN

Stack Overflow用户
提问于 2022-02-04 09:11:34
回答 2查看 52关注 0票数 1

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

代码语言:javascript
复制
CALL gds.graph.create(
'derin',
{
Transaction: {
label: 'Transaction',
properties: {legacy_customer: {defaultValue: 0}
, trx_amount: {defaultValue: 1000}
, atm_trx: {defaultValue: 0}
, fast_credit_flag: {defaultValue: 0}
, silver_bullet_flag: {defaultValue: 0}
}
}
, Withdraw: {
label: 'Withdraw',
properties: {legacy_customer: {defaultValue: 0}
, trx_amount: {defaultValue: 1000}
, atm_trx: {defaultValue: 0}
, fast_credit_flag: {defaultValue: 0}
, silver_bullet_flag: {defaultValue: 0}
}
}
, Loan: {
label: 'Loan',
properties: {legacy_customer: {defaultValue: 0}
, trx_amount: {defaultValue: 1000}
, atm_trx: {defaultValue: 0}
, fast_credit_flag: {defaultValue: 0}
, silver_bullet_flag: {defaultValue: 0}
}
}
, Customer: {
label: 'Customer',
properties: {legacy_customer: {defaultValue: 0}
, trx_amount: {defaultValue: 1000}
, atm_trx: {defaultValue: 0}
, fast_credit_flag: {defaultValue: 0}
, silver_bullet_flag: {defaultValue: 0}
}
}}, {
SENDS: {type: 'SENDS', orientation: 'UNDIRECTED'},
RECEIVES: {type: 'RECEIVES', orientation: 'UNDIRECTED'},
INSPECTS: {type: 'INSPECTS', orientation: 'UNDIRECTED'},
WITHDRAWS: {type: 'WITHDRAWS', orientation: 'UNDIRECTED'},
APPLIES: {type: 'APPLIES', orientation: 'UNDIRECTED'}
})

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

代码语言:javascript
复制
CALL gds.fastRP.write('derin'
,{
embeddingDimension: 32,
writeProperty: 'fast_embedding',
propertyRatio: 0.2,
featureProperties: ['legacy_customer', 'trx_amount', 'atm_trx', 'fast_credit_flag', 'silver_bullet_flag']
}
)

我得到了一个错误“未能调用过程gds.fastRP.write: by: java.lang.IllegalArgumentException: UnionProperties必须具有相同的类型,但是找到了LONG、DOUBLE、DOUBLE、DOUBLE”。任何帮助或建议都会很好。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-02-07 13:00:59

多亏了@jose_bacoy,我的回答受到了巴科伊的回应的启发。在使用查询创建图形之后检查现有类型时

代码语言:javascript
复制
 MATCH (n:Transaction) 
 RETURN DISTINCT apoc.meta.type(n.trx_amount)  limit 25

对所有标签都重复一遍。我看到了一些缺少的(null,trx_amount)值是存在于事务标签的。不缺少的值都是浮点类型。因此,我更新了我的图形创建查询,默认值为浮动类型(1000.0而不是1000),如下所示;

代码语言:javascript
复制
CALL gds.graph.create(
'derin',
{
Transaction: {
label: 'Transaction',
properties: {legacy_customer: {defaultValue: 0}
, trx_amount: {defaultValue: 1000.0}
, atm_trx: {defaultValue: 0}
, fast_credit_flag: {defaultValue: 0}
, silver_bullet_flag: {defaultValue: 0}
}
}
, Withdraw: {
label: 'Withdraw',
properties: {legacy_customer: {defaultValue: 0}
, trx_amount: {defaultValue: 1000.0}
, atm_trx: {defaultValue: 0}
, fast_credit_flag: {defaultValue: 0}
, silver_bullet_flag: {defaultValue: 0}
}
}
, Loan: {
label: 'Loan',
properties: {legacy_customer: {defaultValue: 0}
, trx_amount: {defaultValue: 1000.0}
, atm_trx: {defaultValue: 0}
, fast_credit_flag: {defaultValue: 0}
, silver_bullet_flag: {defaultValue: 0}
}
}
, Customer: {
label: 'Customer',
properties: {legacy_customer: {defaultValue: 0}
, trx_amount: {defaultValue: 1000.0}
, atm_trx: {defaultValue: 0}
, fast_credit_flag: {defaultValue: 0}
, silver_bullet_flag: {defaultValue: 0}
}
}}, {
SENDS: {type: 'SENDS', orientation: 'UNDIRECTED'},
RECEIVES: {type: 'RECEIVES', orientation: 'UNDIRECTED'},
INSPECTS: {type: 'INSPECTS', orientation: 'UNDIRECTED'},
WITHDRAWS: {type: 'WITHDRAWS', orientation: 'UNDIRECTED'},
APPLIES: {type: 'APPLIES', orientation: 'UNDIRECTED'}
})

这解决了我的问题。

票数 1
EN

Stack Overflow用户

发布于 2022-02-04 15:26:28

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

代码语言:javascript
复制
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]

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

代码语言:javascript
复制
 (:Transaction {trx_amount:  1000}) and (:Withdraw{trx_amount: 1000.00) 

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

代码语言:javascript
复制
 MATCH (n) 
 WHERE apoc.meta.type(n.trx_amount)  = 'INTEGER'
 RETURN DISTINCT labels(n) as label, collect(n.trx_amount) AS trx_amount  
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70983865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档