Σχεδίαση σχήματος γραφήματος στο Microsoft Fabric

Ένα σχήμα γραφήματος είναι η συλλογή τύπων κόμβων, τύπων ακμών και των ιδιοτήτων τους που καθορίζουν τη δομή του γραφήματος σας. Ένα καλά σχεδιασμένο σχήμα γραφήματος διευκολύνει την αναζήτηση, τη διατήρηση και την επέκταση των δεδομένων σας. Αυτό το άρθρο παρέχει βέλτιστες πρακτικές για τη μετατροπή δεδομένων σε μορφή πίνακα σε μια λίμνη σε ένα αποτελεσματικό γράφημα ιδιοτήτων labeled σε Microsoft Fabric.

Χρησιμοποιήστε αυτές τις οδηγίες πριν ξεκινήσετε τη μοντελοποίηση στο πρόγραμμα επεξεργασίας μοντέλου γραφήματος. Για οδηγίες βήμα προς βήμα σχετικά με τη δημιουργία κόμβων και ακμών, ανατρέξτε στον οδηγό γραφήματος. Παραδείγματα σε αυτό το άρθρο χρησιμοποιούν το δείγμα συνόλου δεδομένων Adventure Works.

Σημαντικό

Το Graph προς το παρόν δεν υποστηρίζει την εξέλιξη του σχήματος. Αφού δημιουργήσετε ένα μοντέλο γραφήματος και φορτώσετε τα δεδομένα του, τυχόν δομικές αλλαγές, όπως η προσθήκη ή η κατάργηση τύπων κόμβων, τύπων άκρων και ιδιοτήτων, απαιτούν να φορτώσετε ξανά όλα τα δεδομένα πριν υποβάλετε ερώτημα στην ενημερωμένη δομή. Για να φορτώσετε ξανά τα δεδομένα, επιλέξτε Αποθήκευση στην επάνω κορδέλα. Αυτή η διαδικασία επαναφόρτωσης δεδομένων απαιτεί χρόνο και καταναλώνει χωρητικότητα, επομένως σχεδιάστε προσεκτικά το σχήμα σας πριν ξεκινήσετε τη μοντελοποίηση.

Προϋποθέσεις

Κατανόηση τύπων κόμβων και τύπων ακμών

Πριν σχεδιάσετε ένα σχήμα, κατανοήστε αυτές τις βασικές έννοιες:

Ένας τύπος κόμβου ορίζει ένα είδος οντότητας στο γράφημά σας, όπως έναν πελάτη, ένα προϊόν ή μια παραγγελία. Αποτελείται απο:

  • Μια ετικέτα κόμβου, η οποία είναι το όνομα που προσδιορίζει αυτήν την κατηγορία κόμβου. Για παράδειγμα, Customer. Χρησιμοποιείτε την ετικέτα σε ερωτήματα για να αναφερθείτε σε κόμβους αυτού του τύπου.
  • Ένας πίνακας προέλευσης, ο οποίος είναι ο πίνακας lakehouse που παρέχει τα δεδομένα προέλευσης για τον τύπο κόμβου. Για παράδειγμα, ο πίνακας adventureworks_customers .
  • Μια στήλη κλειδιού που προσδιορίζει μοναδικά κάθε κόμβο. Για παράδειγμα, CustomerID_K.
  • Ιδιότητες, οι οποίες είναι στήλες από τον πίνακα που μπορείτε να προσθέσετε ως χαρακτηριστικά σε κάθε κόμβο. Για παράδειγμα, FirstName, LastName, και EmailAddress.

Ένας κόμβος είναι μια μεμονωμένη παρουσία ενός τύπου κόμβου—μία γραμμή στον πίνακα προέλευσης. Για παράδειγμα, κάθε γραμμή στο adventureworks_customers γίνεται Customer κόμβος.

Ένας τύπος ακμής ορίζει ένα είδος σχέσης μεταξύ δύο τύπων κόμβων. Αποτελείται απο:

  • Μια ετικέτα άκρης, η οποία είναι το όνομα που προσδιορίζει αυτήν την κατηγορία σχέσης. Για παράδειγμα, purchases.
  • Ένας πίνακας προέλευσης που περιέχει τα δεδομένα σχέσης μεταξύ των κόμβων προέλευσης και προορισμού. Για παράδειγμα, ο πίνακας adventureworks_orders .
  • Ένας τύπος κόμβου προέλευσης και ένας τύπος κόμβου προορισμού που συνδέει η άκρη. Για παράδειγμα, Customer ως προέλευση και Order ως στόχος.

