Παραδείγματα αναδίπλωσης ερωτήματος

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

Το σενάριο

Φανταστείτε ένα σενάριο όπου, χρησιμοποιώντας τη βάση δεδομένων Wide World Importers για τη βάση δεδομένων SQL Azure Synapse Analytics, σας ανατίθεται να δημιουργήσετε ένα ερώτημα στο Power Query που συνδέεται με τον fact_Sale πίνακα και ανακτά τις τελευταίες 10 πωλήσεις μόνο με τα ακόλουθα πεδία:

  • Κλειδί πώλησης
  • Κλειδί πελάτη
  • Κλειδί ημερομηνίας τιμολογίου
  • Περιγραφή
  • Ποσότητα

Note

Για σκοπούς επίδειξης, αυτό το άρθρο χρησιμοποιεί τη βάση δεδομένων που περιγράφεται στην εκμάθηση σχετικά με τη φόρτωση της βάσης δεδομένων Wide World Importers στο Azure Synapse Analytics. Η κύρια διαφορά σε αυτό το άρθρο είναι ότι ο fact_Sale πίνακας περιέχει δεδομένα μόνο για το έτος 2000, με συνολικά 3.644.356 γραμμές.

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

Στιγμιότυπο οθόνης του δείγματος πίνακα εξόδου που προέρχεται από τον πίνακα fact_Sale της βάσης δεδομένων Azure Synapse Analytics Wide World Importers.

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

  • Χωρίς αναδίπλωση ερωτήματος
  • Μερική αναδίπλωση ερωτήματος
  • Πλήρης αναδίπλωση ερωτήματος

Παράδειγμα αναδίπλωσης χωρίς ερώτημα

Important

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

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

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

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

Στιγμιότυπο οθόνης του παραθύρου Διατήρηση κάτω γραμμών όπου εισάγετε την τιμή 10 μέσα στο παράθυρο διαλόγου Διατήρηση κάτω γραμμών.

Υπόδειξη

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

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

Στιγμιότυπο οθόνης της Αρχικής κορδέλας όπου επιλέγετε το μετασχηματισμό Επιλογή στηλών για το παράδειγμα αναδίπλωσης χωρίς ερώτημα.

Τέλος, μέσα στο παράθυρο διαλόγου Επιλογή στηλών, επιλέξτε , Sale KeyCustomer Key, Invoice Date Key, Descriptionκαι Quantity στήλες και, στη συνέχεια, επιλέξτε OK.

Στιγμιότυπο οθόνης του τμήματος παραθύρου Επιλογή στηλών όπου επιλέγετε τις στήλες

Το παρακάτω δείγμα κώδικα είναι η πλήρης δέσμη ενεργειών M για το ερώτημα που δημιουργήσατε:

let
    Source = Sql.Database(ServerName, DatabaseName),
    Navigation = Source{[Schema = "wwi", Item = "fact_Sale"]}[Data],
    #"Kept bottom rows" = Table.LastN(Navigation, 10),
    #"Choose columns" = Table.SelectColumns(
        #"Kept bottom rows",
        {"Sale Key", "Customer Key", "Invoice Date Key", "Description", "Quantity"}
    )
in
    #"Choose columns""

Χωρίς αναδίπλωση ερωτήματος: Κατανόηση της αξιολόγησης ερωτήματος

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

Τμήμα παραθύρου εφαρμοσμένων βημάτων για το ερώτημα με τους δείκτες αναδίπλωσης ερωτήματος που εμφανίζουν τα βήματα Διατηρημένες κάτω γραμμές και τα βήματα Καταργήθηκαν άλλες στήλες.

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

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

Κάθε πλαίσιο στην προηγούμενη εικόνα ονομάζεται κόμβος. Ένας κόμβος αντιπροσωπεύει την ανάλυση λειτουργίας για την εκπλήρωση αυτού του ερωτήματος. Οι κόμβοι που αντιπροσωπεύουν προελεύσεις δεδομένων, όπως ο SQL Server στο προηγούμενο παράδειγμα και ο Value.NativeQuery κόμβος, αντιπροσωπεύουν ποιο τμήμα του ερωτήματος έχει εκφορτωθεί στην προέλευση δεδομένων. Οι υπόλοιποι κόμβοι, σε αυτήν την περίπτωση Table.LastN και Table.SelectColumns επισημαίνονται στο ορθογώνιο στην προηγούμενη εικόνα, αξιολογούνται από τη μηχανή Power Query. Αυτοί οι δύο κόμβοι αντιπροσωπεύουν τους δύο μετασχηματισμούς που προσθέσατε, τις κάτω σειρές Kept και τις στήλες Select. Οι υπόλοιποι κόμβοι αντιπροσωπεύουν λειτουργίες που συμβαίνουν σε επίπεδο προέλευσης δεδομένων.

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

