Σημείωμα
Η πρόσβαση σε αυτήν τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να εισέλθετε ή να αλλάξετε καταλόγους.
Η πρόσβαση σε αυτήν τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να αλλάξετε καταλόγους.
Το GQL (Graph Query Language) είναι η τυποποιημένη γλώσσα ερωτημάτων ISO για βάσεις δεδομένων γραφημάτων. Χρησιμοποιήστε το GQL για να υποβάλετε ερωτήματα, να αναλύσετε και να εργαστείτε αποτελεσματικά με δεδομένα γραφήματος με το γράφημα στο Microsoft Fabric.
Η ίδια ομάδα εργασίας ISO που τυποποιεί την SQL αναπτύσσει GQL. Κατά συνέπεια, η GQL μοιράζεται πολλές έννοιες με την SQL, συμπεριλαμβανομένων παραστάσεων, κατηγορημάτων και τύπων δεδομένων. Εάν έχετε εμπειρία SQL, μπορείτε να εφαρμόσετε πολλές από τις γνώσεις σας στο GQL.
Αυτό το άρθρο παρέχει μια ολοκληρωμένη αναφορά για το GQL σε γράφημα. Καλύπτει τα εξής:
- Βασικές έννοιες: Δομές δεδομένων γραφήματος, μοτίβα και βασικές έννοιες ερωτημάτων
-
Βασικές προτάσεις:
MATCH,FILTER,LET,ORDER BY, καιLIMITRETURN - Τύποι δεδομένων και παραστάσεις: Τύποι τιμών, τελεστές και ενσωματωμένες συναρτήσεις
- Προηγμένες τεχνικές: Σύνθεση πολλαπλών καταστάσεων, εμβέλεια μεταβλητών και στρατηγικές συνάθροισης
Σημείωμα
Το επίσημο διεθνές πρότυπο για GQL είναι iso/IEC 39075 τεχνολογία πληροφοριών - γλώσσες βάσεων δεδομένων - GQL.
Εάν αναζητάτε οδηγίες για τις εργασίες αντί για μια πλήρη αναφορά γλώσσας, ανατρέξτε στους οδηγούς διαδικασιών:
- Εγγραφή κοινών ερωτημάτων GQL — γείτονες, διέλευση πολλών μεταπηδήσεων, κοινόχρηστες συνδέσεις και έλεγχοι παρουσίας οντοτήτων
- Φιλτράρισμα και συγκέντρωση δεδομένων γραφήματος — Συναρτήσεις FILTER, WHERE, GROUP BY και συγκεντρωτικές συναρτήσεις
- Ερωτήματα μοτίβων γραφήματος εγγραφής — μοτίβα πολλαπλών μεταπηδήσεων, λειτουργίες διαδρομής, επαναχρησιμοποίηση μεταβλητών και ΠΡΟΑΙΡΕΤΙΚΗ ΑΝΤΙΣΤΟΙΧΙΑ
- Βελτιστοποίηση επιδόσεων ερωτημάτων GQL — στρατηγική φιλτραρίσματος, όρια διέλευσης και προτάσεις βασικών περιορισμών
Προϋποθέσεις
Προτού ξεκινήσετε, βεβαιωθείτε ότι είστε εξοικειωμένοι με αυτές τις έννοιες:
- Βατική κατανόηση των βάσεων δεδομένων - Η εμπειρία με οποιοδήποτε σύστημα βάσης δεδομένων όπως σχεσιακό (SQL), NoSQL ή γράφημα είναι χρήσιμη.
- Έννοιες γραφήματος - Κατανόηση των κόδων, των άκρων και των σχέσεων σε συνδεδεμένα δεδομένα.
- Βασικά στοιχεία ερωτήματος - Γνώση βασικών εννοιών ερωτημάτων όπως το φιλτράρισμα, η ταξινόμηση και η συνάθροιση.
Προτεινόμενο φόντο:
- Η εμπειρία με γλώσσες SQL ή openCypher διευκολύνει την εκμάθηση της σύνταξης GQL (αποτελούν τις ρίζες του GQL).
- Η εξοικείωση με τη μοντελοποίηση δεδομένων σάς βοηθά με τη σχεδίαση σχήματος γραφήματος.
- Κατανόηση της συγκεκριμένης περίπτωσης χρήσης για δεδομένα γραφήματος.
Τι χρειάζεστε:
- Πρόσβαση σε έναν χώρο εργασίας γραφήματος με δυνατότητες ερωτημάτων.
- Δείγμα δεδομένων ή προθυμία για εργασία με τα παραδείγματα κοινωνικών δικτύων μας.
- Βασικό πρόγραμμα επεξεργασίας κειμένου για τη σύνταξη ερωτημάτων.
Φιλοδώρημα
Εάν δεν είστε εξοικειωμένοι με τις βάσεις δεδομένων γραφήματος, ξεκινήστε με την επισκόπηση μοντέλων δεδομένων γραφήματος προτού συνεχίσετε με αυτόν τον οδηγό.
Τι κάνει το GQL ξεχωριστό
Το GQL έχει σχεδιαστεί ειδικά για δεδομένα γραφήματος. Αυτή η σχεδίαση καθιστά φυσική και εύχρηστη την εργασία με συνδεδεμένες πληροφορίες.
Σε αντίθεση με την SQL, η οποία βασίζεται σε συνδέσμους πινάκων για την έκφραση σχέσεων, το GQL χρησιμοποιεί μοτίβα οπτικών γραφημάτων. Αυτά τα μοτίβα αντικατοπτρίζουν απευθείας τον τρόπο σύνδεσης των οντοτήτων, διευκολύνοντας την ανάγνωση και την αιτιολόγηση των ερωτημάτων.
Ας υποθέσουμε ότι θέλετε να βρείτε ανθρώπους και τους φίλους τους (άνθρωποι που γνωρίζονται) που γεννήθηκαν και οι δύο πριν από το 1999. Δείτε πώς το GQL εκφράζει αυτή τη συνθήκη χρησιμοποιώντας ένα μοτίβο οπτικού γραφήματος:
MATCH (person:Person)-[:knows]-(friend:Person)
WHERE person.birthday < 19990101
AND friend.birthday < 19990101
RETURN person.firstName || ' ' || person.lastName AS person_name,
friend.firstName || ' ' || friend.lastName AS friend_name
Αυτό το ερώτημα εντοπίζει φίλους (άτομα που γνωρίζονται) που γεννήθηκαν και οι δύο πριν από το 1999. Το μοτίβο (person:Person)-[:knows]-(friend:Person) εμφανίζει οπτικά τη δομή της σχέσης που αναζητάτε, όπως περίπου τη σχεδίαση ενός διαγράμματος των δεδομένων σας.
Βασικές έννοιες του GQL
Προτού εμβαθύνετε σε ερωτήματα, κατανοήστε αυτές τις βασικές έννοιες που αποτελούν το θεμέλιο του GQL:
- Τα γραφήματα αποθηκεύουν τα δεδομένα σας ως κόμβους (οντότητες) και άκρα (σχέσεις), καθένα με ετικέτες και ιδιότητες.
- Οι τύποι γραφημάτων ενεργούν όπως σχήματα, καθορίζοντας τους κόμβους και τα άκρα που μπορούν να υπάρχουν στο γράφημά σας.
- Οι περιορισμοί είναι άλλοι κανόνες και περιορισμοί που επιβάλλουν οι τύποι γραφημάτων σε γραφήματα για την επιβολή της ακεραιότητας των δεδομένων.
-
Τα ερωτήματα χρησιμοποιούν προτάσεις όπως
MATCH,FILTER, καιRETURNγια την επεξεργασία δεδομένων και την εμφάνιση αποτελεσμάτων. - Τα μοτίβα περιγράφουν τις δομές γραφήματος που θέλετε να βρείτε χρησιμοποιώντας διαισθητική σύνταξη απεικόνισης.
- Οι παραστάσεις εκτελούν υπολογισμούς και συγκρίσεις στα δεδομένα σας, όμοια με παραστάσεις SQL.
- Τα κατηγορήματα είναι παραστάσεις δυαδικής τιμής που φιλτράρουν τα αποτελέσματα μέσα σε ερωτήματα.
- Οι τύποι τιμών ορίζουν ποια είδη τιμών μπορείτε να επεξεργαστείτε και αποθηκεύσετε.
Κατανόηση δεδομένων γραφήματος
Για να εργαστείτε αποτελεσματικά με το GQL, πρέπει να κατανοήσετε τον τρόπο με τον οποίο είναι δομημένα τα δεδομένα γραφήματος. Αυτή η βάση σάς βοηθά να γράφετε καλύτερα ερωτήματα και να μοντελοποιείτε αποτελεσματικά τα δεδομένα σας.
Κόμβοι και άκρα: τα δομικά στοιχεία
Στο GQL, εργάζεστε με γραφήματα ιδιοτήτων με ετικέτες. Ένα γράφημα αποτελείται από δύο τύπους στοιχείων:
Οι κόμβοι συνήθως αντιπροσωπεύουν τις οντότητες (τα "ουσιαστικά") στο σύστημά σας, όπως άτομα, οργανισμούς, δημοσιεύσεις ή προϊόντα. Είναι ανεξάρτητα αντικείμενα που υπάρχουν στον τομέα σας. Ορισμένες φορές, καλείτε επίσης vertices κόμφων.
Τα άκρα αντιπροσωπεύουν σχέσεις μεταξύ οντοτήτων (τα "ρήματα") - πώς συνδέονται και αλληλεπιδρούν οι οντότητές σας.
Για παράδειγμα, οι άνθρωποι γνωρίζονται μεταξύ τους (:knows), οργανισμοί που δραστηριοποιούνται σε συγκεκριμένες περιοχές (:operates) ή πελάτες που αγόρασαν προϊόντα (:purchased).
Ορισμένες φορές, καλείτε επίσης σχέσεις edges.
Κάθε στοιχείο γραφήματος έχει τα εξής χαρακτηριστικά:
- Ένα εσωτερικό αναγνωριστικό που το προσδιορίζει με μοναδικό τρόπο
-
Μία ή περισσότερες ετικέτες - περιγραφικά ονόματα όπως
Personήknows. Στο γράφημα, τα άκρα έχουν πάντα ακριβώς μία ετικέτα. -
Ιδιότητες - ζεύγη ονόματος-τιμής που αποθηκεύουν δεδομένα σχετικά με το στοιχείο (όπως
firstName: "Alice"ήbirthday: "19730108").
Πώς δομούνται τα γραφήματα
Κάθε ακμή συνδέει ακριβώς δύο κόμβους: μια αρχή και έναν στόχο. Αυτή η σύνδεση δημιουργεί τη δομή του γραφήματος και δείχνει πώς οι οντότητες σχετίζονται μεταξύ τους. Η κατεύθυνση των άκρων έχει σημασία, δηλαδή ποιος Personfollows άλλος Person δημιουργεί μια κατευθυνόμενη σχέση.
Σημείωμα
Το γράφημα αυτήν τη στιγμή δεν υποστηρίζει ανεπιθύμητα άκρα.
Τα γραφήματα ιδιοτήτων όπως υποστηρίζονται στο γράφημα είναι πάντα καλά μορφοποιημένα, το οποίο σημαίνει ότι κάθε άκρο συνδέει δύο έγκυρους κόμβους. Εάν δείτε ένα άκρο σε ένα γράφημα, και τα δύο τελικά σημεία του υπάρχουν στο ίδιο γράφημα.
Μοντέλα γραφήματος και τύποι γραφημάτων
Το μοντέλο γραφήματος περιγράφει τη δομή ενός γραφήματος. Λειτουργεί όπως ένα σχήμα βάσης δεδομένων για τον τομέα της εφαρμογής σας. Τα μοντέλα γραφήματος ορίζουν τα εξής:
- Ποιοι κόμβοι και άκρα μπορούν να υπάρχουν
- Ποιες ετικέτες και ιδιότητες μπορούν να έχουν
- Πώς συνδέονται οι κόμβοι και τα άκρα
Τα μοντέλα γραφήματος εξασφαλίζουν επίσης την ακεραιότητα των δεδομένων μέσω περιορισμών, ιδιαίτερα στους βασικούς περιορισμούς κόμβων που καθορίζουν ποιες ιδιότητες προσδιορίζουν μοναδικά κάθε κόμβο.
Σημείωμα
Μπορείτε να καθορίσετε μοντέλα γραφήματος χρησιμοποιώντας την τυπική σύνταξη GQL. Σε αυτή την περίπτωση, ονομάζονται τύποι γραφημάτων.
Ένα πρακτικό παράδειγμα: κοινωνικό δίκτυο
Σε αυτή την τεκμηρίωση, ένα παράδειγμα κοινωνικού δικτύου απεικονίζει έννοιες GQL. Η κατανόηση αυτού του τομέα σάς βοηθά να ακολουθήσετε τα παραδείγματα και να εφαρμόσετε παρόμοια μοτίβα στα δικά σας δεδομένα.
Σημείωμα
Το παράδειγμα κοινωνικού δικτύου προέρχεται από το LDBC SNB (Στοιχείο αναφοράς κοινωνικών δικτύων LDBC) που δημοσιεύτηκε από την GDC (Graph Data Council). Για περισσότερες πληροφορίες, ανατρέξτε στο θέμα "Το σημείο αναφοράς κοινωνικών δικτύων LDBC".
Οι οντότητες κοινωνικών δικτύων
Το κοινωνικό μας δίκτυο περιλαμβάνει αυτούς τους κύριους κόμβους, που αντιπροσωπεύουν οντότητες του τομέα:
Οι χρήστες έχουν προσωπικές πληροφορίες, όπως ονόματα, γενέθλια και φύλα. Ζουν σε πόλεις και σχηματίζουν κοινωνικές συνδέσεις.
Τα σημεία σχηματίζουν μια γεωγραφική ιεραρχία:
- Πόλεις όπως η "Νέα Υόρκη" ή το "Λονδίνο"
- Πλήρεις/περιοχές όπως "Ηνωμένες Πολιτείες" ή "Ηνωμένο Βασίλειο"
- Ήπειροι όπως η "Βόρεια Αμερική" ή η "Ευρώπη"
Οργανισμοί όπου οι χρήστες αφιερώνουν χρόνο:
- Πανεπιστήμια όπου οι άνθρωποι σπουδάζουν
- Εταιρείες στις οποίες εργάζονται άτομα
Περιεχόμενο και συζητήσεις:
- Φόρουμ με τίτλους που περιέχουν δημοσιεύσεις
- Δημοσιεύσεις με περιεχόμενο, γλώσσα και προαιρετικές εικόνες
- Σχόλια που απαντούν σε δημοσιεύσεις ή άλλα σχόλια
- Ετικέτες που κατηγοριοποιούν περιεχόμενο και αντιπροσωπεύουν ενδιαφέροντα
Πώς συνδέονται τα πάντα
Οι συνδέσεις μεταξύ οντοτήτων καθιστούν το δίκτυο ενδιαφέρον:
- Οι άνθρωποι γνωρίζονται (φιλία,
:knows). - Άτομα εργάζονται σε εταιρείες (
:workAt) ή σπουδάζουν σε πανεπιστήμια (:studyAt). - Οι χρήστες δημιουργούν δημοσιεύσεις και σχόλια (
:hasCreator). - Στους χρήστες αρέσουν οι δημοσιεύσεις και τα σχόλια (
:likes). - Οι δημοσιεύσεις, τα φόρουμ και τα σχόλια μπορούν να έχουν ετικέτες (
:hasTag). - Τα άτομα έχουν ενδιαφέροντα για συγκεκριμένες ετικέτες (
:hasInterest). - Τα φόρουμ περιέχουν δημοσιεύσεις (
:containerOf) και έχουν μέλη (:hasMember) και επόπτες (:hasModerator).
Τα άκρα του γραφήματος αντιπροσωπεύουν σχέσεις τομέα. Αυτό το εμπλουτισμένο δίκτυο δημιουργεί πολλές ευκαιρίες για ενδιαφέροντα ερωτήματα και αναλύσεις.
Τα πρώτα σας ερωτήματα GQL
Τώρα που κατανοείτε τα βασικά στοιχεία του γραφήματος, ας δούμε πώς μπορείτε να υποβάλετε ερωτήματα για δεδομένα γραφήματος χρησιμοποιώντας GQL. Αυτά τα παραδείγματα δομούν από απλά σε σύνθετα, δείχνοντάς σας πώς η προσέγγιση του GQL καθιστά τα ερωτήματα γραφήματος εύχρηστα και ισχυρά.
Απλή εκκίνηση: εύρεση όλων των ατόμων
Ξεκινήστε με το πιο βασικό δυνατό ερώτημα. Βρείτε τα ονόματα (όνομα, επώνυμο) όλων των ατόμων:Person στο γράφημα.
MATCH (p:Person)
RETURN p.firstName, p.lastName
Αυτό το ερώτημα εκτελείται ως εξής:
-
MATCHΕντοπίζει όλους τους κόμβους με την ετικέταPerson. -
RETURNεμφανίζει το όνομα και το επώνυμό τους.
Προσθήκη φιλτραρίσματος: εύρεση συγκεκριμένων ατόμων
Τώρα, βρείτε άτομα με συγκεκριμένα χαρακτηριστικά. Σε αυτήν την περίπτωση, βρείτε όλους τους χρήστες με το όνομα Alice και εμφανίστε τα ονόματα και τα γενέθλιά τους.
MATCH (p:Person)
FILTER p.firstName = 'Alice'
RETURN p.firstName, p.lastName, p.birthday
Αυτό το ερώτημα εκτελείται ως εξής:
-
MATCHΕντοπίζει όλους τους κόμβους (p) με την ετικέτα Person. -
FILTERκόμβοι (p) των οποίων το όνομα είναι Alice. -
RETURNεμφανίζει το όνομα, το επώνυμο και τα γενέθλιά τους.
Βασική δομή ερωτήματος
Τα βασικά ερωτήματα GQL ακολουθούν όλα ένα συνεπές μοτίβο: μια ακολουθία δηλώσεων που συνεργάζονται για την εύρεση, το φιλτράρισμα και την επιστροφή δεδομένων.
Τα περισσότερα ερωτήματα ξεκινούν με MATCH για να βρουν μοτίβα στο γράφημα και τελειώνουν με RETURN για να καθορίσουν την έξοδο.
Ακολουθεί ένα απλό ερώτημα που βρίσκει ζεύγη ατόμων που γνωρίζονται μεταξύ τους και έχουν τα ίδια γενέθλια και, στη συνέχεια, επιστρέφει τον συνολικό αριθμό αυτών των ζευγαριών φίλων.
MATCH (n:Person)-[:knows]-(m:Person)
FILTER n.birthday = m.birthday
RETURN count(*) AS same_age_friends
Αυτό το ερώτημα εκτελείται ως εξής:
-
MATCHβρίσκει όλα τα ζεύγηPersonκόδων που γνωρίζουν ο ένας τον άλλον. -
FILTERδιατηρεί μόνο τα ζεύγη όπου και οι δύο έχουν τα ίδια γενέθλια. -
RETURNμετράει πόσα τέτοια ζευγάρια φίλων υπάρχουν.
Φιλοδώρημα
Μπορείτε επίσης να εκτελέσετε φιλτράρισμα απευθείας ως μέρος ενός μοτίβου προσαρτώντας έναν WHERE όρο. Για παράδειγμα, MATCH (n:Person WHERE n.age > 23) συμφωνεί μόνο με Person κόμβους των οποίων η age ιδιότητα είναι μεγαλύτερη από 23.
Το GQL υποστηρίζει σχόλια γραμμής στυλ // C, σχόλια γραμμής στυλ -- SQL και σχόλια μπλοκ στυλ /* */ C.
Κοινές δηλώσεις
-
MATCH: Προσδιορίζει το μοτίβο γραφήματος για αναζήτηση—εδώ ορίζετε τη δομή των δεδομένων που σας ενδιαφέρουν. -
LET: Εκχωρεί νέες μεταβλητές ή υπολογισμένες τιμές με βάση αντιστοιχισμένα δεδομένα – προσθέτει παράγωγες στήλες στο αποτέλεσμα. -
FILTER: Περιορίζει τα αποτελέσματα εφαρμόζοντας συνθήκες – καταργεί τις γραμμές που δεν πληρούν τα κριτήρια. -
ORDER BY: Ταξινομεί τα φιλτραρισμένα δεδομένα – βοηθά στην οργάνωση της εξόδου με βάση ένα ή περισσότερα πεδία. -
OFFSETκαιLIMIT: Περιορίστε τον αριθμό των γραμμών που επιστρέφονται—χρήσιμο για ερωτήματα σελιδοποίησης ή top-k. -
RETURN: Καθορίζει το τελικό αποτέλεσμα – καθορίζει ποια δεδομένα πρέπει να συμπεριληφθούν στο σύνολο αποτελεσμάτων και εκτελεί συνάθροιση.
Πώς συνεργάζονται οι προτάσεις
Οι δηλώσεις GQL σχηματίζουν μια διοχέτευση, όπου κάθε δήλωση επεξεργάζεται την έξοδο της προηγούμενης. Αυτή η διαδοχική εκτέλεση καθιστά τα ερωτήματα εύκολα στην ανάγνωση και τον εντοπισμό σφαλμάτων, επειδή η σειρά εκτέλεσης ταιριάζει με τη σειρά ανάγνωσης.
Κύρια σημεία:
- Οι δηλώσεις εκτελούνται αποτελεσματικά διαδοχικά.
- Κάθε δήλωση μετασχηματίζει δεδομένα και τα μεταβιβάζει στην επόμενη.
- Αυτή η διαδικασία δημιουργεί μια σαφή, προβλέψιμη ροή δεδομένων που απλοποιεί σύνθετα ερωτήματα.
Σημαντικό
Για μεγιστοποίηση των επιδόσεων, το γράφημα μπορεί να αναδιατάξετε την εκτέλεση δηλώσεων και να εκτελέσει μεμονωμένες προτάσεις παράλληλα. Αυτές οι βελτιστοποιήσεις δεν επηρεάζουν την ορθότητα των αποτελεσμάτων.
Παράδειγμα σύνθεσης πρότασης
Το ακόλουθο ερώτημα GQL βρίσκει τα πρώτα 10 άτομα που εργάζονται σε εταιρείες με το "Air" στο όνομά τους, τα ταξινομεί με βάση το πλήρες όνομα και επιστρέφει το πλήρες όνομά τους μαζί με το όνομα των εταιρειών τους.
-- Data flows: Match → Let → Filter → Order → Limit → Return
MATCH (p:Person)-[:workAt]->(c:Company) -- Input: unit table, Output: (p, c) table
LET fullName = p.firstName || ' ' || p.lastName -- Input: (p, c) table, Output: (p, c, fullName) table
FILTER c.name CONTAINS 'Air' -- Input: (p, c, fullName) table, Output: filtered table
ORDER BY fullName -- Input: filtered table, Output: sorted table
LIMIT 10 -- Input: sorted table, Output: top 10 rows table
RETURN fullName, c.name AS companyName -- Input: top 10 rows table
-- Output: projected (fullName, companyName) result table
Αυτό το ερώτημα εκτελείται ως εξής:
-
MATCHβρίσκει άτομα που εργάζονται σε εταιρείες. -
LETΗ δημιουργεί πλήρη ονόματα συνδυάζοντας το όνομα και τα ονόματα των οικογενειών. -
FILTERδιατηρεί μόνο υπαλλήλους εταιρειών με «Air» στο όνομα της εταιρείας τους. -
ORDER BYταξινομεί κατά πλήρες όνομα. -
LIMITδέχεται τα πρώτα 10 αποτελέσματα. -
RETURNΕπιστρέφει τα πλήρη ονόματα και τα ονόματα των εταιρειών.
Οι μεταβλητές συνδέουν τα δεδομένα σας
Οι μεταβλητές, όπως p, cκαι fullName στα προηγούμενα παραδείγματα, μεταφέρουν δεδομένα μεταξύ δηλώσεων. Όταν χρησιμοποιείτε ξανά ένα όνομα μεταβλητής, το GQL εξασφαλίζει αυτόματα ότι αναφέρεται στα ίδια δεδομένα, δημιουργώντας ισχυρές συνθήκες σύνδεσης. Οι μεταβλητές ορισμένες φορές ονομάζονται επίσης μεταβλητές σύνδεσης.
Μπορείτε να κατηγοριοποιήσετε μεταβλητές με διαφορετικούς τρόπους:
Κατά προέλευση σύνδεσης:
- Μεταβλητές μοτίβου - συνδεδεμένες με αντιστοίχιση μοτίβων γραφήματος
- Κανονικές μεταβλητές - δεσμευμένες από άλλες κατασκευές γλώσσας
Τύποι μεταβλητών μοτίβου:
-
Μεταβλητές στοιχείου - σύνδεση σε τιμές αναφοράς στοιχείων γραφήματος
- Μεταβλητές κόμβου - σύνδεση σε μεμονωμένους κόμβους
- Μεταβλητές edge - σύνδεση σε μεμονωμένα άκρα
- Μεταβλητές διαδρομής - σύνδεση σε τιμές διαδρομής που αντιπροσωπεύουν αντιστοιχίες διαδρομών
Κατά βαθμό αναφοράς:
- Μεταβλητές Singleton - σύνδεση σε μεμονωμένες τιμές αναφοράς στοιχείων από μοτίβα
- Μεταβλητές ομάδας - σύνδεση σε λίστες τιμών αναφοράς στοιχείων από μοτίβα μεταβλητού μήκους ( ανατρέξτε στην ενότητα Τεχνικές σύνθετης συνάθροισης)
Αποτελέσματα και αποτελέσματα εκτέλεσης
Όταν εκτελείτε ένα ερώτημα, λαμβάνετε ένα αποτέλεσμα εκτέλεσης που αποτελείται από:
-
Ένας (προαιρετικός) πίνακας αποτελεσμάτων με τα δεδομένα από την πρόταση.
RETURN - Πληροφορίες κατάστασης που εμφανίζουν εάν το ερώτημα ολοκληρώθηκε με επιτυχία ή όχι.
Πίνακες αποτελεσμάτων
Ο πίνακας που προκύπτει, εάν υπάρχει, είναι το πραγματικό αποτέλεσμα της εκτέλεσης του ερωτήματος.
Ένας πίνακας αποτελεσμάτων περιλαμβάνει πληροφορίες σχετικά με το όνομα και τον τύπο των στηλών του, μια προτιμώμενη ακολουθία ονόματος στήλης που θα χρησιμοποιηθεί για την εμφάνιση αποτελεσμάτων, εάν ο πίνακας είναι ταξινομημένος και τις ίδιες τις γραμμές.
Σημείωμα
Εάν αποτύχει η εκτέλεση, δεν περιλαμβάνεται πίνακας αποτελεσμάτων στο αποτέλεσμα εκτέλεσης.
Πληροφορίες κατάστασης
Κατά την εκτέλεση του ερωτήματος, η διαδικασία εντοπίζει διάφορες αξιοσημείωτες συνθήκες, όπως σφάλματα ή προειδοποιήσεις. Κάθε συνθήκη καταγράφεται από ένα αντικείμενο κατάστασης στις πληροφορίες κατάστασης του αποτελέσματος εκτέλεσης.
Οι πληροφορίες κατάστασης αποτελούνται από ένα αντικείμενο κύριας κατάστασης και μια (πιθανώς κενή) λίστα άλλων αντικειμένων κατάστασης. Το αντικείμενο κύριας κατάστασης υπάρχει πάντα και υποδεικνύει εάν η εκτέλεση του ερωτήματος ήταν επιτυχής ή απέτυχε.
Κάθε αντικείμενο κατάστασης περιλαμβάνει έναν πενταψήφιο κωδικό κατάστασης (που ονομάζεται GQLSTATUS) που αναγνωρίζει την καταγεγραμμένη συνθήκη και ένα μήνυμα που την περιγράφει.
Κωδικοί κατάστασης επιτυχίας:
| GQLSTATUS | Μήνυμα | Όταν |
|---|---|---|
| 00000 | σημείωση: επιτυχής ολοκλήρωση | Επιτυχία με τουλάχιστον μία γραμμή |
| 00001 | σημείωση: επιτυχής ολοκλήρωση - παραλείπεται αποτέλεσμα | Επιτυχία χωρίς πίνακα (προς το παρόν δεν χρησιμοποιείται) |
| 02000 | σημείωση: δεν υπάρχουν δεδομένα | Επιτυχία με μηδενικές γραμμές |
Άλλοι κωδικοί κατάστασης υποδεικνύουν περαιτέρω σφάλματα ή προειδοποιήσεις που εντοπίζει η διαδικασία εκτέλεσης ερωτήματος.
Σημαντικό
Στον κώδικα εφαρμογής, να βασίζεστε πάντα σε κωδικούς κατάστασης για να ελέγχετε για ορισμένες συνθήκες. Οι κωδικοί κατάστασης είναι εγγυημένοι ότι είναι σταθεροί και η γενική σημασία τους δεν θα αλλάξει στο μέλλον. Μην κάνετε έλεγχο για τα περιεχόμενα των μηνυμάτων, καθώς το συγκεκριμένο μήνυμα που αναφέρεται για έναν κωδικό κατάστασης μπορεί να αλλάξει στο μέλλον, ανάλογα με το ερώτημα ή ακόμα και μεταξύ εκτελέσεων του ίδιου ερωτήματος.
Επιπλέον, τα αντικείμενα κατάστασης μπορεί να περιέχουν ένα υποκείμενο αντικείμενο κατάστασης αιτίας και μια εγγραφή διαγνωστικού ελέγχου με περισσότερες πληροφορίες που χαρακτηρίζουν την καταγεγραμμένη συνθήκη.
Βασικές έννοιες και δηλώσεις
Αυτή η ενότητα καλύπτει τα βασικά δομικά στοιχεία που χρειάζεστε για τη σύνταξη αποτελεσματικών ερωτημάτων GQL. Κάθε έννοια βασίζεται σε πρακτικές δεξιότητες γραφής ερωτημάτων.
Μοτίβα γραφήματος: εύρεση δομής
Τα μοτίβα γραφημάτων είναι η καρδιά των ερωτημάτων GQL. Σας επιτρέπουν να περιγράψετε τη δομή δεδομένων που αναζητάτε χρησιμοποιώντας διαισθητική, οπτική σύνταξη που μοιάζει με τις σχέσεις που θέλετε να βρείτε.
Απλά μοτίβα:
Ξεκινήστε με βασικά μοτίβα σχέσεων:
-- Find direct friendships
(p:Person)-[:knows]->(f:Person)
-- Find people working at any company
(p:Person)-[:workAt]->(c:Company)
-- Find cities in any country/region
(ci:City)-[:isPartOf]->(co:Country)
Μοτίβα με συγκεκριμένα δεδομένα:
-- Find employees named Alice
(p:Person)-[:workAt]->(c:Company)
WHERE p.firstName = 'Alice'
-- Find friends who both have birthdays after December 31, 1999
(p:Person)-[:knows]->(f:Person)
WHERE p.birthday > 19991231 AND f.birthday > 19991231
Παραστάσεις ετικέτας για ευέλικτη επιλογή οντότητας:
(:Person|Company)-[:isLocatedIn]->(p:City|Country) -- OR with |
(:Place&City) -- AND with &
(:Person&!Company) -- NOT with !
Σημείωμα
Οι κόμβοι μπορούν να έχουν πολλές ετικέτες, αλλά οι τύποι άκρου με πολλαπλές ετικέτες δεν υποστηρίζονται ακόμα.
Οι παραστάσεις ετικέτας σάς επιτρέπουν να αντιστοιχίζετε διαφορετικά είδη κόδων σε ένα μόνο μοτίβο, καθιστώντας τα ερωτήματά σας πιο ευέλικτα.
Η μεταβλητή επαναχρησιμοποίηση δημιουργεί ισχυρούς συνδέσμους:
-- Find coworkers: people who work at the same company
(c:Company)<-[:workAt]-(x:Person)-[:knows]-(y:Person)-[:workAt]->(c)
Η επαναχρησιμοποίηση της μεταβλητής c εξασφαλίζει ότι αμφότερα τα άτομα εργάζονται στην ίδια εταιρεία, δημιουργώντας έναν περιορισμό αυτόματης σύνδεσης. Αυτό το μοτίβο είναι ένα μοτίβο κλειδιού για την έκφραση σχέσεων "ίδιας οντότητας".
Σημαντικό
Κρίσιμες πληροφορίες: Η μεταβλητή επαναχρησιμοποίηση σε μοτίβα δημιουργεί δομικούς περιορισμούς. Χρησιμοποιήστε αυτή την τεχνική για να εκφράσετε σύνθετες σχέσεις γραφημάτων όπως "φίλοι που εργάζονται στην ίδια εταιρεία" ή "άτομα στην ίδια πόλη".
Φιλτράρισμα σε επίπεδο μοτίβου με το WHERE:
-- Filter during pattern matching (more efficient)
(p:Person WHERE p.birthday < 19940101)-[:workAt]->(c:Company WHERE c.id > 1000)
-- Filter edges during matching
(p:Person)-[w:workAt WHERE w.workFrom >= 2000]->(c:Company)
Μοτίβα οριοθέτησης μεταβλητού μήκους:
(:Person)-[:knows]->{1,3}(:Person) -- Friends up to 3 degrees away
Λειτουργίες διαδρομής για τον έλεγχο της διέλευσης:
Οι λειτουργίες διαδρομής ελέγχουν τον τρόπο με τον οποίο η μηχανή ερωτημάτων χειρίζεται επαναλαμβανόμενα στοιχεία κατά τη διάρκεια διέλευσης μεταβλητού μήκους:
| Λειτουργία διαδρομής | Περιγραφή |
|---|---|
WALK |
Επιτρέπει επαναλαμβανόμενους κόμβους και άκρα. Κανένας περιορισμός στη διέλευση. |
TRAIL |
Δεν υπάρχουν επαναλαμβανόμενες άκρες, αλλά οι κόμβοι ενδέχεται να επαναληφθούν. Αυτή είναι η προεπιλεγμένη λειτουργία διαδρομής. |
SIMPLE |
Δεν υπάρχουν επαναλαμβανόμενοι κόμβοι (εκτός από τον πρώτο και τον τελευταίο μπορεί να είναι ίσοι). |
ACYCLIC |
Δεν υπάρχουν καθόλου επαναλαμβανόμενοι κόμβοι, εμποδίζοντας οποιονδήποτε κύκλο στη διαδρομή. |
Χρησιμοποιήστε TRAIL μοτίβα για να αποτρέψετε κύκλους κατά τη διάρκεια της διέλευσης του γραφήματος, εξασφαλίζοντας ότι κάθε άκρο επισκέπτεται το πολύ μία φορά:
-- Find paths without visiting the same :knows edge twice
MATCH TRAIL (src:Person)-[:knows]->{1,4}(dst:Person)
WHERE src.firstName = 'Alice' AND dst.firstName = 'Bob'
RETURN count(*) AS num_connections
-- Find acyclic paths in social networks
MATCH TRAIL (p:Person)-[e:knows]->{,3}(celebrity:Person)
RETURN
p.firstName || ' ' || p.lastName AS person_name,
celebrity.firstName || ' ' || celebrity.lastName AS celebrity_name,
count(e) AS distance
LIMIT 1000
Χρησιμοποιήστε ACYCLIC το όταν χρειάζεται να εγγυηθείτε ότι ο κόμβος επισκέπτεται δύο φορές:
-- Find paths where no person appears more than once
MATCH ACYCLIC (src:Person)-[:knows]->{1,4}(dst:Person)
WHERE src.firstName = 'Alice'
RETURN dst.firstName, dst.lastName
LIMIT 100
Σύνδεση άκρου μεταβλητού μήκους:
Σε μοτίβα μεταβλητού μήκους, οι μεταβλητές άκρου καταγράφουν διαφορετικές πληροφορίες με βάση το περιβάλλον:
-- Edge variable 'e' binds to a single edge for each result row
MATCH (p:Person)-[e:knows]->(friend:Person)
RETURN p.firstName, e.creationDate, friend.firstName -- e refers to one specific relationship
LIMIT 1000
-- Edge variable 'e' binds to a group list of all edges in the path
MATCH (p:Person)-[e:knows]->{2,4}(friend:Person)
RETURN
p.firstName || ' ' || p.lastName AS person_name,
friend.firstName || ' ' || friend.lastName AS friend_name,
-- e is a list
size(e) AS num_edges
LIMIT 1000
Αυτή η διάκριση είναι καίριας σημασίας για τη σωστή χρήση των μεταβλητών άκρου.
Σύνθετα μοτίβα με πολλές σχέσεις:
MATCH (p:Person), (p)-[:workAt]->(c:Company), (p)-[:isLocatedIn]->(city:City)
RETURN p.firstName, p.lastName, c.name AS company_name, city.name AS city_name
LIMIT 1000
Αυτό το μοτίβο εντοπίζει άτομα μαζί με τον χώρο εργασίας και την κατοικία τους, εμφανίζοντας πώς ένα άτομο συνδέεται σε πολλές άλλες οντότητες.
Βασικές προτάσεις
Το GQL παρέχει συγκεκριμένους τύπους πρότασης που συνεργάζονται για την επεξεργασία των δεδομένων του γραφήματος σας βήμα προς βήμα. Η κατανόηση αυτών των δηλώσεων είναι απαραίτητη για τη δημιουργία αποτελεσματικών ερωτημάτων.
MATCH δήλωση
Σύνταξη:
MATCH <graph pattern>, <graph pattern>, ... [ WHERE <predicate> ]
Η MATCH πρόταση λαμβάνει δεδομένα εισόδου και εντοπίζει μοτίβα γραφημάτων. Συνδέει μεταβλητές εισόδου με μεταβλητές μοτίβου και εξάγει όλους τους αντιστοιχισμένους συνδυασμούς.
Μεταβλητές εισόδου και εξόδου:
-- Input: unit table (no columns, one row)
-- Pattern variables: p, c
-- Output: table with (p, c) columns for each person-company match
MATCH (p:Person)-[:workAt]->(c:Company)
Φιλτράρισμα σε επίπεδο πρότασης χρησιμοποιώντας το WHERE:
-- Filter pattern matches
MATCH (p:Person)-[:workAt]->(c:Company) WHERE p.lastName = c.name
Μπορείτε να δημοσιεύσετε-φιλτράρετε όλες τις αντιστοιχίσεις χρησιμοποιώντας τη συνάρτηση WHERE. Αυτή η προσέγγιση αποτρέπει μια ξεχωριστή FILTER δήλωση.
Σύνδεση με τη χρήση μεταβλητών εισόδου:
Όταν MATCH δεν είναι η πρώτη πρόταση, συνδέει δεδομένα εισόδου με αντιστοιχίσεις μοτίβων:
...
-- Input: table with 'targetCompany' column
-- Implicit join: targetCompany (equality join)
-- Output: table with (targetCompany, p, r) columns
MATCH (p:Person)-[r:workAt]->(targetCompany)
Σημαντικό
Το γράφημα υποστηρίζει βασική και πλήρη γραμμική σύνθεση πρότασης (αλληλου χωνευμάτων MATCH, LET, FILTER, RETURNκαι άλλες βασικές δηλώσεις). Οι λειτουργίες set όπως UNION DISTINCT, EXCEPT, INTERSECT, και OTHERWISE δεν υποστηρίζονται ακόμα. Για περισσότερες πληροφορίες, ανατρέξτε στο άρθρο σχετικά με τους τρέχοντες περιορισμούς.
Συμπεριφορές σύνδεσης κλειδιού:
Πώς MATCH χειρίζεται τη σύνδεση δεδομένων:
- Ισότητα μεταβλητών: Οι μεταβλητές εισόδου ενώνονται με μεταβλητές μοτίβου χρησιμοποιώντας αντιστοίχιση ισότητας
-
Εσωτερικός σύνδεσμος: Οι γραμμές εισόδου χωρίς αντιστοιχίσεις μοτίβων απορρίπτονται. Χρησιμοποιήστε το
OPTIONAL MATCHγια συμπεριφορά αριστερού εξωτερικού συνδέσμου. -
Σειρά φιλτραρίσματος: Φίλτρα σε επίπεδο
WHEREπρότασης μετά την ολοκλήρωση της αντιστοίχισης μοτίβων - Συνδεσιμότητα μοτίβων: Πολλά μοτίβα πρέπει να μοιράζονται τουλάχιστον μία μεταβλητή για τη σωστή σύνδεση
- Επιδόσεις: Οι κοινόχρηστες μεταβλητές δημιουργούν αποτελεσματικούς περιορισμούς σύνδεσης
Σημαντικό
Περιορισμός: Εάν αυτή η MATCH πρόταση δεν είναι η πρώτη πρόταση, τουλάχιστον μία μεταβλητή εισόδου πρέπει να ενώσει με μια μεταβλητή μοτίβου. Τα πολλαπλά μοτίβα πρέπει να έχουν μία κοινή μεταβλητή.
Τα πολλαπλά μοτίβα απαιτούν κοινόχρηστες μεταβλητές:
-- Shared variable 'p' joins the two patterns
-- Output: people with both workplace and residence data
MATCH (p:Person)-[:workAt]->(c:Company),
(p)-[:isLocatedIn]->(city:City)
OPTIONAL MATCH δήλωση
Σύνταξη:
OPTIONAL MATCH <graph pattern> [ WHERE <predicate> ]
OPTIONAL MATCH Λειτουργεί όπως MATCH , αλλά χρησιμοποιεί σημασιολογία αριστερού-εξωτερικού συνδέσμου. Εάν το μοτίβο δεν συμφωνεί με μια γραμμή εισόδου, το ερώτημα διατηρεί τη γραμμή με NULL τιμές για μη αντιστοιχίες μεταβλητών, αντί να την απορρίπτει.
Παράδειγμα:
-- Find all people and, if available, their workplace
MATCH (p:Person)
OPTIONAL MATCH (p)-[:workAt]->(c:Company)
RETURN p.firstName, p.lastName, c.name AS company_name
Τα άτομα που δεν εργάζονται σε οποιαδήποτε εταιρεία εξακολουθούν να εμφανίζονται στα αποτελέσματα με NULL το για company_name.
Φιλοδώρημα
Χρησιμοποιήστε OPTIONAL MATCH την όταν θέλετε να συμπεριλάβετε οντότητες που μπορεί να μην έχουν μια συγκεκριμένη σχέση, παρόμοια με μια SQL LEFT JOIN.
LET δήλωση
Σύνταξη:
LET <variable> = <expression>, <variable> = <expression>, ...
Η LET πρόταση δημιουργεί υπολογισμένες μεταβλητές και επιτρέπει τον μετασχηματισμό δεδομένων εντός της διοχέτευσης ερωτημάτων σας.
Δημιουργία βασικής μεταβλητής:
MATCH (p:Person)
LET fullName = p.firstName || ' ' || p.lastName
RETURN *
LIMIT 1000
Σύνθετοι υπολογισμοί:
MATCH (p:Person)
LET adjustedAge = 2000 - (p.birthday / 10000),
fullProfile = p.firstName || ' ' || p.lastName || ' (' || p.gender || ')'
RETURN *
LIMIT 1000
Συμπεριφορές κλειδιού:
- Η μηχανή ερωτημάτων αξιολογεί παραστάσεις για κάθε γραμμή εισόδου.
- Τα αποτελέσματα μετατρέπονται σε νέες στήλες στον πίνακα εξόδου.
- Οι μεταβλητές μπορούν να αναφέρουν μόνο υπάρχουσες μεταβλητές από προηγούμενες προτάσεις.
- Ο μηχανισμός ερωτημάτων αξιολογεί πολλές αναθέσεις σε μία
LETπρόταση παράλληλα (χωρίς διασταυρούμενες αναφορές).
FILTER δήλωση
Σύνταξη:
FILTER [ WHERE ] <predicate>
Η FILTER πρόταση παρέχει ακριβή έλεγχο των δεδομένων που προχωρούν μέσω της διοχέτευσης ερωτημάτων σας.
Βασικό φιλτράρισμα:
MATCH (p:Person)
FILTER p.birthday < 19980101 AND p.gender = 'female'
RETURN *
Σύνθετες λογικές συνθήκες:
MATCH (p:Person)
FILTER (p.gender = 'male' AND p.birthday < 19940101)
OR (p.gender = 'female' AND p.birthday < 19990101)
OR p.browserUsed = 'Edge'
RETURN *
Μοτίβα φιλτραρίσματος με επίγνωση null:
Χρησιμοποιήστε αυτά τα μοτίβα για να χειριστείτε με ασφάλεια τις τιμές null:
-
Έλεγχος για τιμές:
p.firstName IS NOT NULL- έχει όνομα -
Επικύρωση δεδομένων:
p.id > 0- έγκυρο αναγνωριστικό -
Χειρισμός δεδομένων που λείπουν:
NOT coalesce(p.locationIP, '10.x.x.x') STARTS WITH '10.x.x.x'- δεν συνδέεστε από το τοπικό δίκτυο -
Συνδυασμός συνθηκών: Χρήση
AND/ORμε ρητούς ελέγχους null για σύνθετη λογική
Προσοχή
Να θυμάστε ότι οι συνθήκες που περιλαμβάνουν τιμές null επιστρέφουν UNKNOWN, το οποίο φιλτράρει αυτές τις γραμμές. Χρησιμοποιήστε ρητούς IS NULL ελέγχους όταν χρειάζεστε λογική συμπεριλαμβανομένης της null.
ORDER BY δήλωση
Σύνταξη:
ORDER BY <expression> [ ASC | DESC ], <expression> [ ASC | DESC ], ...
Ταξινόμηση πολλών επιπέδων με υπολογισμένες παραστάσεις:
MATCH (p:Person)
RETURN *
ORDER BY p.firstName DESC, -- Primary: by first name (Z-A)
p.birthday ASC, -- Secondary: by age (oldest first)
p.id DESC -- Tertiary: by ID (highest first)
Χειρισμός null στην ταξινόμηση:
ORDER BY coalesce(p.gender, 'not specified') DESC -- Treat NULL as 'not specified'
Λεπτομέρειες συμπεριφοράς ταξινόμησης:
Κατανόηση του τρόπου ORDER BY λειτουργίας:
- Ο μηχανισμός ερωτημάτων αξιολογεί παραστάσεις για κάθε γραμμή και, στη συνέχεια, τα αποτελέσματα καθορίζουν τη σειρά των γραμμών.
- Πολλά κλειδιά ταξινόμησης δημιουργούν ιεραρχική σειρά (πρωτεύων, δευτερεύοντα, πρόσθια και ούτω καθεξής).
-
NULLΤο είναι πάντα η μικρότερη τιμή στις συγκρίσεις. -
ASC(αύξουσα) είναι η προεπιλεγμένη σειρά και πρέπει να καθορίσετεDESCρητά (φθίνουσα). - Μπορείτε να ταξινομήσετε κατά υπολογιζόμενες τιμές, όχι μόνο αποθηκευμένες ιδιότητες.
Προσοχή
Μόνο η ακόλουθη πρόταση αμέσως μετά μπορεί να δει τη σειρά ταξινόμησης που ORDER BY καθορίζει.
Επομένως, ORDER BY ακολουθούμενο από RETURN * δεν παράγεται ταξινομημένο αποτέλεσμα.
Συγκρίνω:
MATCH (a:Person)-[r:knows]->(b:Person)
LET aName = a.firstName || ' ' || a.lastName
LET bName = b.firstName || ' ' || b.lastName
ORDER BY r.creationDate DESC
/* intermediary result _IS_ guaranteed to be ordered here */
RETURN aName, bName, r.creationDate AS since
/* final result _IS_ _NOT_ guaranteed to be ordered here */
με:
MATCH (a:Person)-[r:knows]->(b:Person)
LET aName = a.firstName || ' ' || a.lastName
LET bName = b.firstName || ' ' || b.lastName
/* intermediary result _IS_ _NOT_ guaranteed to be ordered here */
RETURN aName, bName, r.creationDate AS since
ORDER BY r.creationDate DESC
/* final result _IS_ guaranteed to be ordered here */
Αυτή η διαφορά έχει άμεσες συνέπειες για τα ερωτήματα "Top-k": LIMIT πρέπει πάντα να ακολουθείτε την ORDER BY πρόταση που καθορίζει την προβλεπόμενη σειρά ταξινόμησης.
OFFSET και LIMIT δηλώσεις
Σύνταξη:
OFFSET <offset> [ LIMIT <limit> ]
| LIMIT <limit>
Συνήθη μοτίβα:
-- Basic top-N query
MATCH (p:Person)
RETURN *
ORDER BY p.id DESC
LIMIT 10 -- Top 10 by ID
Σημαντικό
Για προβλέψιμα αποτελέσματα σελιδοποίησης, χρησιμοποιήστε ORDER BY πάντα πριν OFFSET και LIMIT για να εξασφαλίσετε συνεπή σειρά γραμμών σε όλα τα ερωτήματα.
RETURN: βασική προβολή αποτελέσματος
Σύνταξη:
RETURN [ DISTINCT ] <expression> [ AS <alias> ], <expression> [ AS <alias> ], ...
[ ORDER BY <expression> [ ASC | DESC ], <expression> [ ASC | DESC ], ... ]
[ OFFSET <offset> ]
[ LIMIT <limit> ]
Η RETURN πρόταση παράγει την τελική έξοδο του ερωτήματός σας καθορίζοντας ποια δεδομένα εμφανίζονται στον πίνακα που προκύπτει.
Βασικό αποτέλεσμα:
MATCH (p:Person)-[:workAt]->(c:Company)
RETURN p.firstName || ' ' || p.lastName AS name,
p.birthday,
c.name
Χρήση ψευδώνυμων για λόγους σαφήνειας:
MATCH (p:Person)-[:workAt]->(c:Company)
RETURN p.firstName AS first_name,
p.lastName AS last_name,
c.name AS company_name
Συνδυασμός με ταξινόμηση και κορυφαία k:
MATCH (p:Person)-[:workAt]->(c:Company)
RETURN p.firstName || ' ' || p.lastName AS name,
p.birthday AS birth_year,
c.name AS company
ORDER BY birth_year ASC
LIMIT 10
Διπλότυπος χειρισμός με χρήση της DISTINCT:
-- Remove duplicate combinations
MATCH (p:Person)-[:workAt]->(c:Company)
RETURN DISTINCT p.gender, p.browserUsed, p.birthday AS birth_year
ORDER BY p.gender, p.browserUsed, birth_year
Συνδυασμός με συνάθροιση:
MATCH (p:Person)-[:workAt]->(c:Company)
RETURN count(DISTINCT p) AS employee_count
RETURN με GROUP BY: προβολή ομαδοποιημένων αποτελεσμάτων
Σύνταξη:
RETURN [ DISTINCT ] <expression> [ AS <alias> ], <expression> [ AS <alias> ], ...
GROUP BY <variable>, <variable>, ...
[ ORDER BY <expression> [ ASC | DESC ], <expression> [ ASC | DESC ], ... ]
[ OFFSET <offset> ]
[ LIMIT <limit> ]
Χρησιμοποιήστε το για να ομαδοποιήσετε GROUP BY γραμμές κατά κοινόχρηστες τιμές και να υπολογίσετε συναρτήσεις συγκεντρωτικών αποτελεσμάτων εντός κάθε ομάδας.
Βασική ομαδοποίηση με συνάθροιση:
MATCH (p:Person)-[:workAt]->(c:Company)
LET companyName = c.name
RETURN companyName,
count(*) AS employeeCount,
avg(p.birthday) AS avg_birth_year
GROUP BY companyName
ORDER BY employeeCount DESC
Ομαδοποίηση πολλών στηλών:
MATCH (p:Person)
LET gender = p.gender
LET browser = p.browserUsed
RETURN gender,
browser,
count(*) AS person_count,
avg(p.birthday) AS avg_birth_year,
min(p.creationDate) AS first_joined,
max(p.id) AS highest_id
GROUP BY gender, browser
ORDER BY avg_birth_year DESC
LIMIT 10
Σημείωμα
Για προηγμένες τεχνικές συνάθροισης, συμπεριλαμβανομένης της οριζόντιας συνάθροισης σε μοτίβα μεταβλητού μήκους, ανατρέξτε στο θέμα Τεχνικές σύνθετης συνάθροισης.
Τύποι δεδομένων: εργασία με τιμές
Το GQL υποστηρίζει εμπλουτισμένους τύπους δεδομένων για την αποθήκευση και τον χειρισμό διαφορετικών ειδών πληροφοριών στο γράφημό σας.
Βασικοί τύποι τιμών
-
Αριθμοί:
INT64,UINT64(FLOAT64ονομάζεταιDOUBLEεπίσης ) για υπολογισμούς και μετρήσεις -
Κείμενο:
STRINGγια ονόματα, περιγραφές και δεδομένα κειμένου -
Λογική:
BOOLμε τρεις τιμές: TRUE, FALSE και UNKNOWN (για χειρισμό null) -
Ώρα:
ZONED DATETIMEγια χρονικές σημάνσεις με πληροφορίες ζώνης ώρας -
Συλλογές:
LIST<T>για πολλαπλές τιμές του ίδιου τύπουT,PATHγια αποτελέσματα διέλευσης γραφήματος -
Στοιχεία γραφήματος:
NODEκαιEDGEγια την αναφορά δεδομένων γραφήματος
Σημαντικό
Δεν μπορείτε να χρησιμοποιήσετε συγκεκριμένους τύπους τιμών ως τους τύπους τιμών ιδιοτήτων. Συγκεκριμένα, δεν μπορείτε να χρησιμοποιήσετε τιμές που αφορούν τιμές αναφοράς στοιχείων γραφήματος ως τιμές ιδιοτήτων (όπως λίστες κόδων ή διαδρομών).
Παραδείγματα λεκτικών σταθερών
42 -- Integer literal
"Hello, graph!" -- String literal
TRUE -- Boolean literal
ZONED_DATETIME('2024-01-15T10:30:00Z') -- DateTime with timezone literakl
[1, 2, 3] -- Literal list of integers
Κρίσιμα μοτίβα χειρισμού null
-- Equality predicates with NULL always returns UNKNOWN
5 = NULL -- Evaluates to UNKNOWN (not FALSE!)
NULL = NULL -- Evaluates to UNKNOWN (not TRUE!)
-- Use IS NULL predicates for explicit null testing
p.nickname IS NULL -- Evaluates to TRUE if nickname is null
p.nickname IS NOT NULL -- Evaluates to TRUE if nickname has a value
-- Use the COALESCE function for null-safe value selection
coalesce(p.nickname, p.firstName, '???') -- Evaluates to first non-null value
Επιπτώσεις λογικής τριών τιμών
-- In FILTER statements, only TRUE values pass through
FILTER p.birthday > 0 -- Removes rows where birthday is null or missing or zero
-- It's important to understand that NOT UNKNOWN = UNKNOWN
FILTER NOT (p.birthday > 0) -- Removes rows where birthday is null or missing or positive
-- Use explicit null handling for inclusive filtering
FILTER p.birthday < 19980101 OR p.birthday IS NULL -- Includes null birthdays
Προσοχή
Λογική τριών τιμών σημαίνει NULL = NULL επιστρέφει UNKNOWN, όχι TRUE. Αυτή η συμπεριφορά επηρεάζει το φιλτράρισμα και τους συνδέσμους. Να χρησιμοποιείται IS NULL πάντα για δοκιμές null.
Παραστάσεις: μετασχηματισμός και ανάλυση δεδομένων
Οι παραστάσεις σάς επιτρέπουν να υπολογίζετε, να συγκρίνετε και να μετασχηματίζετε δεδομένα μέσα στα ερωτήματά σας. Μοιάζουν με παραστάσεις στην SQL, αλλά έχουν επιπλέον δυνατότητες για τον χειρισμό δεδομένων γραφήματος.
Συνήθεις τύποι παράστασης
p.birthday < 19980101 -- Birth year comparison
p.firstName || ' ' || p.lastName -- String concatenation
count(*) -- Aggregation
p.firstName IN ['Alice', 'Bob'] -- List membership
coalesce(p.firstName, p.lastName) -- Null handling
Σύνθετη κατηγόρημα σύνθεση
-- Combine conditions with proper precedence
FILTER (p.birthday > 19560101 AND p.birthday < 20061231)
AND ((p.gender IN ['male', 'female']) OR (p.browserUsed IS NOT NULL))
-- Use parentheses for clarity and correctness
FILTER p.gender = 'female' AND (p.firstName STARTS WITH 'A' OR p.id > 1000)
Αντιστοίχιση μοτίβου συμβολοσειράς
-- Pattern matching with different operators
p.locationIP CONTAINS '192.168' -- Substring search
p.firstName STARTS WITH 'John' -- Prefix matching
p.lastName ENDS WITH 'son' -- Suffix matching
-- Case-insensitive operations
upper(p.firstName) = 'ALICE' -- Convert to uppercase for comparison
Ενσωματωμένες συναρτήσεις ανά κατηγορία
Το GQL παρέχει αυτές τις κατηγορίες συναρτήσεων για διαφορετικές ανάγκες επεξεργασίας δεδομένων:
Συναρτήσεις συγκεντρωτικών αποτελεσμάτων:
count(),sum(),avg(),min(),max()για τη σύνοψη δεδομένωνΠαραστάσεις υπό όρους:
CASE/WHEN/THEN/ELSE/ENDκαιNULLIF()για λογική υπό όρους. Για παράδειγμα:MATCH (p:Person) RETURN p.firstName, CASE WHEN p.birthday < 20000101 THEN 'Before 2000' ELSE '2000 or later' END AS era, NULLIF(p.gender, 'unknown') AS genderΣυναρτήσεις συμβολοσειράς:
char_length(),upper(),lower()trim()για επεξεργασία κειμένου (US ASCII μόνο για αντιστοίχιση υποθέσεων)Συναρτήσεις γραφήματος:
nodes(),edges(),elements(),labels(),path_length()για την ανάλυση δομών γραφήματοςΓενικές συναρτήσεις:
coalesce(),to_json_string()για τον χειρισμό τιμών null και σειριοποίησης
Προτεραιότητα τελεστών για σύνθετες παραστάσεις
- Πρόσβαση ιδιότητας (
.) - Πολλαπλασιασμός και διαίρεση (
*,/) - Πρόσθεση και αφαίρεση (
+,-) - Σύγκριση (
=,<>, ,<>,<=,>=) - Λογική άρνηση (
NOT) - Λογική σύνδεση (
AND) - Λογική αποκλειστική αποσύνδεση (
XOR) - Λογική αποσύνδεση (
OR)
Στην προηγούμενη λίστα, ένας τελεστής με μικρότερο αριθμό "συνδέεται πιο σφιχτά" από έναν τελεστή με μεγαλύτερο αριθμό.
Για παράδειγμα, το είναι NOT n.prop OR m.prop αλλά (NOT n.prop) OR m.prop όχιNOT (n.prop OR m.prop).
Φιλοδώρημα
Χρησιμοποιήστε παρενθέσεις για να κάνετε ρητή την προτεραιότητα. Οι σύνθετες παραστάσεις είναι πιο ευανάγνωστες και ο εντοπισμός σφαλμάτων όταν η ομαδοποίηση είναι σαφής.
Προηγμένες τεχνικές ερωτημάτων
Αυτή η ενότητα καλύπτει εξελιγμένα μοτίβα και τεχνικές για τη δημιουργία σύνθετων, αποτελεσματικών ερωτημάτων γραφημάτων. Αυτά τα μοτίβα υπερβαίνουν τη χρήση βασικής πρότασης για να σας βοηθήσουν να συντάξετε ισχυρά αναλυτικά ερωτήματα.
Σύνθετη σύνθεση πολλαπλών πολιτειών
Σημαντικό
Το γράφημα υποστηρίζει βασική και πλήρη γραμμική σύνθεση δήλωσης. Οι λειτουργίες set όπως UNION DISTINCT, EXCEPT, INTERSECT, και OTHERWISE δεν υποστηρίζονται ακόμα. Για περισσότερες πληροφορίες, ανατρέξτε στο άρθρο σχετικά με τους τρέχοντες περιορισμούς.
Η κατανόηση του τρόπου αποτελεσματικής σύνταξης σύνθετων ερωτημάτων είναι καίριας σημασίας για την υποβολή σύνθετων ερωτημάτων σε γραφήματα.
UNION ALL
Χρησιμοποιήστε UNION ALL το για να συνδυάσετε αποτελέσματα από δύο ή περισσότερα γραμμικά στοιχεία επιπέδου μπλοκ ερωτημάτων:
-- Combine results from two separate pattern matches
MATCH (p:Person)-[:workAt]->(c:Company)
RETURN p.firstName AS name, c.name AS affiliation
UNION ALL
MATCH (p:Person)-[:studyAt]->(u:University)
RETURN p.firstName AS name, u.name AS affiliation
UNION ALL Διατηρεί όλες τις γραμμές, συμπεριλαμβανομένων των διπλότυπων.
UNION DISTINCT (το οποίο καταργεί τα διπλότυπα) δεν υποστηρίζεται ακόμα.
Εξέλιξη μοτίβου πολλών βημάτων
Αλυσιδωτές πολλαπλές προτάσεις για σταδιακή δημιουργία σύνθετης ανάλυσης:
-- Build complex analysis step by step
MATCH (company:Company)<-[:workAt]-(employee:Person)
LET companyName = company.name
MATCH (employee)-[:isLocatedIn]->(city:City)
FILTER employee.birthday < 19850101
LET cityName = city.name
RETURN companyName, cityName, avg(employee.birthday) AS avgBirthday, count(employee) AS employeeCount
GROUP BY companyName, cityName
ORDER BY avgBirthday DESC
Αυτό το ερώτημα δημιουργεί σταδιακά πολυπλοκότητα: βρείτε εταιρείες, τους υπαλλήλους τους, τις τοποθεσίες των εργαζομένων, φιλτράρετε εταιρείες με υπαλλήλους που γεννήθηκαν πριν από το 1985, υπολογίστε τα μέσα γενέθλια και συνοψίστε και ταξινομήστε τα αποτελέσματα.
Χρήση οριζόντιας συνάθροισης
Συγκεντρώσεις οριζόντιας συνάθροισης σε μοτίβα μεταβλητού μήκους μέσα σε μία μόνο γραμμή:
-- Find people and their minimum distance to people working at Microsoft
MATCH TRAIL (p:Person)-[e:knows]->{,5}(:Person)-[:workAt]->(:Company { name: 'Microsoft'})
LET p_name = p.lastName || ', ' || p.firstName
RETURN p_name, min(count(e)) AS minDistance
GROUP BY p_name
ORDER BY minDistance DESC
Σημείωμα
Αυτό το ερώτημα δεν υποστηρίζεται ακόμα (γνωστό ζήτημα).
Εμβέλεια μεταβλητών και στοιχείο ελέγχου ροής για προχωρημένους
Οι μεταβλητές συνδέουν δεδομένα σε προτάσεις ερωτημάτων και ενεργοποιούν σύνθετες διασχίσεις γραφημάτων. Η κατανόηση των σύνθετων κανόνων εμβέλειας σάς βοηθά να γράφετε εξελιγμένα ερωτήματα πολλαπλών δηλώσεων.
Μοτίβα σύνδεσης και εμβέλειας μεταβλητών
-- Variables flow forward through subsequent statements
MATCH (p:Person) -- Bind p
LET fullName = p.firstName || ' ' || p.lastName -- Bind concatenation of p.firstName and p.lastName as fullNume
FILTER fullName CONTAINS 'Smith' -- Filter for fullNames with “Smith” substring (p is still bound)
RETURN p.id, fullName -- Only return p.id and fullName (p is dropped from scope)
Επαναχρησιμοποίηση μεταβλητής για ενώσεις σε όλες τις προτάσεις
-- Multi-statement joins using variable reuse
MATCH (p:Person)-[:workAt]->(:Company) -- Find people with jobs
MATCH (p)-[:isLocatedIn]->(:City) -- Same p: people with both job and residence
MATCH (p)-[:knows]->(friend:Person) -- Same p: their social connections
RETURN *
Κρίσιμοι κανόνες και περιορισμοί εμβέλειας
-- ✅ Backward references work
MATCH (p:Person)
LET adult = p.birthday < 20061231 -- Can reference p from previous statement
RETURN *
-- ❌ Forward references don't work
LET adult = p.birthday < 20061231 -- Error: p not yet defined
MATCH (p:Person)
RETURN *
-- ❌ Variables in same LET statement can't reference each other
MATCH (p:Person)
LET name = p.firstName || ' ' || p.lastName,
greeting = 'Hello, ' || name -- Error: name not visible yet
RETURN *
-- ✅ Use separate statements for dependent variables
MATCH (p:Person)
LET name = p.firstName || ' ' || p.lastName
LET greeting = 'Hello, ' || name -- Works: name now available
RETURN *
Ορατότητα μεταβλητών σε σύνθετα ερωτήματα
-- Variables remain visible until overridden or query ends
MATCH (p:Person) -- p available from here
LET gender = p.gender -- gender available from here
MATCH (p)-[:knows]->(e:Person) -- p still refers to original person
-- e is new variable for managed employee
RETURN p.firstName AS manager, e.firstName AS friend, gender
Προσοχή
Οι μεταβλητές στην ίδια πρόταση δεν μπορούν να αναφέρονται μεταξύ τους, εκτός από τα μοτίβα γραφημάτων. Χρησιμοποιήστε ξεχωριστές προτάσεις για τη δημιουργία εξαρτώμενων μεταβλητών.
Προηγμένες τεχνικές συνάθροισης
Το GQL υποστηρίζει δύο διακριτούς τύπους συνάθροισης για την ανάλυση δεδομένων σε ομάδες και συλλογές: κατακόρυφη συνάθροιση με GROUP BY και οριζόντια συνάθροιση σε μοτίβα μεταβλητού μήκους.
Κατακόρυφη συνάθροιση με ΟΜΑΔΟΠΟΊΗΣΗ ΚΑΤΑ
Η κατακόρυφη συνάθροιση (που καλύπτεται RETURN με GROUP BY) ομαδοποιεί γραμμές κατά κοινόχρηστες τιμές και υπολογίζει συγκεντρωτικές τιμές εντός κάθε ομάδας:
MATCH (p:Person)-[:workAt]->(c:Company)
RETURN c.name AS companyName,
count(*) AS employee_count,
avg(p.birthday) AS avg_birth_year
GROUP BY companyName
Αυτή η προσέγγιση δημιουργεί μία γραμμή αποτελεσμάτων ανά εταιρεία, συναθροίζοντας όλους τους υπαλλήλους σε κάθε ομάδα.
Οριζόντια συνάθροιση με μεταβλητές λίστας ομάδων
Η οριζόντια συνάθροιση υπολογίζει συγκεντρωτικές τιμές σε συλλογές που συνδέονται με μοτίβα μεταβλητού μήκους. Όταν χρησιμοποιείτε άκρα μεταβλητού μήκους, η μεταβλητή άκρου μετατρέπεται σε μεταβλητή λίστας ομάδων που περιέχει όλα τα άκρα σε κάθε αντιστοιχισμένη διαδρομή:
-- Group list variable 'edges' enables horizontal aggregation
MATCH (p:Person)-[edges:knows]->{2,4}(friend:Person)
RETURN p.firstName || ' ' || p.lastName AS person_name,
friend.firstName || ' ' || friend.lastName AS friend_name,
size(edges) AS degrees_of_separation,
avg(edges.creationDate) AS avg_connection_age,
min(edges.creationDate) AS oldest_connection
Σημείωμα
Αυτό το ερώτημα δεν υποστηρίζεται ακόμα (γνωστό ζήτημα).
Οι βασικές διαφορές μεταξύ κατακόρυφης και οριζόντιας συνάθροισης είναι οι εξής:
- Η κατακόρυφη συνάθροιση συνοψίζει σε γραμμές ή ομαδοποιεί γραμμές και συνοψίζει σε όλες τις γραμμές κάθε ομάδας.
- Η οριζόντια συνάθροιση συνοψίζει στοιχεία εντός μεμονωμένων συλλογών άκρου.
- Οι μεταβλητές λίστας ομάδων προέρχονται μόνο από μοτίβα άκρου μεταβλητού μήκους.
Περιβάλλοντα σύνδεσης άκρου μεταβλητού μήκους
Η κατανόηση του τρόπου σύνδεσης των μεταβλητών άκρου σε μοτίβα μεταβλητού μήκους είναι καίριας σημασίας:
Κατά τη διάρκεια της αντιστοίχισης μοτίβων (περιβάλλον singleton):
-- Edge variable 'e' refers to each individual edge during filtering
MATCH (p:Person)-[e:knows WHERE e.creationDate > zoned_datetime('2000-01-01T00:00:00Z')]->{2,4}(friend:Person)
-- 'e' is evaluated for each edge in the path during matching
RETURN *
Σε παραστάσεις αποτελεσμάτων (περιβάλλον ομάδας):
-- Edge variable 'edges' becomes a list of all qualifying edges
MATCH (p:Person)-[e:knows]->{2,4}(friend:Person)
RETURN size(e) AS num_edges, -- Number of edges in path
e[0].creationDate AS first_edge, -- First edge in path
avg(e.creationDate) AS avg_age -- Horizontal aggregation
Σημείωμα
Αυτό το ερώτημα δεν υποστηρίζεται ακόμα (γνωστό ζήτημα).
Συνδυασμός κατακόρυφης και οριζόντιας συνάθροισης
Μπορείτε να συνδυάσετε και τους δύο τύπους συνάθροισης σε εξελιγμένα μοτίβα ανάλυσης:
Σημείωμα
Αυτό το ερώτημα δεν υποστηρίζεται ακόμα (γνωστό ζήτημα).
-- Find average connection age by city pairs
MATCH (p1:Person)-[:isLocatedIn]->(c1:City)
MATCH (p2:Person)-[:isLocatedIn]->(c2:City)
MATCH (p1)-[e:knows]->{1,3}(p2)
RETURN c1.name AS city1,
c2.name AS city2,
count(*) AS connection_paths, -- Vertical: count paths per city pair
avg(size(e)) AS avg_degrees, -- Horizontal then vertical: path lengths
avg(avg(e.creationDate)) AS avg_connection_age -- Horizontal then vertical: connection ages
GROUP BY city1, city2
Φιλοδώρημα
Η οριζόντια συνάθροιση έχει πάντα προτεραιότητα έναντι της κατακόρυφης συνάθροισης. Για να μετατρέψετε μια λίστα ομάδας σε κανονική λίστα, χρησιμοποιήστε collect_list(edges).
Σημείωμα
Για λεπτομερή αναφορά συναρτήσεων συγκεντρωτικών αποτελεσμάτων, ανατρέξτε στο θέμα Παραστάσεις και συναρτήσεις GQL.
Στρατηγικές χειρισμού σφαλμάτων
Η κατανόηση συνήθων μοτίβων σφαλμάτων σάς βοηθά να συντάξετε ισχυρά ερωτήματα.
Χειριστείτε τα δεδομένα που λείπουν με χάρη:
MATCH (p:Person)
-- Use COALESCE for missing properties
LET displayName = coalesce(p.firstName, p.lastName, 'Unknown')
LET contact = coalesce(p.locationIP, p.browserUsed, 'No info')
RETURN *
Χρήση ρητών ελέγχων null:
MATCH (p:Person)
-- Be explicit about null handling
FILTER p.id IS NOT NULL AND p.id > 0
-- Instead of just: FILTER p.id > 0
RETURN *
Πρόσθετες πληροφορίες
Κωδικοί GQLSTATUS
Όπως εξηγείται στην ενότητα σχετικά με τα αποτελέσματα των ερωτημάτων, το GQL αναφέρει πληροφορίες εμπλουτισμένης κατάστασης που σχετίζονται με την επιτυχία ή την πιθανή αποτυχία εκτέλεσης. Ανατρέξτε στην αναφορά κωδικών κατάστασης GQL για την πλήρη λίστα.
Δεσμευμένες λέξεις
Το GQL διατηρεί ορισμένες λέξεις-κλειδιά που δεν μπορείτε να χρησιμοποιήσετε ως αναγνωριστικά, όπως μεταβλητές, ονόματα ιδιοτήτων ή ονόματα ετικετών. Ανατρέξτε στην αναφορά δεσμευμένων λέξεων GQL για την πλήρη λίστα.
Εάν θέλετε να χρησιμοποιήσετε δεσμευμένες λέξεις ως αναγνωριστικά, χρησιμοποιήστε τις με βαρείες: `match`, `return`.
Για να αποφύγετε τη διαφυγή από δεσμευμένες λέξεις, χρησιμοποιήστε αυτήν τη σύμβαση ονομασίας:
- Για αναγνωριστικά μίας λέξης, προσαρτήστε έναν χαρακτήρα υπογράμμισης:
:Product_ - Για αναγνωριστικά πολλών λέξεων, χρησιμοποιήστε camelCase ή PascalCase:
:MyEntity,:hasAttribute,textColor
Επόμενα βήματα
Τώρα που κατανοείτε τα βασικά στοιχεία του GQL, ακολουθεί ο συνιστώμενος μαθησιακός δίαυλος σας:
Συνεχίστε να δημιουργείτε τις δεξιότητές σας GQL
Για αρχάριους:
- Δοκιμάστε τη γρήγορη εκκίνηση - Ακολουθήστε τον πρακτικό οδηγό γρήγορης εκκίνησης και το εκπαιδευτικό βοήθημα για να αποκτήσετε πρακτική εμπειρία
- Πρακτική βασικών ερωτημάτων - Δοκιμάστε παραδείγματα από αυτόν τον οδηγό με τα δικά σας δεδομένα
- Μοτίβα γραφήματος εκμάθησης - Εξερευνήστε την ολοκληρωμένη σύνταξη μοτίβων
- Εξερεύνηση τύπων δεδομένων - Κατανόηση τιμών GQL και τύπων τιμών
Για έμπειρους χρήστες:
- Σύνθετες παραστάσεις - Μάθετε παραστάσεις και συναρτήσεις GQL
- Σχεδίαση σχήματος - Μάθετε τους τύπους και τους περιορισμούς του γραφήματος GQL
- Εξερεύνηση τύπων δεδομένων - Κατανόηση τιμών GQL και τύπων τιμών
Υλικά αναφοράς
Διατηρήστε αυτές τις αναφορές εύχρηστες για γρήγορες αναζητήσεις:
- Γρήγορη αναφορά GQL - Γρήγορη αναφορά σύνταξης
- Κωδικοί κατάστασης GQL - Ολοκληρωμένη αναφορά κωδικού σφάλματος
- Δεσμευμένες λέξεις GQL - Πλήρης λίστα δεσμευμένων λέξεων-κλειδιών
Εξερεύνηση γραφήματος
Μάθετε την πλατφόρμα:
- Μοντέλα δεδομένων γραφήματος - Κατανόηση εννοιών γραφημάτων και μοντελοποίηση
- Γράφημα σε σχέση με σχεσιακές βάσεις δεδομένων - Επιλέξτε την κατάλληλη προσέγγιση
- Δοκιμή Microsoft Fabric δωρεάν - Αποκτήστε εμπειρία πρακτικής εξάσκησης
- Εκπαιδευτικά βοηθήματα από άκρο σε άκρο - Ολοκληρωμένα σενάρια εκμάθησης
Εμπλακείτε
- Κοινή χρήση σχολίων - Βοηθήστε στη βελτίωση της τεκμηρίωσης και των εργαλείων
- Συμμετοχή στην κοινότητα - Σύνδεση με άλλους χρήστες της βάσης δεδομένων γραφημάτων
- Παραμείνετε ενημερωμένοι - Ακολουθήστε τις ανακοινώσεις του γραφήματος για νέες δυνατότητες
Φιλοδώρημα
Ξεκινήστε με το πρόγραμμα εκμάθησης γρήγορης εκκίνησης εάν προτιμάτε την εκμάθηση κάνοντας ή εμβαθύνετε σε μοτίβα γραφημάτων εάν θέλετε να μάθετε πρώτα τη γλώσσα ερωτημάτων.
Σχετικό περιεχόμενο
Οδηγοί διαδικασιών:
- Δημιουργήστε κοινά ερωτήματα GQL - Πρακτικά μοτίβα ερωτημάτων για γείτονες, πολλαπλή μεταπηδηση, κοινόχρηστες συνδέσεις και πολλά άλλα.
- Φιλτράρισμα και συγκέντρωση δεδομένων γραφήματος - Συναρτήσεις FILTER, WHERE, GROUP BY και συγκεντρωτικές συναρτήσεις.
- Εγγραφή ερωτημάτων μοτίβου γραφήματος - Διέλευση πολλών μεταπηδήσεων, λειτουργίες διαδρομής, επαναχρησιμοποίηση μεταβλητών και προαιρετική αντιστοίχιση.
- Βελτιστοποίηση επιδόσεων ερωτημάτων GQL - Βέλτιστες πρακτικές για τη σύνταξη αποτελεσματικών ερωτημάτων GQL.
Περισσότερες λεπτομέρειες σχετικά με βασικά θέματα:
- Παράδειγμα σχήματος κοινωνικού δικτύου - Ολοκληρώστε το παράδειγμα εργασίας του σχήματος γραφήματος.
- Μοτίβα γραφημάτων GQL - Ολοκληρωμένη σύνταξη μοτίβων και προηγμένες τεχνικές αντιστοίχισης.
- Παραστάσεις και συναρτήσεις GQL - Όλοι οι τύποι παραστάσεων και οι ενσωματωμένες συναρτήσεις.
- Τύποι γραφημάτων GQL - Τύποι γραφημάτων και περιορισμοί.
- Τιμές GQL και τύποι τιμών - Ολοκληρωμένη αναφορά συστήματος τύπου και χειρισμός τιμών.
Γρήγορες αναφορές:
- Αναφορά GQL abridged - Γρήγορη αναφορά σύνταξης.
- Κωδικοί κατάστασης GQL - Ολοκληρωμένη αναφορά κωδικού σφάλματος.
- Δεσμευμένες λέξεις GQL - Πλήρης λίστα δεσμευμένων λέξεων-κλειδιών.
Γράφημα:
- Μοντέλα δεδομένων γραφήματος - Κατανόηση εννοιών γραφημάτων και μοντελοποίησης.
- γράφημα και σχεσιακές βάσεις δεδομένων - Διαφορές και πότε να χρησιμοποιείτε κάθε μία.
- Try Microsoft Fabric δωρεάν.
- Εκπαιδευτικά βοηθήματα σε Microsoft Fabric.