Конкатенация строк в neo4j - PullRequest
0 голосов
/ 05 апреля 2019

Мне нужно создать узел в neo4j, где я должен добавить длинный запрос neo4j как свойство в запросе создания узла.

create (n:HMP_QUERY_NODE{attributeTypes: '"attrMap":{}',dependentId:111,isSingle:false,
 nodeCategory:'CXCustomerHierarchy,CAVHierarchy',
queryDesc:"",
queryId:123,queryLabel:"Comparison report CSAV_CX_CUST Report",queryName:"CSAV_CX_CUST Report", 
queryOptionId:25 ,queryOptions:"" ,status:"A"}) RETURN n

В queryDesc свойство, которое я должен добавить

MATCH(cav:CustomerAccountViewHierarchy)-[:_properties]->(auditnode)-->(spoke) 
WHERE spoke._type='CAVCustomer'  AND spoke.start_date <= timestamp() <= spoke.end_date AND spoke.status = "Confirmed"
WITH spoke as cavspoke
OPTIONAL MATCH(cxc:CXCustomerHierarchy)-[:_properties]->(auditnode)-->(spoke)
WHERE spoke._type='CXCustomer' AND spoke.start_date <= timestamp() <= spoke.end_date AND spoke.status = "Confirmed"
AND spoke.sourceSystemId = cavspoke.sourceSystemId
WITH cavspoke,cxc,spoke as cxcspoke
WHERE (cxc is null) OR (cxcspoke.CXCustomer <> cavspoke.elementLabel)
WITH cavspoke,cxcspoke
return distinct cavspoke.elementLabel,cavspoke.sourceSystemId,cxcspoke.CXCustomer,cxcspoke.sourceSystemId

как собственность

Это дает мне синтаксическую ошибку

Ответы [ 2 ]

2 голосов
/ 05 апреля 2019

Ваше свойство запроса должно быть строкой, и для этого вам нужно экранировать все " на \" или удалить, если это возможно.

Например, здесь я заменил все " на ':

MATCH(cav:CustomerAccountViewHierarchy)-[:_properties]->(auditnode)-->(spoke) 
WHERE spoke._type='CAVCustomer'  AND spoke.start_date <= timestamp() <= spoke.end_date AND spoke.status = 'Confirmed'
WITH spoke as cavspoke
OPTIONAL MATCH(cxc:CXCustomerHierarchy)-[:_properties]->(auditnode)-->(spoke)
WHERE spoke._type='CXCustomer' AND spoke.start_date <= timestamp() <= spoke.end_date AND spoke.status = 'Confirmed'
AND spoke.sourceSystemId = cavspoke.sourceSystemId
WITH cavspoke,cxc,spoke as cxcspoke
WHERE (cxc is null) OR (cxcspoke.CXCustomer <> cavspoke.elementLabel)
WITH cavspoke,cxcspoke
return distinct cavspoke.elementLabel,cavspoke.sourceSystemId,cxcspoke.CXCustomer,cxcspoke.sourceSystem

Так что теперь я могу использовать его в вашем запросе:

create (n:HMP_QUERY_NODE{attributeTypes: '"attrMap":{}',dependentId:111,isSingle:false,
 nodeCategory:'CXCustomerHierarchy,CAVHierarchy',
queryDesc:"MATCH(cav:CustomerAccountViewHierarchy)-[:_properties]->(auditnode)-->(spoke) 
    WHERE spoke._type='CAVCustomer'  AND spoke.start_date <= timestamp() <= spoke.end_date AND spoke.status = 'Confirmed'
    WITH spoke as cavspoke
    OPTIONAL MATCH(cxc:CXCustomerHierarchy)-[:_properties]->(auditnode)-->(spoke)
    WHERE spoke._type='CXCustomer' AND spoke.start_date <= timestamp() <= spoke.end_date AND spoke.status = 'Confirmed'
    AND spoke.sourceSystemId = cavspoke.sourceSystemId
    WITH cavspoke,cxc,spoke as cxcspoke
    WHERE (cxc is null) OR (cxcspoke.CXCustomer <> cavspoke.elementLabel)
    WITH cavspoke,cxcspoke
    return distinct cavspoke.elementLabel,cavspoke.sourceSystemId,cxcspoke.CXCustomer,cxcspoke.sourceSystem",
queryId:123,queryLabel:"Comparison report CSAV_CX_CUST Report",queryName:"CSAV_CX_CUST Report", 
queryOptionId:25 ,queryOptions:"" ,status:"A"}) RETURN n
1 голос
/ 05 апреля 2019

Возможно, вы получаете сообщение об ошибке, поскольку в запросе есть двойные кавычки.

Вам необходимо экранировать эти двойные кавычки.Окружите это описание двойными кавычками и исключите двойные кавычки из описания, заменив его двумя двойными кавычками.

См. Документ Neo4j здесь для получения более подробной информации: https://neo4j.com/developer/kb/how-do-i-use-load-csv-with-data-including-quotes/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...