Στιγμιότυπο οθόνης της δήλωσης SQL που βρίσκεται μέσα στο 'Value.NativeQuery' που αντιπροσωπεύει ένα αίτημα όλων των πεδίων και εγγραφών από τον πίνακα 'fact_Sale' στη βάση δεδομένων.

Αυτή η αίτηση προέλευσης δεδομένων είναι στη μητρική γλώσσα της προέλευσης δεδομένων σας. Για αυτήν την περίπτωση, αυτή η γλώσσα είναι SQL και αυτή η πρόταση αντιπροσωπεύει μια αίτηση για όλες τις γραμμές και τα πεδία από τον fact_Sale πίνακα.

Η χρήση αυτής της αίτησης προέλευσης δεδομένων μπορεί να σας βοηθήσει να κατανοήσετε καλύτερα την ιστορία που προσπαθεί να μεταφέρει το σχέδιο ερωτήματος:

  • Sql.Database: Αυτός ο κόμβος αντιπροσωπεύει την πρόσβαση στην πηγή δεδομένων. Συνδέεται με τη βάση δεδομένων και στέλνει αιτήματα μεταδεδομένων για να κατανοήσει τις δυνατότητές της.
  • Value.NativeQuery: Αντιπροσωπεύει την αίτηση που δημιουργήθηκε από το Power Query για την εκπλήρωση του ερωτήματος. Το Power Query υποβάλλει τις αιτήσεις δεδομένων σε μια εγγενή πρόταση SQL στην προέλευση δεδομένων. Σε αυτήν την περίπτωση, αυτό αντιπροσωπεύει όλες τις εγγραφές και τα πεδία (στήλες) από τον fact_Sale πίνακα. Για αυτό το σενάριο, αυτή η περίπτωση είναι ανεπιθύμητη, καθώς ο πίνακας περιέχει εκατομμύρια σειρές και το ενδιαφέρον είναι μόνο στις τελευταίες 10.
  • Table.LastN: Μόλις το Power Query λάβει όλες τις εγγραφές από τον fact_Sale πίνακα, χρησιμοποιεί τη μηχανή Power Query για να φιλτράρει τον πίνακα και να διατηρήσει μόνο τις τελευταίες 10 γραμμές.
  • Table.SelectColumns: Το Power Query χρησιμοποιεί την έξοδο του Table.LastN κόμβου και εφαρμόζει έναν νέο μετασχηματισμό που ονομάζεται Table.SelectColumns, ο οποίος επιλέγει τις συγκεκριμένες στήλες που θέλετε να διατηρήσετε από έναν πίνακα.

Για την αξιολόγησή του, αυτό το ερώτημα έπρεπε να κατεβάσει όλες τις γραμμές και τα πεδία από τον fact_Sale πίνακα. Αυτό το ερώτημα χρειάστηκε κατά μέσο όρο 6 λεπτά και 1 δευτερόλεπτο για να υποβληθεί σε επεξεργασία σε μια τυπική παρουσία ροών δεδομένων Power BI (η οποία λαμβάνει υπόψη την αξιολόγηση και τη φόρτωση δεδομένων σε ροές δεδομένων).

Παράδειγμα μερικής αναδίπλωσης ερωτήματος

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

Στιγμιότυπο οθόνης της Αρχικής κορδέλας όπου επιλέγετε το παράδειγμα Επιλογή στηλών για το παράδειγμα μερικής αναδίπλωσης ερωτήματος.

Μέσα στο παράθυρο διαλόγου Επιλογή στηλών, επιλέξτε τις Sale Keyστήλες , Customer Key, Invoice Date KeyDescription, και Quantity και, στη συνέχεια, επιλέξτε OK.

Στιγμιότυπο οθόνης του τμήματος παραθύρου Επιλογή στηλών όπου επιλέγετε τις στήλες

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

Στιγμιότυπο οθόνης του μενού περιβάλλοντος όπου ταξινομείτε το πεδίο