Μια ακμή είναι μια μεμονωμένη παρουσία ενός τύπου ακμής—μία γραμμή στον πίνακα προέλευσης που συνδέει δύο συγκεκριμένους κόμβους.

Σημείωμα

Στο πρόγραμμα επεξεργασίας μοντέλου γραφήματος, τα κουμπιά Προσθήκη κόμβου και Προσθήκη ακμής δημιουργούν τύπους κόμβων και τύπους άκρων, όχι μεμονωμένους κόμβους ή ακμές.

Προσδιορισμός οντοτήτων και σχέσεων

Ξεκινήστε προσδιορίζοντας τις οντότητες (πράγματα) και τις σχέσεις (συνδέσεις) στα δεδομένα σας. Οι οντότητες γίνονται τύποι κόμβων. Οι συνδέσεις μεταξύ οντοτήτων γίνονται τύποι άκρων.

Κάντε αυτές τις ερωτήσεις σχετικά με τους πίνακες προέλευσης:

  • Ποιες είναι οι κύριες οντότητες; Οι σειρές που αντιπροσωπεύουν διαφορετικά πράγματα του πραγματικού κόσμου είναι υποψήφιες για τύπους κόμβων. Για παράδειγμα, πελάτες, προϊόντα, παραγγελίες και εργαζόμενοι.
  • Πώς σχετίζονται αυτές οι οντότητες μεταξύ τους; Οι στήλες που παραπέμπουν σε γραμμές σε άλλο πίνακα (ξένα κλειδιά) προτείνουν τύπους άκρων. Για παράδειγμα, CustomerID_FK σε έναν orders πίνακα δείχνει τον customers πίνακα, κάτι που προτείνει τη μοντελοποίηση μιας purchases ακμής.
  • Υπάρχουν ενσωματωμένες οντότητες; Μια στήλη μέσα σε έναν πίνακα μπορεί να αντιπροσωπεύει μια ξεχωριστή οντότητα που αξίζει να εξαχθεί στον δικό της τύπο κόμβου. Για παράδειγμα, δείτε την ενότητα Επιλογή τύπων κόμβων. Για μια αναλυτική παρουσίαση, ανατρέξτε στην ενότητα Προσθήκη πολλών τύπων κόμβων και άκρων από έναν πίνακα προέλευσης.

Επιλέξτε τύπους κόμβων

Δημιουργήστε έναν τύπο κόμβου για κάθε οντότητα που πρέπει να υποβάλετε ερώτημα ή να διασχίσετε ανεξάρτητα. Χρησιμοποιήστε αυτές τις οδηγίες:

Κάντε την οντότητα τύπο κόμβου όταν... Κρατήστε το ως ακίνητο όταν...
Πρέπει να διασχίσετε προς ή μέσα από αυτό. Είναι περιγραφικά μεταδεδομένα που μόνο διαβάζετε, δεν διασχίζετε.
Πολλές οντότητες μοιράζονται μια σχέση με αυτό. Είναι μοναδικό για την οντότητα στην οποία ανήκει.
Πρέπει να ταιριάξετε ή να ομαδοποιήσετε απευθείας σε ερωτήματα. Φιλτράρετε μόνο με βάση αυτό ως ιδιότητα άλλης οντότητας.

Παράδειγμα: Στο σύνολο δεδομένων Adventure Works, Country ξεκινά ως στήλη στον employees πίνακα. Εάν πρέπει να ρωτήσετε "ποιοι εργαζόμενοι ζουν στην ίδια χώρα;" ή "ποιες χώρες έχουν τους περισσότερους υπαλλήλους;", εξαγωγή Country στον δικό του τύπο κόμβου. Εάν χρειάζεται να εμφανίσετε μόνο τη χώρα ενός υπαλλήλου ως ετικέτα, αφήστε την ως ιδιοκτησία.

Επιλογή στηλών κλειδιών

