我正在处理一个由不同类型的标签组成的大图,而这些标签有它们自己的属性。
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'}
})由于缺少属性,我创建了一个带有默认值的图形。创建后,我正在运行查询;
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”。任何帮助或建议都会很好。谢谢。
发布于 2022-02-07 13:00:59
多亏了@jose_bacoy,我的回答受到了巴科伊的回应的启发。在使用查询创建图形之后检查现有类型时
MATCH (n:Transaction)
RETURN DISTINCT apoc.meta.type(n.trx_amount) limit 25对所有标签都重复一遍。我看到了一些缺少的(null,trx_amount)值是存在于事务标签的。不缺少的值都是浮点类型。因此,我更新了我的图形创建查询,默认值为浮动类型(1000.0而不是1000),如下所示;
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'}
})这解决了我的问题。
发布于 2022-02-04 15:26:28
我能够使用Neo4j版本: 4.2.3和GDS: 1.8.3模拟您的问题
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]我创建了下面的节点,它抱怨数据类型不一致,长和双。
(:Transaction {trx_amount: 1000}) and (:Withdraw{trx_amount: 1000.00) 我建议您一次运行查询并扫描每个featureProperties。(我知道这很乏味!)然后在查询下面运行以查找哪些节点是长的(整数)。查询可能会运行很长时间,所以我会让您对其进行微调。
MATCH (n)
WHERE apoc.meta.type(n.trx_amount) = 'INTEGER'
RETURN DISTINCT labels(n) as label, collect(n.trx_amount) AS trx_amount https://stackoverflow.com/questions/70983865
复制相似问题