Στη συνέχεια, επιλέξτε το μενού με βάση τα συμφραζόμενα του πίνακα και επιλέξτε το Διατήρηση μετασχηματισμού κάτω σειρών .

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

Στη Διατήρηση κάτω γραμμών, πληκτρολογήστε την τιμή 10 και, στη συνέχεια, επιλέξτε OK.

Στιγμιότυπο οθόνης του διαλόγου Διατήρηση κάτω γραμμών με την τιμή 10 να εισάγεται ως τιμή εισόδου για να διατηρούνται μόνο οι τελευταίες 10 γραμμές του πίνακα.

Το παρακάτω δείγμα κώδικα είναι η πλήρης δέσμη ενεργειών M για το ερώτημα που δημιουργήσατε:

let
    Source = Sql.Database(ServerName, DatabaseName),
    Navigation = Source{[Schema = "wwi", Item = "fact_Sale"]}[Data],
    #"Choose columns" = Table.SelectColumns(
        Navigation, 
        {"Sale Key", "Customer Key", "Invoice Date Key", "Description", "Quantity"}
    ),
    #"Sorted rows" = Table.Sort(#"Choose columns", {{"Sale Key", Order.Ascending}}),
    #"Kept bottom rows" = Table.LastN(#"Sorted rows", 10)
in
    #"Kept bottom rows"

Παράδειγμα μερικής αναδίπλωσης ερωτήματος: Κατανόηση της αξιολόγησης ερωτήματος

Ελέγχοντας το τμήμα παραθύρου εφαρμοσμένων βημάτων, παρατηρείτε ότι οι δείκτες αναδίπλωσης ερωτήματος δείχνουν ότι ο τελευταίος μετασχηματισμός που προσθέσατε, Kept bottom rows, επισημαίνεται ως βήμα που αξιολογείται εκτός της προέλευσης δεδομένων ή, με άλλα λόγια, από τον μηχανισμό Power Query.

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

Μπορείτε να κάνετε δεξί κλικ στο τελευταίο βήμα του ερωτήματός σας, αυτό που ονομάζεται Kept bottom rowsκαι να ενεργοποιήσετε την επιλογή Σχέδιο ερωτήματος για να κατανοήσετε καλύτερα τον τρόπο αξιολόγησης του ερωτήματός σας.

Στιγμιότυπο οθόνης του σχεδίου ερωτήματος που εμφανίζει πολλούς κόμβους όπου ο κόμβος

Κάθε πλαίσιο στην προηγούμενη εικόνα ονομάζεται κόμβος. Ένας κόμβος αντιπροσωπεύει κάθε διαδικασία που πρέπει να συμβεί (από αριστερά προς τα δεξιά) προκειμένου να αξιολογηθεί το ερώτημά σας. Ορισμένοι από αυτούς τους κόμβους μπορούν να αξιολογηθούν στην προέλευση δεδομένων σας, ενώ άλλοι, όπως ο κόμβος για Table.LastNτο , που αντιπροσωπεύεται από το βήμα Διατηρούνται οι τελευταίες γραμμές , αξιολογούνται χρησιμοποιώντας τον μηχανισμό Power Query.

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

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

Αυτή η αίτηση είναι στη μητρική γλώσσα της προέλευσης δεδομένων σας. Για αυτήν την περίπτωση, αυτή η γλώσσα είναι SQL και αυτή η πρόταση αντιπροσωπεύει μια αίτηση για όλες τις γραμμές, με μόνο τα ζητούμενα πεδία από τον fact_Sale πίνακα ταξινομημένα κατά πεδίο Sale Key .

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

  • Sql.Database: Συνδέεται στη βάση δεδομένων και στέλνει αιτήματα μεταδεδομένων για να κατανοήσει τις δυνατότητές της.
  • Value.NativeQuery: Αντιπροσωπεύει την αίτηση που δημιουργείται από το Power Query για την εκπλήρωση του ερωτήματος. Το Power Query υποβάλλει τις αιτήσεις δεδομένων σε μια εγγενή πρόταση SQL στην προέλευση δεδομένων. Για αυτήν την περίπτωση, αυτό αντιπροσωπεύει όλες τις εγγραφές, με μόνο τα ζητούμενα πεδία από τον fact_Sale πίνακα στη βάση δεδομένων ταξινομημένα σε αύξουσα σειρά κατά πεδίο Sales Key .
  • Table.LastN: Μόλις το Power Query λάβει όλες τις εγγραφές από τον fact_Sale πίνακα, χρησιμοποιεί τη μηχανή Power Query για να φιλτράρει τον πίνακα και να διατηρήσει μόνο τις τελευταίες 10 γραμμές.

