Πρόγραμμα ερωτημάτων για το Power Query (Προεπισκόπηση)
Το πρόγραμμα ερωτημάτων για το Power Query είναι μια δυνατότητα που παρέχει μια καλύτερη προβολή της αξιολόγησης του ερωτήματός σας. Είναι χρήσιμο να προσδιορίσετε γιατί ένα συγκεκριμένο ερώτημα μπορεί να μην αναδιπλώνεται σε ένα συγκεκριμένο βήμα.
Μέσω ενός πρακτικού παραδείγματος, αυτό το άρθρο θα δείξει την κύρια περίπτωση χρήσης και τα πιθανά οφέλη από τη χρήση της δυνατότητας σχεδίου ερωτήματος για να εξετάσετε τα βήματα ερωτήματός σας. Τα παραδείγματα που χρησιμοποιούνται σε αυτό το άρθρο έχουν δημιουργηθεί χρησιμοποιώντας το δείγμα βάσης δεδομένων AdventureWorksLT για Azure SQL Server, το οποίο μπορείτε να κάνετε λήψη από δείγματα βάσεων δεδομένων AdventureWorks.
Σημείωση
Η δυνατότητα σχεδίου ερωτήματος για το Power Query είναι διαθέσιμη μόνο στο Power Query Online.
Αυτό το άρθρο έχει χωριστεί σε μια σειρά προτεινόμενων βημάτων για την ερμηνεία του σχεδίου ερωτήματος. Αυτά τα βήματα είναι:
- Εξετάστε τους δείκτες αναδίπλωσης ερωτήματος.
- Επιλέξτε το βήμα ερωτήματος για να εξετάσετε το σχέδιο ερωτήματός του.
- Εφαρμόστε αλλαγές στο ερώτημά σας.
Χρησιμοποιήστε τα παρακάτω βήματα για να δημιουργήσετε το ερώτημα στο δικό σας περιβάλλον Power Query Online.
Από το Power Query - Επιλογή προέλευσης δεδομένων, επιλέξτε Κενό ερώτημα.
Αντικαταστήστε τη δέσμη ενεργειών του κενού ερωτήματος με το παρακάτω ερώτημα.
let Source = Sql.Database("servername", "database"), Navigation = Source{[Schema = "Sales", Item = "SalesOrderHeader"]}[Data], #"Removed other columns" = Table.SelectColumns(Navigation, {"SalesOrderID", "OrderDate", "SalesOrderNumber", "PurchaseOrderNumber", "AccountNumber", "CustomerID", "TotalDue"}), #"Filtered rows" = Table.SelectRows(#"Removed other columns", each [TotalDue] > 1000), #"Kept bottom rows" = Table.LastN(#"Filtered rows", 5) in #"Kept bottom rows"
Αλλάξτε
servername
καιdatabase
με τα σωστά ονόματα για το δικό σας περιβάλλον.(Προαιρετικό) Εάν προσπαθείτε να συνδεθείτε σε έναν διακομιστή και μια βάση δεδομένων για ένα περιβάλλον εσωτερικής εγκατάστασης, φροντίστε να ρυθμίσετε τις παραμέτρους μιας πύλης για αυτό το περιβάλλον.
Επιλέξτε Επόμενο.
Στο πρόγραμμα επεξεργασίας Power Query, επιλέξτε Ρύθμιση παραμέτρων σύνδεσης και καταχωρήστε τα διαπιστευτήρια στην προέλευση δεδομένων σας.
Σημείωση
Για περισσότερες πληροφορίες σχετικά με τη σύνδεση σε έναν SQL Server, μεταβείτε στη Βάση δεδομένων SQL Server.
Αφού ακολουθήσετε αυτά τα βήματα, το ερώτημά σας θα μοιάζει με αυτό στην παρακάτω εικόνα.
Αυτό το ερώτημα συνδέεται στον πίνακα SalesOrderHeader και επιλέγει μερικές στήλες από τις πέντε τελευταίες παραγγελίες με μια τιμή TotalDue μεγαλύτερη από 1000.
Σημείωση
Αυτό το άρθρο χρησιμοποιεί ένα απλοποιημένο παράδειγμα για την επίδειξη αυτής της δυνατότητας, αλλά οι έννοιες που περιγράφονται σε αυτό το άρθρο ισχύουν για όλα τα ερωτήματα. Συνιστούμε να έχετε μια καλή γνώση της αναδίπλωσης ερωτημάτων πριν διαβάσετε το σχέδιο ερωτήματος. Για να μάθετε περισσότερα σχετικά με την αναδίπλωση ερωτήματος, μεταβείτε στην ενότητα Βασικά στοιχεία αναδίπλωσης ερωτήματος.
Σημείωση
Πριν διαβάσετε αυτή την ενότητα, συνιστούμε να διαβάσετε το άρθρο σχετικά με τις ενδείξεις αναδίπλωσης ερωτήματος.
Το πρώτο βήμα σε αυτή τη διαδικασία είναι να εξετάσετε το ερώτημά σας και να δώσετε ιδιαίτερη προσοχή στους δείκτες αναδίπλωσης ερωτήματος. Ο στόχος είναι να εξετάσετε τα βήματα που επισημαίνονται ως μη αναδιπλωμένα. Στη συνέχεια, μπορείτε να δείτε εάν η πραγματοποίηση αλλαγών στο συνολικό ερώτημα μπορεί να κάνει αυτούς τους μετασχηματισμούς να αναδιπλωθούν πλήρως.
Για αυτό το παράδειγμα, το μόνο βήμα που δεν μπορεί να αναδιπλωθεί είναι η Επιλογή γραμμών από το τέλος, το οποίο είναι εύκολο να το αναγνωρίσετε μέσω της ένδειξης μη αναδιπλωμένων βημάτων. Αυτό το βήμα είναι επίσης το τελευταίο βήμα του ερωτήματος.
Ο στόχος τώρα είναι να εξετάσετε αυτό το βήμα και να κατανοήσετε τι αναδιπλώνεται πίσω στην προέλευση δεδομένων και τι δεν μπορεί να αναδιπλωθεί.
Αναγνωρίσατε το βήμα Διατηρήθηκε κάτω γραμμή ως βήμα ενδιαφέροντος, καθώς δεν αναδιπλώνεται στην προέλευση δεδομένων. Κάντε δεξί κλικ στο βήμα και επιλέξτε Προβολή σχεδίου ερωτήματος . Αυτή η ενέργεια εμφανίζει ένα νέο παράθυρο διαλόγου που περιέχει ένα διάγραμμα για το σχέδιο ερωτήματος του επιλεγμένου βήματος.
Το Power Query προσπαθεί να βελτιστοποιήσει το ερώτημά σας αξιοποιώντας την αργή αξιολόγηση και την αναδίπλωση ερωτημάτων, όπως αναφέρεται στα βασικά στοιχεία αναδίπλωσης ερωτήματος. Αυτό το πρόγραμμα ερωτημάτων αντιπροσωπεύει τη βελτιστοποιημένη μετάφραση του ερωτήματός σας M στο εγγενές ερώτημα που αποστέλλεται στην προέλευση δεδομένων. Περιλαμβάνει επίσης τυχόν μετασχηματισμούς που εκτελούνται από τη μηχανή Power Query. Η σειρά με την οποία εμφανίζονται οι κόμβοι ακολουθεί τη σειρά του ερωτήματός σας ξεκινώντας από το τελευταίο βήμα ή έξοδο του ερωτήματός σας, το οποίο αναπαρίσταται στο αριστερό άκρο του διαγράμματος και σε αυτή την περίπτωση είναι ο κόμβος Table.LastN που αντιπροσωπεύει το βήμα Διατηρήθηκε κάτω γραμμή γραμμών .
Στο κάτω μέρος του παραθύρου διαλόγου, υπάρχει μια γραμμή με εικονίδια που σας βοηθούν να κάνετε μεγέθυνση ή σμίκρυνση της προβολής σχεδίου ερωτήματος, καθώς και άλλα κουμπιά που θα σας βοηθήσουν να διαχειριστείτε την προβολή. Για την προηγούμενη εικόνα, η επιλογή Προσαρμογή για προβολή από αυτή τη ράβδο χρησιμοποιήθηκε για την καλύτερη εκτίμηση των κόκκων.
Σημείωση
Το σχέδιο ερωτήματος αντιπροσωπεύει το βελτιστοποιημένο πρόγραμμα. Όταν η μηχανή αξιολογεί ένα ερώτημα, προσπαθεί να αναδιπλώσει όλους τους τελεστές σε μια προέλευση δεδομένων. Σε ορισμένες περιπτώσεις, μπορεί να κάνει ακόμη και κάποια εσωτερική αναδιάταξη των βημάτων για μεγιστοποίηση της αναδίπλωσης. Έχοντας αυτό υπόψη, οι κόμβοι/τελεστές που απομένουν σε αυτό το βελτιστοποιημένο σχέδιο ερωτήματος συνήθως περιέχουν το ερώτημα "αναδιπλωμένης" προέλευσης δεδομένων και οποιουσδήποτε τελεστές που δεν μπορούσαν να αναδιπλωθούν και αξιολογούνται τοπικά.
Μπορείτε να αναγνωρίσετε τους κόμβους σε αυτό το διάγραμμα ως δύο ομάδες:
- Διπλωμένοι κόμβοι: Αυτός ο κόμβος μπορεί να είναι είτε
Value.NativeQuery
κόμβοι "προέλευσης δεδομένων", όπωςSql.Database
. Αυτά μπορούν επίσης να αναγνωριστούν με την ετικέτα απομακρυσμένα κάτω από το όνομα της συνάκρισής τους. - Μη διπλωμένοι κόμβοι: Άλλοι τελεστές πίνακα, όπως
Table.SelectRows
,Table.SelectColumns
και άλλες συναρτήσεις που δεν ήταν δυνατό να αναδιπλωθούν. Αυτά μπορούν επίσης να αναγνωριστούν με τις ετικέτες Πλήρης σάρωση και Ροή.
Η παρακάτω εικόνα δείχνει τους αναδιπλωμένους κόμβους μέσα στο κόκκινο ορθογώνιο. Οι υπόλοιποι κόμβοι δεν ήταν δυνατό να αναδιπλωθούν στην προέλευση δεδομένων. Θα πρέπει να εξετάσετε τους υπόλοιπους κόμβους, καθώς ο στόχος είναι να επιχειρήσετε να επαναφέρετε αυτούς τους κόμβους στην προέλευση δεδομένων.
Μπορείτε να επιλέξετε Προβολή λεπτομερειών στο κάτω μέρος ορισμένων κόκκων για να εμφανίσετε εκτεταμένες πληροφορίες. Για παράδειγμα, οι λεπτομέρειες του Value.NativeQuery
κόμβου εμφανίζουν το εγγενές ερώτημα (σε SQL) που θα σταλεί στην προέλευση δεδομένων.
Το ερώτημα που εμφανίζεται εδώ μπορεί να μην είναι ακριβώς το ίδιο ερώτημα που αποστέλλεται στην προέλευση δεδομένων, αλλά είναι μια καλή προσέγγιση. Σε αυτήν την περίπτωση, υποδεικνύει ακριβώς ποιες στήλες θα υποβληθούν ερωτήματα από τον πίνακα SalesOrderHeader και, στη συνέχεια, πώς θα φιλτράρει αυτόν τον πίνακα χρησιμοποιώντας το πεδίο TotalDue για να λάβει μόνο γραμμές όπου η τιμή για αυτό το πεδίο είναι μεγαλύτερη από 1000. Ο κόμβος δίπλα του, Table.LastN, υπολογίζεται τοπικά από τη μηχανή Power Query, καθώς δεν μπορεί να αναδιπλωθεί.
Σημείωση
Οι τελεστές ενδέχεται να μην συμφωνούν ακριβώς με τις συναρτήσεις που χρησιμοποιούνται στη δέσμη ενεργειών του ερωτήματος.
Τώρα καθορίσατε ποιοι κόμβοι δεν μπορούσαν να αναδιπλωθούν και θα αξιολογηθούν τοπικά. Αυτή η περίπτωση έχει μόνο τον Table.LastN
κόμβο, αλλά σε άλλα σενάρια θα μπορούσε να έχει πολλά περισσότερα.
Ο στόχος είναι να εφαρμόσετε αλλαγές στο ερώτημά σας, ώστε το βήμα να μπορεί να αναδιπλωθεί. Ορισμένες από τις αλλαγές που μπορεί να εφαρμόσετε μπορεί να κυμαίνονται από την αναδιάταξη των βημάτων σας έως την εφαρμογή μιας εναλλακτικής λογικής στο ερώτημά σας που είναι πιο ρητή στην προέλευση δεδομένων. Αυτό δεν σημαίνει ότι όλα τα ερωτήματα και όλες οι λειτουργίες μπορούν να αναδιπλωθούν εφαρμόζοντας ορισμένες αλλαγές. Ωστόσο, είναι καλή πρακτική να προσδιορίζετε μέσω δοκιμής και σφάλματος εάν το ερώτημά σας μπορεί να αναδιπλωθεί ξανά.
Δεδομένου ότι η προέλευση δεδομένων είναι μια βάση δεδομένων SQL Server, εάν ο στόχος είναι η ανάκτηση των τελευταίων πέντε παραγγελιών από τον πίνακα, τότε μια καλή εναλλακτική λύση θα ήταν να επωφεληθείτε από τους όρους TOP και ORDER BY στην SQL. Δεδομένου ότι δεν υπάρχει όρος BOTTOM στην SQL, ο Table.LastN
μετασχηματισμός στο PowerQuery δεν μπορεί να μεταφραστεί σε SQL. Μπορείτε να καταργήσετε το Table.LastN
βήμα και να το αντικαταστήσετε με:
- Ένα φθίνον βήμα ταξινόμησης κατά τη στήλη SalesOrderID στον πίνακα, καθώς αυτή η στήλη καθορίζει ποια σειρά ακολουθεί πρώτη και ποια έχει εισαχθεί τελευταία.
- Επιλέξτε τις πέντε πρώτες γραμμές δεδομένου ότι ο πίνακας έχει ταξινομηθεί, αυτός ο μετασχηματισμός επιτυγχάνεται με τον ίδιο τρόπο όπως εάν ήταν ένας Πίνακας διατηρητέων τελευταίων γραμμών (
Table.LastN
).
Αυτή η εναλλακτική είναι ισοδύναμη με το αρχικό ερώτημα. Ενώ αυτή η εναλλακτική λύση θεωρητικά φαίνεται καλή, πρέπει να κάνετε τις αλλαγές για να δείτε εάν αυτή η εναλλακτική λύση θα κάνει αυτόν τον κόμβο να αναδιπλωθεί πλήρως πίσω στην προέλευση δεδομένων.
Εφαρμόστε την εναλλακτική λύση που αναφέρθηκε στην προηγούμενη ενότητα:
Κλείστε το παράθυρο διαλόγου σχεδίου ερωτήματος και επιστρέψτε στην πρόγραμμα επεξεργασίας Power Query.
Καταργήστε το βήμα Διατηρήστε τις τελευταίες γραμμές.
Ταξινομήστε τη στήλη SalesOrderID σε φθίνουσα σειρά.
Επιλέξτε το εικονίδιο πίνακα στην επάνω αριστερή γωνία της προβολής προεπισκόπησης δεδομένων και επιλέξτε το στοιχείο Διατήρηση πρώτων γραμμών. Στο παράθυρο διαλόγου, διαβιβάστε τον αριθμό πέντε ως όρισμα και πατήστε OK.
Μετά την εφαρμογή των αλλαγών, ελέγξτε ξανά τους δείκτες αναδίπλωσης ερωτήματος και δείτε αν σας δίνει έναν αναδιπλωμένο δείκτη.
Τώρα είναι η ώρα να εξετάσετε το σχέδιο ερωτήματος του τελευταίου βήματος, το οποίο είναι τώρα Διατήρηση πρώτων γραμμών. Τώρα υπάρχουν μόνο διπλωμένοι κόμβοι. Επιλέξτε Προβολή λεπτομερειών στην περιοχή Value.NativeQuery
για να επαληθεύσετε ποιο ερώτημα αποστέλλεται στη βάση δεδομένων.
Παρόλο που αυτό το άρθρο προτείνει ποια εναλλακτική λύση πρέπει να εφαρμόσετε, ο κύριος στόχος είναι να μάθετε πώς μπορείτε να χρησιμοποιήσετε το σχέδιο ερωτήματος για να διερευνήσετε την αναδίπλωση ερωτήματος. Αυτό το άρθρο παρέχει επίσης ορατότητα σχετικά με τα στοιχεία που αποστέλλονται στην προέλευση δεδομένων σας και τους μετασχηματισμούς που θα γίνονται τοπικά.
Μπορείτε να προσαρμόσετε τον κώδικά σας για να δείτε την επίδραση που έχει στο ερώτημά σας. Χρησιμοποιώντας τους δείκτες αναδίπλωσης ερωτήματος, θα έχετε επίσης μια καλύτερη ιδέα για τα βήματα που εμποδίζουν την αναδίπλωση του ερωτήματός σας.