Κάθε τύπος κόμβου απαιτεί μια στήλη κλειδιού (ή σύνθετο κλειδί) που προσδιορίζει μοναδικά κάθε κόμβο. Επιλέξτε προσεκτικά τα κλειδιά:

  • Χρησιμοποιήστε υπάρχοντα μοναδικά αναγνωριστικά από τους πίνακες προέλευσης. Για παράδειγμα, CustomerID_K ή ProductID_K.
  • Αποφύγετε τα υποκατάστατα κλειδιά που δεν έχουν επιχειρηματικό νόημα , εκτός εάν δεν υπάρχει φυσικό κλειδί. Για παράδειγμα, προτιμήστε CustomerID έναν αριθμό γραμμής που αυξάνεται αυτόματα.
  • Χρησιμοποιήστε σύνθετα κλειδιά όταν μία στήλη δεν εγγυάται τη μοναδικότητα. Για παράδειγμα, ένας κόμβος ProductVersion μπορεί να χρειάζεται και τα δύο ProductID και VersionNumber ως κλειδί του.
  • Αντιστοιχίστε τους τύπους δεδομένων μεταξύ των στηλών κλειδιών και των στηλών ξένων κλειδιών που χρησιμοποιούνται στις αντιστοιχίσεις άκρων. Οι αναντιστοιχίες τύπων προκαλούν αποτυχίες δημιουργίας άκρων.

Συμβουλή

Ορίστε περιορισμούς κλειδιού κόμβου για να επιτρέψετε στη μηχανή ερωτημάτων να εκτελεί άμεσες αναζητήσεις σε ιδιότητες κλειδιού. Αυτή η βελτιστοποίηση επιταχύνει τα ερωτήματα που αναζητούν συγκεκριμένους κόμβους ανά κλειδί.

Προσθήκη ιδιοτήτων κόμβου

Όταν δημιουργείτε έναν τύπο κόμβου, επιλέξτε ποιες ιδιότητες από τον πίνακα προέλευσης θα συμπεριληφθούν ως ιδιότητες στον τύπο κόμβου, ειδικά ιδιότητες για τις οποίες έχουν εφαρμοστεί κανόνες πρόσβασης OneLake Security στον υποκείμενο πίνακα προέλευσης.

Προσθέστε ιδιότητες κατά τη δημιουργία κόμβου με το κουμπί + Προσθήκη ιδιότητας . Εναλλακτικά, προσθέστε ιδιότητες σε έναν υπάρχοντα κόμβο κάνοντας διπλό κλικ στον τύπο κόμβου στον επεξεργαστή μοντέλου γραφήματος για να ανοίξετε το παράθυρο διαλόγου επεξεργασίας κόμβου και επιλέγοντας Επεξεργασία ορισμού. Επιλέξτε Προσθήκη ιδιότητας και, στη συνέχεια, επιλέξτε στήλες από τον πίνακα προέλευσης.

Μπορεί να μην θέλετε να προσθέσετε κάθε στήλη στον πίνακα ως ιδιότητα. Οι υπερβολικές ιδιότητες αυξάνουν τον αποθηκευτικό χώρο, επιβραδύνουν τα ερωτήματα και δυσκολεύουν τη συντήρηση του γραφήματος. Για αυτούς τους λόγους, αποφύγετε την προσθήκη ιδιοτήτων που δεν χρειάζεστε για ερωτήματα ή αναλύσεις.

Για κάθε τύπο κόμβου, διατηρήστε μόνο τις ιδιότητες που είναι:

  • Απαιτείται για τη μοναδικότητα του κόμβου (στήλες κλειδιών)
  • Χρησιμοποιείται σε WHERE φίλτρα ή RETURN προβολές στα ερωτήματά σας
  • Απαιτείται για κατάντη ανάλυση ή οπτικοποίηση

Για περισσότερες πληροφορίες σχετικά με τον τρόπο με τον οποίο το πλήθος ιδιοτήτων επηρεάζει την απόδοση του ερωτήματος, ανατρέξτε στο θέμα Επιστροφή μόνο των ιδιοτήτων που χρειάζεστε.

Επιλογή τύπων δεδομένων