Για την αξιολόγησή του, αυτό το ερώτημα έπρεπε να κατεβάσει όλες τις γραμμές και μόνο τα απαιτούμενα πεδία από τον fact_Sale πίνακα. Χρειάστηκαν κατά μέσο όρο 3 λεπτά και 4 δευτερόλεπτα για την επεξεργασία σε μια τυπική παρουσία ροών δεδομένων Power BI (η οποία λαμβάνει υπόψη την αξιολόγηση και τη φόρτωση δεδομένων σε ροές δεδομένων).

Πλήρες παράδειγμα αναδίπλωσης ερωτήματος

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

Στιγμιότυπο οθόνης του μετασχηματισμού Επιλογή στηλών για χρήση για το πλήρες παράδειγμα αναδίπλωσης ερωτήματος.

Στην περιοχή Επιλογή στηλών, επιλέξτε τις Sale Keyστήλες , Customer Key, Invoice Date Key, Descriptionκαι Quantity και, στη συνέχεια, επιλέξτε OK.

Στιγμιότυπο οθόνης που εμφανίζει τις στήλες

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

Στιγμιότυπο οθόνης του μενού περιβάλλοντος του πεδίου «Κλειδί πώλησης» με έμφαση στην επιλογή Φθίνουσα ταξινόμηση.

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

Διατήρηση επάνω γραμμών μέσα στο μενού περιβάλλοντος του πίνακα.

Στην περιοχή Διατήρηση επάνω γραμμών, πληκτρολογήστε την τιμή 10 και, στη συνέχεια, επιλέξτε OK.

Στιγμιότυπο οθόνης του διαλόγου Διατήρηση κορυφαίων γραμμών με την τιμή 10 να εισάγεται ως τιμή εισόδου για να διατηρούνται μόνο οι πρώτες 10 γραμμές του πίνακα.

Το παρακάτω δείγμα κώδικα είναι η πλήρης δέσμη ενεργειών M για το ερώτημα που δημιουργήσατε:

let
    Source = Sql.Database(ServerName, DatabaseName),
    Navigation = Source{[Schema = "wwi", Item = "fact_Sale"]}[Data],
    #"Choose columns" = Table.SelectColumns(
        Navigation, 
        {"Sale Key", "Customer Key", "Invoice Date Key", "Description", "Quantity"}
    ),
    #"Sorted rows" = Table.Sort(#"Choose columns", {{"Sale Key", Order.Descending}}),
    #"Kept top rows" = Table.FirstN(#"Sorted rows", 10)
in
    #"Kept top rows"

Παράδειγμα πλήρους αναδίπλωσης ερωτήματος: Κατανόηση της αξιολόγησης ερωτήματος

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

Όλα τα βήματα ερωτήματος έχουν το εικονίδιο που εμφανίζει ότι μπορούν να αναδιπλωθούν στην προέλευση δεδομένων.

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

Στιγμιότυπο οθόνης του σχεδίου ερωτήματος που εμφανίζει τα περιεχόμενα του Value.NativeQuery.

Αυτή η αίτηση είναι στη μητρική γλώσσα της προέλευσης δεδομένων σας. Για αυτήν την περίπτωση, αυτή η γλώσσα είναι SQL και αυτή η πρόταση αντιπροσωπεύει μια αίτηση για όλες τις γραμμές και τα πεδία από τον fact_Sale πίνακα.

Η συμβουλή αυτού του ερωτήματος προέλευσης δεδομένων μπορεί να σας βοηθήσει να κατανοήσετε καλύτερα την ιστορία που προσπαθεί να μεταφέρει το πλήρες σχέδιο ερωτήματος:

  • Sql.Database: Συνδέεται στη βάση δεδομένων και στέλνει αιτήματα μεταδεδομένων για να κατανοήσει τις δυνατότητές της.
  • Value.NativeQuery: Αντιπροσωπεύει την αίτηση που δημιουργείται από το Power Query για την εκπλήρωση του ερωτήματος. Το Power Query υποβάλλει τις αιτήσεις δεδομένων σε μια εγγενή πρόταση SQL στην προέλευση δεδομένων. Για αυτήν την περίπτωση, αυτό αντιπροσωπεύει μια αίτηση μόνο για τις 10 πρώτες εγγραφές του fact_Sale πίνακα, με μόνο τα απαιτούμενα πεδία μετά την ταξινόμηση σε φθίνουσα σειρά χρησιμοποιώντας το Sale Key πεδίο.

