Σημείωση
Η πρόσβαση σε αυτή τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να συνδεθείτε ή να αλλάξετε καταλόγους.
Η πρόσβαση σε αυτή τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να αλλάξετε καταλόγους.
Σημείωμα
Αυτό το άρθρο καλύπτει θέματα για προχωρημένους σχετικά με την υλοποίηση της υποστήριξης εγγενών ερωτημάτων για προσαρμοσμένες συνδέσεις, καθώς και την αναδίπλωση ερωτήματος πάνω από αυτές. Αυτό το άρθρο προϋποθέτει ότι έχετε ήδη εργασιακή γνώση αυτών των εννοιών.
Για να μάθετε περισσότερα σχετικά με τις προσαρμοσμένες συνδέσεις Power Query, μεταβείτε στην Επισκόπηση του Power Query SDK.
Στο Power Query, μπορείτε να εκτελέσετε προσαρμοσμένα εγγενή ερωτήματα στην προέλευση δεδομένων σας για να ανακτήσετε τα δεδομένα που αναζητάτε. Μπορείτε επίσης να ενεργοποιήσετε τη δυνατότητα διατήρησης της αναδίπλωσης ερωτήματος σε όλη αυτή τη διαδικασία και τις επακόλουθες διαδικασίες μετασχηματισμού που πραγματοποιούνται εντός του Power Query.
Ο στόχος αυτού του άρθρου είναι να παρουσιάσει πώς μπορείτε να υλοποιήσετε αυτήν τη δυνατότητα για την προσαρμοσμένη σύνδεσή σας.
Προαπαιτούμενα
Αυτό το άρθρο χρησιμοποιεί ως σημείο εκκίνησης ένα δείγμα που χρησιμοποιεί το πρόγραμμα οδήγησης SQL ODBC για την προέλευση δεδομένων του. Η υλοποίηση της δυνατότητας εγγενούς ερωτήματος υποστηρίζεται προς το παρόν μόνο για συνδέσεις ODBC που συμμορφώνονται με το πρότυπο SQL-92.
Το δείγμα σύνδεσης χρησιμοποιεί το πρόγραμμα οδήγησης SQL Server Native Client 11.0 . Βεβαιωθείτε ότι έχετε εγκαταστήσει αυτό το πρόγραμμα οδήγησης για να ακολουθήσετε αυτό το πρόγραμμα εκμάθησης.
Μπορείτε επίσης να προβάλετε την ολοκληρωμένη έκδοση του δείγματος σύνδεσης από τον φάκελο Finish στο αποθετήριο δεδομένων GitHub.
Τροποποιήστε τις δυνατότητες SQL της σύνδεσής σας
Στην SqlCapabilities καρτέλα του δείγματος σύνδεσης, μπορείτε να βρείτε ένα πεδίο καρτέλας με το όνομα Sql92Translation και την τιμή PassThrough για αυτό. Αυτό το νέο πεδίο είναι απαραίτητο για τη διαβίβαση του εγγενούς ερωτήματος χρησιμοποιώντας το Power Query χωρίς καμία επικύρωση.
SqlCapabilities = Diagnostics.LogValue("SqlCapabilities_Options", defaultConfig[SqlCapabilities] & [
// Place custom overrides here
// The values below are required for the SQL Native Client ODBC driver, but might
// not be required for your data source.
SupportsTop = false,
SupportsDerivedTable = true,
Sql92Conformance = 8 /* SQL_SC_SQL92_FULL */,
GroupByCapabilities = 4 /* SQL_GB_NO_RELATION */,
FractionalSecondsScale = 3,
Sql92Translation = "PassThrough"
]),
Βεβαιωθείτε ότι αυτό το πεδίο εμφανίζεται στη σύνδεσή σας πριν προχωρήσετε. Εάν όχι, θα αντιμετωπίσετε προειδοποιήσεις και σφάλματα αργότερα, όταν πρόκειται να χρησιμοποιήσετε μια δυνατότητα που δεν υποστηρίζεται επειδή δεν δηλώνεται από τη σύνδεση.
Δημιουργήστε το αρχείο σύνδεσης (ως .mez ή .pqx) και φορτώστε το στο Power BI Desktop για μη αυτόματο έλεγχο και για να ορίσετε τον προορισμό για το εγγενές ερώτημά σας.
Μη αυτόματος έλεγχος των δυνατοτήτων εγγενούς ερωτήματος της σύνδεσής σας
Σημείωμα
Για αυτό το άρθρο, θα χρησιμοποιήσουμε το δείγμα βάσης δεδομένων AdventureWorks2019. Αλλά μπορείτε να ακολουθήσετε οποιαδήποτε βάση δεδομένων SQL Server της επιλογής σας και να κάνετε τις απαραίτητες αλλαγές όσον αφορά τις ιδιαιτερότητες της βάσης δεδομένων που έχετε επιλέξει.
Ο τρόπος με τον οποίο θα υλοποιηθεί η υποστήριξη εγγενών ερωτημάτων σε αυτό το άρθρο είναι ότι θα ζητηθεί από τον χρήστη να εισαγάγει τρεις τιμές:
- Όνομα διακομιστή
- Όνομα βάσης δεδομένων
- Εγγενές ερώτημα σε επίπεδο βάσης δεδομένων
Τώρα, μέσα στο Power BI Desktop, μεταβείτε στην εμπειρία Λήψη δεδομένων και βρείτε τη σύνδεση με το όνομα Δείγμα SqlODBC.
Για το παράθυρο διαλόγου σύνδεσης, εισαγάγετε τις παραμέτρους για το διακομιστή σας και το όνομα της βάσης δεδομένων σας. Στη συνέχεια, επιλέξτε OK.
Εμφανίζεται ένα νέο παράθυρο πλοήγησης. Στην Περιήγηση, μπορείτε να προβάλετε την εγγενή συμπεριφορά περιήγησης από το πρόγραμμα οδήγησης SQL που εμφανίζει την ιεραρχική προβολή του διακομιστή και των βάσεων δεδομένων μέσα σε αυτόν. Κάντε δεξί κλικ στη βάση δεδομένων AdventureWorks2019 και, στη συνέχεια, επιλέξτε Μετασχηματισμός δεδομένων.
Αυτή η επιλογή σάς μεταφέρει στο πρόγραμμα επεξεργασίας Power Query και σε μια προεπισκόπηση του τι είναι ουσιαστικά ο στόχος του εγγενούς ερωτήματός σας, καθώς όλα τα εγγενή ερωτήματα θα πρέπει να εκτελούνται σε επίπεδο βάσης δεδομένων. Επιθεωρήστε τη γραμμή τύπων του τελευταίου βήματος για να κατανοήσετε καλύτερα τον τρόπο με τον οποίο η σύνδεσή σας θα πρέπει να περιηγηθεί στον προορισμό των εγγενών ερωτημάτων σας πριν τα εκτελέσετε. Σε αυτήν την περίπτωση, η γραμμή τύπων εμφανίζει τις ακόλουθες πληροφορίες:
= Source{[Name="AdventureWorks2019",Kind="Database"]}[Data]
Πηγή είναι το όνομα του προηγούμενου βήματος που, σε αυτήν την περίπτωση, είναι απλώς η δημοσιευμένη συνάρτηση του συνδέσμου σας με τις παραμέτρους που έχουν περάσει. Η λίστα και η εγγραφή μέσα σε αυτήν απλώς βοηθούν στην περιήγηση ενός πίνακα σε μια συγκεκριμένη γραμμή. Η σειρά ορίζεται από τα κριτήρια της εγγραφής όπου το πεδίο Όνομα πρέπει να είναι ίσο με AdventureWorks2019 και το πεδίο Είδος πρέπει να είναι ίσο με Βάση δεδομένων. Μόλις εντοπιστεί η γραμμή, το [Data] εξωτερικό της λίστας {} επιτρέπει στο Power Query να έχει πρόσβαση στην τιμή μέσα στο πεδίο Δεδομένα , το οποίο σε αυτήν την περίπτωση είναι ένας πίνακας. Μπορείτε να επιστρέψετε στο προηγούμενο βήμα (Πηγή) για να κατανοήσετε καλύτερα αυτήν την πλοήγηση.
Δοκιμή εγγενούς ερωτήματος
Με τον προορισμό να έχει πλέον προσδιοριστεί, δημιουργήστε ένα προσαρμοσμένο βήμα μετά το βήμα περιήγησης, επιλέγοντας το εικονίδιο fx στη γραμμή τύπων.
Αντικαταστήστε τον τύπο μέσα στη γραμμή τύπων με τον παρακάτω τύπο και, στη συνέχεια, επιλέξτε Enter.
= Value.NativeQuery( AdventureWorks2019_Database, "SELECT TOP (1000) *
FROM [Person].[Address]")
Αφού εφαρμόσετε αυτήν την αλλαγή, θα πρέπει να εμφανιστεί μια προειδοποίηση κάτω από τη γραμμή τύπων που ζητά άδεια για την εκτέλεση του εγγενούς ερωτήματος στην προέλευση δεδομένων σας.
Επιλέξτε Επεξεργασία δικαιώματος. Εμφανίζεται ένα νέο παράθυρο διαλόγου Native Database Query που προσπαθεί να σας προειδοποιήσει σχετικά με τις δυνατότητες εκτέλεσης εγγενών ερωτημάτων. Σε αυτήν την περίπτωση, γνωρίζουμε ότι αυτή η δήλωση SQL είναι ασφαλής, επομένως επιλέξτε Εκτέλεση για να εκτελέσετε την εντολή.
Αφού εκτελέσετε το ερώτημά σας, εμφανίζεται μια προεπισκόπηση του ερωτήματός σας στο πρόγραμμα επεξεργασίας Power Query. Αυτή η προεπισκόπηση επικυρώνει ότι η σύνδεσή σας έχει τη δυνατότητα εκτέλεσης εγγενών ερωτημάτων.
Υλοποίηση εγγενούς λογικής ερωτήματος στη σύνδεσή σας
Με τις πληροφορίες που συγκεντρώθηκαν από τις προηγούμενες ενότητες, ο στόχος τώρα είναι να μεταφραστούν αυτές οι πληροφορίες σε κώδικα για τη σύνδεσή σας.
Ο τρόπος με τον οποίο μπορείτε να ολοκληρώσετε αυτήν τη μετάφραση είναι προσθέτοντας ένα νέο πεδίο καρτέλας NativeQueryProperties στην καρτέλα Δημοσίευση της σύνδεσής σας, η οποία σε αυτήν την περίπτωση είναι η SqlODBC.Publish καρτέλα. Η NativeQueryProperties εγγραφή παίζει καθοριστικό ρόλο στον καθορισμό του τρόπου αλληλεπίδρασης του βύσματος με τη Value.NativeQuery λειτουργία.
Το πεδίο νέας εγγραφής αποτελείται από δύο πεδία:
-
NavigationSteps: Αυτό το πεδίο καθορίζει τον τρόπο εκτέλεσης ή χειρισμού της περιήγησης από τη σύνδεσή σας. Περιέχει μια λίστα εγγραφών που περιγράφουν τα βήματα για την πλοήγηση στα συγκεκριμένα δεδομένα που θέλετε να ρωτήσετε χρησιμοποιώντας τη
Value.NativeQueryσυνάρτηση. Μέσα σε κάθε εγγραφή, ορίζει ποιες παράμετροι απαιτούνται ή χρειάζονται προκειμένου αυτή η πλοήγηση να φτάσει στον επιθυμητό στόχο σας. -
DefaultOptions: Αυτό το πεδίο βοηθά στον προσδιορισμό του τρόπου με τον οποίο ορισμένες προαιρετικές παράμετροι πρέπει να συμπεριληφθούν ή να προστεθούν στην
Value.NativeQueryκαρτέλα επιλογών. Παρέχει ένα σύνολο προεπιλεγμένων επιλογών που μπορούν να χρησιμοποιηθούν κατά την υποβολή ερωτημάτων στην προέλευση δεδομένων.
Βήματα πλοήγησης
Τα βήματα πλοήγησής σας μπορούν να κατηγοριοποιηθούν σε δύο ομάδες. Το πρώτο περιέχει εκείνες τις τιμές που εισάγονται από τον τελικό χρήστη, όπως το όνομα του διακομιστή ή της βάσης δεδομένων, σε αυτήν την περίπτωση. Το δεύτερο περιέχει εκείνες τις τιμές που προκύπτουν από τη συγκεκριμένη υλοποίηση σύνδεσης, όπως το όνομα των πεδίων που δεν εμφανίζονται στον χρήστη κατά τη διάρκεια της εμπειρίας λήψης δεδομένων. Αυτά τα πεδία θα μπορούσαν να περιλαμβάνουν Name, Kind, Dataκαι άλλα ανάλογα με την υλοποίηση της σύνδεσής σας.
Για αυτήν την περίπτωση, υπήρχε μόνο ένα βήμα πλοήγησης που αποτελούνταν από δύο πεδία:
-
Όνομα: Αυτό το πεδίο είναι το όνομα της βάσης δεδομένων που μεταβιβάστηκε από τον τελικό χρήστη. Σε αυτήν την περίπτωση, ήταν
AdventureWorks2019, αλλά αυτό το πεδίο θα πρέπει πάντα να μεταβιβάζεται as-is από αυτό που εισήγαγε ο τελικός χρήστης κατά τη διάρκεια της εμπειρίας λήψης δεδομένων. -
Είδος: Αυτό το πεδίο είναι πληροφορίες που δεν είναι ορατές στον τελικό χρήστη και αφορούν συγκεκριμένα την υλοποίηση της σύνδεσης ή του προγράμματος οδήγησης. Σε αυτήν την περίπτωση, αυτή η τιμή προσδιορίζει τον τύπο του αντικειμένου που πρέπει να προσπελαστεί. Για αυτήν την υλοποίηση, αυτό το πεδίο θα είναι μια σταθερή τιμή που αποτελείται από τη συμβολοσειρά
Database.
Αυτές οι πληροφορίες θα μεταφραστούν στον ακόλουθο κώδικα. Αυτός ο κωδικός θα πρέπει να προστεθεί ως νέο πεδίο στην εγγραφή σας SqlODBC.Publish .
NativeQueryProperties = [
NavigationSteps = {
[
Indices = {
[
FieldDisplayName = "database",
IndexName = "Name"
],
[
ConstantValue = "Database",
IndexName = "Kind"
]
},
FieldAccess = "Data"
]
}
]
Σημαντικό
Το όνομα των πεδίων κάνει διάκριση πεζών-κεφαλαίων και πρέπει να χρησιμοποιείται όπως φαίνεται στο παραπάνω δείγμα. Όλες οι πληροφορίες που διαβιβάζονται στα πεδία, είτε , IndexNameείτε ConstantValueFieldDisplayName πρέπει να προέρχονται από τον κωδικό M της σύνδεσης.
Για τιμές που θα μεταβιβαστούν από αυτό που εισήγαγε ο χρήστης, μπορείτε να χρησιμοποιήσετε το ζεύγος FieldDisplayName και IndexName. Για τιμές που είναι σταθερές ή προκαθορισμένες και δεν μπορούν να μεταβιβαστούν από τον τελικό χρήστη, μπορείτε να χρησιμοποιήσετε το ζεύγος ConstantValue και IndexName. Υπό αυτήν την έννοια, η καρτέλα NavigationSteps αποτελείται από δύο πεδία:
-
Δείκτες: Καθορίζει ποια πεδία και ποιες τιμές θα χρησιμοποιηθούν για την περιήγηση στην καρτέλα που περιέχει τον προορισμό για τη
Value.NativeQueryσυνάρτηση. - FieldAccess: Καθορίζει ποιο πεδίο περιέχει τον στόχο, ο οποίος είναι συνήθως ένας πίνακας.
ΠροεπιλεγμένεςΕπιλογές
Το DefaultOptions πεδίο σάς επιτρέπει να μεταβιβάσετε προαιρετικές παραμέτρους στη συνάρτηση όταν χρησιμοποιείτε τη δυνατότητα εγγενούς ερωτήματος για τη Value.NativeQuery σύνδεσή σας.
Για να διατηρήσετε την αναδίπλωση ερωτήματος μετά από ένα εγγενές ερώτημα και υποθέτοντας ότι η σύνδεσή σας έχει δυνατότητες αναδίπλωσης ερωτήματος, μπορείτε να χρησιμοποιήσετε το ακόλουθο δείγμα κώδικα για EnableFolding = trueτο .
NativeQueryProperties = [
NavigationSteps = {
[
Indices = {
[
FieldDisplayName = "database",
IndexName = "Name"
],
[
ConstantValue = "Database",
IndexName = "Kind"
]
},
FieldAccess = "Data"
]
},
DefaultOptions = [
EnableFolding = true
]
]
Με αυτές τις αλλαγές στη θέση τους, δημιουργήστε τη σύνδεση και φορτώστε την στο Power BI Desktop για δοκιμή και επικύρωση.
Ελέγξτε και επικυρώστε τον σύνδεσμο
Στο Power BI Desktop με τη νέα προσαρμοσμένη σύνδεση στη θέση της, εκκινήστε τη σύνδεση από την εμπειρία Λήψη δεδομένων . Κατά την εκκίνηση της σύνδεσης, θα παρατηρήσετε ότι το παράθυρο διαλόγου έχει τώρα ένα μεγάλο πεδίο κειμένου με το όνομα Εγγενές ερώτημα και, σε παρένθεση, έχει τα απαιτούμενα πεδία για να λειτουργήσει. Εισαγάγετε τις ίδιες τιμές για τον εξυπηρετητή, τη βάση δεδομένων και την πρόταση SQL που εισαγάγατε προηγουμένως κατά τον έλεγχο της σύνδεσης.
Αφού επιλέξετε OK, εμφανίζεται μια προεπισκόπηση πίνακα του εκτελεσμένου εγγενούς ερωτήματος σε ένα νέο παράθυρο διαλόγου.
Επιλέξτε ΟΚ. Ένα νέο ερώτημα θα φορτωθεί τώρα μέσα στο πρόγραμμα επεξεργασίας Power Query, όπου μπορείτε να κάνετε περαιτέρω δοκιμές της σύνδεσής σας, όπως απαιτείται.
Σημείωμα
Εάν η σύνδεσή σας έχει δυνατότητες αναδίπλωσης ερωτήματος και έχει οριστεί EnableFolding=true ρητά ως μέρος της προαιρετικής καρτέλας για Value.NativeQueryτο , τότε μπορείτε να δοκιμάσετε περαιτέρω τη σύνδεσή σας στο πρόγραμμα επεξεργασίας Power Query, ελέγχοντας εάν περαιτέρω μετασχηματισμοί αναδίπλωσης στην προέλευση ή όχι.