Επιλέξτε τον πιο συγκεκριμένο τύπο δεδομένων για κάθε ιδιότητα. Οι σωστοί τύποι βελτιώνουν τόσο την αποτελεσματικότητα αποθήκευσης όσο και την απόδοση ερωτημάτων:

  • Χρησιμοποιήστε INT ή UINT64 για αριθμητικά αναγνωριστικά και μετρήσεις. Οι αριθμητικές συγκρίσεις είναι ταχύτερες από τις συγκρίσεις συμβολοσειρών.
  • Χρησιμοποιήστε το ZONED DATETIME για χρονικές σημάνσεις αντί για ημερομηνίες με μορφοποίηση συμβολοσειράς.
  • Χρησιμοποιήστε το BOOLEAN για σημαίες true/false αντί για τιμές συμβολοσειράς όπως "yes" ή "no".

Για την πλήρη λίστα των υποστηριζόμενων τύπων, ανατρέξτε στην ενότητα Τρέχοντες περιορισμοί — Τύποι δεδομένων.

Επιλέξτε τύπους άκρων

Οι τύποι ακμών καθορίζουν τις σχέσεις μεταξύ των τύπων κόμβων. Κάθε τύπος ακμής συνδέει έναν τύπο κόμβου προέλευσης με έναν τύπο κόμβου προορισμού μέσω ενός πίνακα προέλευσης.

Ακολουθήστε αυτές τις οδηγίες:

  • Χρησιμοποιήστε περιγραφικές ετικέτες που διαβάζονται ως ρήματα ή ρηματικές φράσεις. Για παράδειγμα, purchases, sells, livesIn, και belongsTo. Μια καλά ονομαζόμενη άκρη κάνει τα ερωτήματα πιο ευανάγνωστα.
  • Εξετάστε προσεκτικά την κατεύθυνση. Οι ακμές στο γράφημα κατευθύνονται. Επιλέξτε την κατεύθυνση που αντιπροσωπεύει καλύτερα τη σχέση του πραγματικού κόσμου. Για παράδειγμα, Customer --το purchases-->Order διαβάζεται πιο φυσικά από το Order --purchasedBy-->Customer.
  • Δώστε διακριτά ονόματα σε τύπους ακμών που συνδέουν διαφορετικά ζεύγη τύπων κόμβων. Εάν και οι δύο "ο υπάλληλος πουλάει παραγγελία" και "παραγγελία αγορών πελάτη" συνδέονται με Orderτο , ονομάστε τα sells και purchases αντί να δώσετε και στα δύο την ίδια ετικέτα. Για περισσότερες πληροφορίες, ανατρέξτε στην ενότητα Περιορισμοί δημιουργίας άκρων.

Προσθήκη ιδιοτήτων σε τύπους άκρων

Όπως και οι κόμβοι, οι τύποι ακμών ξεκινούν χωρίς ιδιότητες. Μπορείτε προαιρετικά να προσθέσετε ιδιότητες όταν τα δεδομένα περιγράφουν την ίδια τη σχέση και όχι οποιοδήποτε τελικό σημείο. Οι ιδιότητες Edge είναι πιο χρήσιμες όταν συντάσσετε ερωτήματα GQL που πρέπει να φιλτράρουν, να συναθροίσουν ή να επιστρέψουν δεδομένα σχετικά με την ίδια τη σχέση.

Για να προσθέσετε μια ιδιότητα, κάντε διπλό κλικ σε έναν τύπο ακμής στο πρόγραμμα επεξεργασίας μοντέλου γραφήματος για να ανοίξετε το παράθυρο διαλόγου επεξεργασίας Edge και επιλέξτε Επεξεργασία ορισμού. Επιλέξτε Προσθήκη ιδιότητας και, στη συνέχεια, επιλέξτε στήλες από τον πίνακα προέλευσης.

Πότε να προσθέσετε ιδιότητες ακμής: Εάν μια στήλη απαντήσει "πόσο;", "πότε;" ή "με ποιον τρόπο;" σχετικά με τη σύνδεση μεταξύ δύο κόμβων, ανήκει στην άκρη - όχι σε κανέναν κόμβο.

Παράδειγμα: Στο σύνολο δεδομένων Adventure Works, το contains άκρο συνδέεται OrderProduct μέσω του πίνακα adventureworks_orders . Στήλες όπως OrderQty, UnitPrice, και LineTotal περιγράφουν τη σχέση—πόσα από ένα προϊόν ήταν σε συγκεκριμένη σειρά, σε ποια τιμή. Οι στήλες όπως OrderDate ή ShipDate περιγράφουν την ίδια τη σειρά και ανήκουν στον Order τύπο κόμβου, όχι στην άκρη.