Note

Αν και δεν υπάρχει όρος που να μπορεί να χρησιμοποιηθεί για την ΕΠΙΛΟΓΗ των κάτω σειρών ενός πίνακα στη γλώσσα T-SQL, υπάρχει ένας όρος TOP που ανακτά τις επάνω σειρές ενός πίνακα.

Για την αξιολόγησή του, αυτό το ερώτημα κάνει λήψη μόνο 10 γραμμών, με μόνο τα πεδία που ζητήσατε από τον fact_Sale πίνακα. Αυτό το ερώτημα χρειάστηκε κατά μέσο όρο 31 δευτερόλεπτα για να υποβληθεί σε επεξεργασία σε μια τυπική παρουσία ροών δεδομένων Power BI (η οποία λαμβάνει υπόψη την αξιολόγηση και τη φόρτωση δεδομένων σε ροές δεδομένων).

Σύγκριση απόδοσης

Για να κατανοήσετε καλύτερα την επίδραση που έχει η αναδίπλωση ερωτήματος σε αυτά τα ερωτήματα, μπορείτε να ανανεώσετε τα ερωτήματά σας, να καταγράψετε το χρόνο που απαιτείται για την πλήρη ανανέωση κάθε ερωτήματος και να τα συγκρίνετε. Για λόγους απλότητας, αυτό το άρθρο παρέχει τους μέσους χρόνους ανανέωσης που καταγράφονται χρησιμοποιώντας τον μηχανισμό ανανέωσης ροών δεδομένων Power BI κατά τη σύνδεση σε ένα αποκλειστικό περιβάλλον Azure Synapse Analytics με το DW2000c ως επίπεδο υπηρεσίας.

Ο χρόνος ανανέωσης για κάθε ερώτημα ήταν ο εξής:

Παράδειγμα Ετικέτα Χρόνος σε δευτερόλεπτα
Χωρίς αναδίπλωση ερωτήματος Κανένα 361
Μερική αναδίπλωση ερωτήματος Partial 184
Πλήρης αναδίπλωση ερωτήματος Γεμάτος 31

Γράφημα που συγκρίνει τον χρόνο ανανέωσης του ερωτήματος χωρίς αναδίπλωση με 361 δευτερόλεπτα, του μερικού ερωτήματος αναδίπλωσης με 184 δευτερόλεπτα και του ερωτήματος πλήρους αναδίπλωσης με 31 δευτερόλεπτα.

Συμβαίνει συχνά ένα ερώτημα που αναδιπλώνεται πλήρως στην προέλευση δεδομένων να υπερτερεί των παρόμοιων ερωτημάτων που δεν αναδιπλώνονται πλήρως στην προέλευση δεδομένων. Μπορεί να υπάρχουν πολλοί λόγοι για τους οποίους συμβαίνει αυτό. Αυτοί οι λόγοι κυμαίνονται από την πολυπλοκότητα των μετασχηματισμών που εκτελεί το ερώτημά σας, έως τις βελτιστοποιήσεις ερωτημάτων που υλοποιούνται στην προέλευση δεδομένων σας, όπως ευρετήρια και αποκλειστικοί υπολογιστές και πόροι δικτύου. Ωστόσο, υπάρχουν δύο συγκεκριμένες βασικές διεργασίες που προσπαθεί να χρησιμοποιήσει η αναδίπλωση ερωτήματος, οι οποίες ελαχιστοποιούν την επίδραση που έχουν και οι δύο αυτές διαδικασίες με το Power Query:

  • Δεδομένα σε διαμετακόμιση
  • Μετασχηματισμοί που εκτελούνται από τη μηχανή Power Query

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

Δεδομένα σε διαμετακόμιση

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

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

