Ich habe folgende Datenstruktur:Wie für Knoten effizient Code, die mehrere Beziehungen haben
- Auftrag -> Kontakt -> Installieren -> Kampagne
- Auftrag -> Kontakt -> Download -> Kampagne
ich folgende Cypher Abfrage erstellt haben:
MATCH (ca1:Campaign) - [CI] - (i:Installs) - [IC] - (co1:Contact) - [CO1] - (o1:Order),
(ca2:Campaign) - [CD] - (d:Downloads) - [DC] - (co2:Contact) - [CO2] - (o2:Order)
where i.DownloadDate > '6/1/16' and i.DownloadDate < '7/31/16'
and d.DownloadDate > '6/1/16' and d.DownloadDate < '7/31/16'
RETURN ca1,CI,i,IC,co1,CO1,o1,ca2,CD,d,DC,co2,CO2,o2 limit 50
CQ gibt dem folgenden wa Ring:
Diese Abfrage erstellt ein kartesisches Produkt zwischen getrennten Mustern. Wenn ein Teil einer Abfrage mehrere nicht verbundene Muster enthält, wird ein kartesisches Produkt zwischen all diesen Teilen erstellt. Dies kann zu einer großen Datenmenge führen und die Abfrageverarbeitung verlangsamen. Während gelegentlich beabsichtigt, kann es oft möglich sein, die Abfrage neu zu formulieren, die die Verwendung dieses Kreuzprodukts vermeidet, möglicherweise durch Hinzufügen einer Beziehung zwischen den verschiedenen Teilen oder durch Verwenden von OPTIONAL MATCH (Bezeichner sind: (ca2, d, co2, o2))
Gibt es eine bessere Möglichkeit, in CQL zu programmieren ?. (Sorry für die Newbie Frage). Danke.
Ich bin hier ziemlich verwirrt, Ihre Abfrage lässt mich denken, dass Sie ein fehlendes Komma in Ihrem Pfad haben, dass es "-> Campaign, Order->" statt "-> Campaign" sein sollte Bestellung -> Kontakt ". Wenn das der Fall ist, sieht es so aus, als ob Sie wirklich "Bestellen" -> "Kontakt" haben und "Kontakt" hat dann sowohl eine Install- als auch eine Download-Beziehung zu Campaign. – InverseFalcon
Sie haben Recht .. am Ende der ersten Kampagne sollte ein Komma stehen. Ich hatte es in zwei Zeilen. Post wurde in eine einzelne Zeile zusammengeführt. Im Wesentlichen verfügt Contact über Verbindungen zu zwei Knoten (installieren und herunterladen) und stellt dann eine Verbindung zum Campaign-Knoten her. – Ravi
Okay, das hilft. Können Sie deutlich machen, was die Abfrage bewirken soll (eine verbale Beschreibung, anstatt einen Versuch auf die Abfrage zu machen), und zusätzliche Informationen bereitstellen, z. B. wenn Sie von bestimmten Knoten aus mit ID beginnen oder etwas, oder wenn Sie diese Informationen für alles, was in Ihrem db passt? Können Sie auch erklären, warum Download und Installation zwei verschiedene Knoten sind? Ich habe das Gefühl, dass Sie hier etwas optimieren können, aber noch nicht sicher. – InverseFalcon