Σημαντικό

Ο πίνακας προέλευσης για ένα Edge πρέπει να περιέχει στήλες που ταιριάζουν με τις στήλες-κλειδιά τόσο του τύπου κόμβου προέλευσης όσο και του τύπου κόμβου προορισμού στις τιμές και τον τύπο δεδομένων. Οι πίνακες που χρησιμοποιείτε για τη δημιουργία τύπων κόμβων μπορούν επίσης να χρησιμεύσουν ως πίνακες προέλευσης άκρων, εάν πληρούν αυτήν την απαίτηση.

Κοινά μοτίβα πίνακα σε γράφημα

Ο παρακάτω πίνακας συνοψίζει τον τρόπο με τον οποίο ορισμένες κοινές δομές δεδομένων σε μορφή πίνακα μεταφράζονται σε στοιχεία γραφήματος:

Δομή πίνακα Αποτέλεσμα γραφήματος Παράδειγμα
Ένα προς πολλά: Γονικός πίνακας + θυγατρικός πίνακας με ξένο κλειδί Δύο τύποι κόμβων που συνδέονται με έναν τύπο ακμής. Customer -- αγορές-->Order
Πολλά-προς-πολλά: Πίνακας διακλάδωσης που συνδέει δύο πίνακες Τύπος ακμής μεταξύ δύο τύπων κόμβων. Vendor -- παράγει-->Product
Ενσωματωμένη οντότητα: Στήλη που αντιπροσωπεύει μια κοινόχρηστη οντότητα Εξαγόμενος τύπος κόμβου με ακμή. Employee -- ζει-->Country
Ιεραρχία: Αλυσίδα γονικών-θυγατρικών πινάκων Τύποι κόμβων που συνδέονται με ακμές σε κάθε επίπεδο. Product -- isOfType-->Subcategory --ανήκει-->Category

Για μια αναλυτική παρουσίαση του μοτίβου ενσωματωμένης οντότητας, ανατρέξτε στην ενότητα Προσθήκη πολλών τύπων κόμβων και άκρων από έναν πίνακα προέλευσης.

Αλλαγή του σχήματος γραφήματος

Το γράφημα δεν υποστηρίζει την εξέλιξη του σχήματος. Αφού αποθηκεύσετε ένα μοντέλο γραφήματος, η δομή των τύπων κόμβων, των τύπων ακμών και των ιδιοτήτων τους είναι σταθερή. Για να κάνετε δομικές αλλαγές, όπως η προσθήκη μιας ιδιότητας σε έναν τύπο κόμβου, η κατάργηση ενός τύπου άκρου ή η αλλαγή μιας στήλης κλειδιού, πρέπει να δημιουργήσετε ένα νέο μοντέλο γραφήματος και να φορτώσετε ξανά τα δεδομένα σας.

Για να αλλάξετε το σχήμα γραφήματος:

  1. Στον χώρο εργασίας σας, δημιουργήστε ένα νέο στοιχείο γραφήματος που συνδέεται με την ίδια λίμνη.
  2. Στον επεξεργαστή μοντέλου γραφήματος, προσθέστε τους τύπους κόμβων και τους τύπους ακμών που χρειάζεστε, συμπεριλαμβανομένων τυχόν νέων ή τροποποιημένων ιδιοτήτων.
  3. Διαμορφώστε τις στήλες κλειδιών και τις αντιστοιχίσεις άκρων. Βεβαιωθείτε ότι οι τύποι δεδομένων ταιριάζουν μεταξύ στηλών κλειδιών και στηλών ξένων κλειδιών.
  4. Επιλέξτε Αποθήκευση για να απορροφήσετε δεδομένα και να δημιουργήσετε το νέο γράφημα.
  5. Ενημερώστε τυχόν σύνολα ερωτημάτων ώστε να οδηγούν στο νέο γράφημα.
  6. Αφού επαληθεύσετε ότι το νέο γράφημα λειτουργεί όπως αναμένεται, διαγράψτε το αρχικό στοιχείο γραφήματος εάν δεν το χρειάζεστε.