Παράδειγμα Ετικέτα Γραμμές που ζητήθηκαν Περιγραφή
Χωρίς αναδίπλωση ερωτήματος Κανένα 3644356 Αίτηση για όλα τα πεδία και όλες τις εγγραφές από τον fact_Sale πίνακα
Μερική αναδίπλωση ερωτήματος Partial 3644356 Αίτηση για όλες τις εγγραφές, αλλά μόνο απαιτούμενα πεδία από τον πίνακα μετά την fact_Sale ταξινόμησή του κατά πεδίο Sale Key
Πλήρης αναδίπλωση ερωτήματος Γεμάτος 10 Αίτηση μόνο για τα απαιτούμενα πεδία και τις TOP 10 εγγραφές του fact_Sale πίνακα αφού ταξινομηθούν με φθίνουσα σειρά ανά Sale Key πεδίο

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

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

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

Προσοχή

Συνιστούμε να υλοποιήσετε λύσεις επαυξητικής ανανέωσης που χρησιμοποιούν αναδίπλωση ερωτήματος για ερωτήματα ή πίνακες με μεγάλο όγκο δεδομένων. Διαφορετικές ενοποιήσεις προϊόντων του Power Query υλοποιούν χρονικά όρια για τον τερματισμό ερωτημάτων μεγάλης διάρκειας. Ορισμένες πηγές δεδομένων εφαρμόζουν επίσης χρονικά όρια σε περιόδους λειτουργίας μεγάλης διάρκειας, προσπαθώντας να εκτελέσουν ακριβά ερωτήματα στους διακομιστές τους. Περισσότερες πληροφορίες: Χρήση επαυξητικής ανανέωσης με ροές δεδομένων και επαυξητικής ανανέωσης για σημασιολογικά μοντέλα

Μετασχηματισμοί που εκτελούνται από τη μηχανή Power Query

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

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

Παράδειγμα Ετικέτα Κόμβοι μετασχηματισμού μηχανισμού Power Query
Χωρίς αναδίπλωση ερωτήματος Κανένα Table.LastN, Table.SelectColumns
Μερική αναδίπλωση ερωτήματος Partial Table.LastN
Πλήρης αναδίπλωση ερωτήματος Γεμάτος

Γράφημα με τους συνολικούς μετασχηματισμούς που εκτελούνται από τον μηχανισμό Power Query για μη αναδίπλωση ερωτήματος, μερική αναδίπλωση ερωτήματος και πλήρη αναδίπλωση ερωτήματος.

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

Οι μετασχηματισμοί μπορούν να ομαδοποιηθούν στις ακόλουθες κατηγορίες:

Τύπος χειριστή Περιγραφή
Μακρινός Τελεστές που είναι κόμβοι προέλευσης δεδομένων. Η αξιολόγηση αυτών των τελεστών πραγματοποιείται εκτός του Power Query.
Ροής Οι χειριστές είναι χειριστές μεταβίβασης. Για παράδειγμα, Table.SelectRows με ένα απλό φίλτρο μπορεί συνήθως να φιλτράρει τα αποτελέσματα καθώς περνούν από τον τελεστή και δεν χρειάζεται να συγκεντρώσετε όλες τις γραμμές πριν μετακινήσετε τα δεδομένα. Table.SelectColumns και Table.ReorderColumns είναι άλλα παραδείγματα αυτού του είδους των χειριστών.
Πλήρης σάρωση Τελεστές που πρέπει να συγκεντρώσουν όλες τις γραμμές για να μπορέσουν τα δεδομένα να μετακινηθούν στον επόμενο τελεστή στην αλυσίδα. Για παράδειγμα, για την ταξινόμηση δεδομένων, το Power Query πρέπει να συγκεντρώσει όλα τα δεδομένα. Άλλα παραδείγματα τελεστών πλήρους σάρωσης είναι Table.Group, Table.NestedJoin, και Table.Pivot.

Υπόδειξη

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

Σκέψεις και προτάσεις

  • Ακολουθήστε τις βέλτιστες πρακτικές κατά τη δημιουργία ενός νέου ερωτήματος, όπως αναφέρεται στην ενότητα Βέλτιστες πρακτικές στο Power Query.
  • Χρησιμοποιήστε τους δείκτες αναδίπλωσης ερωτήματος για να ελέγξετε ποια βήματα εμποδίζουν την αναδίπλωση του ερωτήματός σας. Αναδιατάξτε τα εάν χρειάζεται για να αυξήσετε την αναδίπλωση.
  • Χρησιμοποιήστε το σχέδιο ερωτήματος για να προσδιορίσετε ποιοι μετασχηματισμοί πραγματοποιούνται στον μηχανισμό Power Query για ένα συγκεκριμένο βήμα. Εξετάστε το ενδεχόμενο να τροποποιήσετε το υπάρχον ερώτημά σας αναδιατάσσοντας τα βήματά σας. Στη συνέχεια, ελέγξτε ξανά το σχέδιο ερωτήματος του τελευταίου βήματος του ερωτήματός σας και δείτε εάν το σχέδιο ερωτήματος φαίνεται καλύτερο από το προηγούμενο. Για παράδειγμα, το νέο σχέδιο ερωτημάτων έχει λιγότερους κόμβους από το προηγούμενο και οι περισσότεροι κόμβοι είναι κόμβοι "ροής" και όχι "πλήρης σάρωση". Για προελεύσεις δεδομένων που υποστηρίζουν αναδίπλωση, τυχόν κόμβοι στο σχέδιο ερωτήματος εκτός από Value.NativeQuery τους κόμβους πρόσβασης προέλευσης δεδομένων αντιπροσωπεύουν μετασχηματισμούς που δεν αναδιπλώθηκαν.
  • Όταν είναι διαθέσιμη, μπορείτε να χρησιμοποιήσετε την επιλογή Προβολή εγγενούς ερωτήματοςΠροβολή ερωτήματος προέλευσης δεδομένων) για να εξασφαλίσετε ότι το ερώτημά σας μπορεί να αναδιπλωθεί στην προέλευση δεδομένων. Εάν αυτή η επιλογή είναι απενεργοποιημένη για το βήμα σας και χρησιμοποιείτε μια προέλευση που συνήθως την ενεργοποιεί, δημιουργήσατε ένα βήμα που σταματά την αναδίπλωση ερωτήματος. Εάν χρησιμοποιείτε μια προέλευση που δεν υποστηρίζει αυτήν την επιλογή, μπορείτε να βασιστείτε στους δείκτες αναδίπλωσης ερωτήματος και στο σχέδιο ερωτήματος.
  • Χρησιμοποιήστε τα εργαλεία διαγνωστικών ερωτημάτων για να κατανοήσετε καλύτερα τις αιτήσεις που αποστέλλονται στην προέλευση δεδομένων σας όταν οι δυνατότητες αναδίπλωσης ερωτήματος είναι διαθέσιμες για τη σύνδεση.
  • Όταν συνδυάζετε δεδομένα που προέρχονται από τη χρήση πολλών συνδέσεων, το Power Query προσπαθεί να προωθήσει όσο το δυνατόν περισσότερη εργασία και στις δύο προελεύσεις δεδομένων, ενώ συμμορφώνεται με τα επίπεδα προστασίας προσωπικών δεδομένων που ορίζονται για κάθε προέλευση δεδομένων.
  • Διαβάστε το άρθρο σχετικά με τα επίπεδα προστασίας προσωπικών δεδομένων για να προστατεύσετε τα ερωτήματά σας από την εκτέλεση ενός σφάλματος τείχους προστασίας προσωπικών δεδομένων.
  • Χρησιμοποιήστε άλλα εργαλεία για να ελέγξετε την αναδίπλωση ερωτήματος από την οπτική γωνία της αίτησης που λαμβάνεται από την προέλευση δεδομένων. Με βάση το παράδειγμα σε αυτό το άρθρο, μπορείτε να χρησιμοποιήσετε το Microsoft SQL Server Profiler για να ελέγξετε τις αιτήσεις που αποστέλλονται από το Power Query και λαμβάνονται από τον Microsoft SQL Server.
  • Εάν προσθέσετε ένα νέο βήμα σε ένα πλήρως αναδιπλωμένο ερώτημα και το νέο βήμα αναδιπλωθεί επίσης, το Power Query μπορεί να στείλει μια νέα αίτηση στην προέλευση δεδομένων αντί να χρησιμοποιήσει μια προσωρινά αποθηκευμένη έκδοση του προηγούμενου αποτελέσματος. Στην πράξη, αυτή η διαδικασία μπορεί να οδηγήσει σε φαινομενικά απλές λειτουργίες σε μια μικρή ποσότητα δεδομένων που χρειάζονται περισσότερο χρόνο για να ανανεωθούν στην προεπισκόπηση από το αναμενόμενο. Αυτή η μεγαλύτερη ανανέωση οφείλεται στο ότι το Power Query υποβάλλει εκ νέου ερώτημα στην προέλευση δεδομένων αντί να επεξεργάζεται ένα τοπικό αντίγραφο των δεδομένων.