Κοινή χρήση μέσω


TripPin μέρος 3 - Πίνακες περιήγησης

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

Σε αυτό το μάθημα, θα κάνετε τα εξής:

  • Δημιουργία πίνακα περιήγησης για ένα σταθερό σύνολο ερωτημάτων
  • Δοκιμή του πίνακα περιήγησης στο Power BI Desktop

Αυτό το μάθημα προσθέτει έναν πίνακα περιήγησης στη σύνδεση TripPin που δημιουργήθηκε στο προηγούμενο μάθημα. Όταν η σύνδεσή σας χρησιμοποίησε τη OData.Feed συνάρτηση (Μέρος 1), λάβατε τον πίνακα περιήγησης "δωρεάν", όπως προκύπτει από το $metadata έγγραφο της υπηρεσίας OData. Όταν μετακινήσατε στη Web.Contents συνάρτηση (Μέρος 2), χάσατε τον ενσωματωμένο πίνακα περιήγησης. Σε αυτό το μάθημα, παίρνετε ένα σύνολο σταθερών ερωτημάτων που δημιουργήσατε στο Power BI Desktop και προσθέτετε τα κατάλληλα μετα-δεδομένα για το Power Query για να αναδυθεί το παράθυρο διαλόγου Περιήγηση για τη συνάρτηση προέλευσης δεδομένων σας.

Ανατρέξτε στην τεκμηρίωση πίνακα περιήγησης για περισσότερες πληροφορίες σχετικά με τη χρήση πινάκων περιήγησης.

Ορισμός σταθερών ερωτημάτων στη σύνδεση

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

Ξεκινάτε αντιγράφοντας τα ερωτήματα που έχετε γράψει στο Power BI Desktop (στο προηγούμενο μάθημα) στο αρχείο σύνδεσης. Ανοίξτε το έργο TripPin στο Visual Studio Code και επικολλήστε τα ερωτήματα Airlines and Airports στο αρχείο TripPin.pq. Στη συνέχεια, μπορείτε να μετατρέψετε αυτά τα ερωτήματα σε συναρτήσεις που λαμβάνουν μία μόνο παράμετρο κειμένου:

GetAirlinesTable = (url as text) as table =>
    let
        source = TripPin.Feed(url & "Airlines"),
        value = source[value],
        toTable = Table.FromList(value, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
        expand = Table.ExpandRecordColumn(toTable, "Column1", {"AirlineCode", "Name"}, {"AirlineCode", "Name"})
    in
        expand;

GetAirportsTable = (url as text) as table =>
    let
        source = TripPin.Feed(url & "Airports"),
        value = source[value],
        #"Converted to Table" = Table.FromList(value, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
        #"Expanded Column1" = Table.ExpandRecordColumn(#"Converted to Table", "Column1", {"Name", "IcaoCode", "IataCode", "Location"}, {"Name", "IcaoCode", "IataCode", "Location"}),
        #"Expanded Location" = Table.ExpandRecordColumn(#"Expanded Column1", "Location", {"Address", "Loc", "City"}, {"Address", "Loc", "City"}),
        #"Expanded City" = Table.ExpandRecordColumn(#"Expanded Location", "City", {"Name", "CountryRegion", "Region"}, {"Name.1", "CountryRegion", "Region"}),
        #"Renamed Columns" = Table.RenameColumns(#"Expanded City",{{"Name.1", "City"}}),
        #"Expanded Loc" = Table.ExpandRecordColumn(#"Renamed Columns", "Loc", {"coordinates"}, {"coordinates"}),
        #"Added Custom" = Table.AddColumn(#"Expanded Loc", "Latitude", each [coordinates]{1}),
        #"Added Custom1" = Table.AddColumn(#"Added Custom", "Longitude", each [coordinates]{0}),
        #"Removed Columns" = Table.RemoveColumns(#"Added Custom1",{"coordinates"}),
        #"Changed Type" = Table.TransformColumnTypes(#"Removed Columns",{{"Name", type text}, {"IcaoCode", type text}, {"IataCode", type text}, {"Address", type text}, {"City", type text}, {"CountryRegion", type text}, {"Region", type text}, {"Latitude", type number}, {"Longitude", type number}})
    in
        #"Changed Type";

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

TripPinNavTable = (url as text) as table =>
    let
        source = #table({"Name", "Data"}, {
            { "Airlines", GetAirlinesTable(url) },
            { "Airports", GetAirportsTable(url) }
        })
    in
        source;

Τέλος, δηλώνετε μια νέα κοινόχρηστη συνάρτηση, TripPin.Contents, που χρησιμοποιείται ως κύρια συνάρτηση προέλευσης δεδομένων. Καταργείτε επίσης την τιμή από TripPin.Feed τοPublish, ώστε να μην εμφανίζεται πλέον στο παράθυρο διαλόγου Λήψη δεδομένων.

[DataSource.Kind="TripPin"]
shared TripPin.Feed = Value.ReplaceType(TripPinImpl, type function (url as Uri.Type) as any);

[DataSource.Kind="TripPin", Publish="TripPin.Publish"]
shared TripPin.Contents =  Value.ReplaceType(TripPinNavTable, type function (url as Uri.Type) as any);

Σημείωμα

Η επέκτασή σας μπορεί να επισημάνει πολλές συναρτήσεις ως shared, με ή χωρίς να τις συσχετίζει με μια DataSource.Kind. Ωστόσο, όταν συσχετίζετε μια συνάρτηση με μια συγκεκριμένη DataSource.Kindσυνάρτηση , κάθε συνάρτηση πρέπει να έχει το ίδιο σύνολο απαιτούμενων παραμέτρων, με το ίδιο όνομα και τύπο. Αυτό συμβαίνει επειδή οι παράμετροι της συνάρτησης προέλευσης δεδομένων συνδυάζονται για να δημιουργήσουν ένα "κλειδί" που χρησιμοποιείται για την αναζήτηση διαπιστευτηρίων στο cache.

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

TripPin.Contents("https://services.odata.org/v4/TripPinService/")

TripPin Table.

Δημιουργία πίνακα περιήγησης

Χρησιμοποιήστε τη εύχρηστη συνάρτηση Table.ToNavigationTable για να μορφοποιήσετε τον στατικό πίνακα σε κάτι που το Power Query αναγνωρίζει ως πίνακα περιήγησης. Δεδομένου ότι αυτή η συνάρτηση δεν αποτελεί μέρος της τυπικής βιβλιοθήκης του Power Query, πρέπει να αντιγράψετε τον πηγαίο κώδικά της στο αρχείο .pq.

Με αυτήν τη συνάρτηση βοηθητικής εφαρμογής στη θέση της, ενημερώστε στη συνέχεια τη συνάφειά σας TripPinNavTable για να προσθέσετε τα πεδία του πίνακα περιήγησης.

TripPinNavTable = (url as text) as table =>
    let
        source = #table({"Name", "Data", "ItemKind", "ItemName", "IsLeaf"}, {
            { "Airlines", GetAirlinesTable(url), "Table", "Table", true },
            { "Airports", GetAirportsTable(url), "Table", "Table", true }
        }),
        navTable = Table.ToNavigationTable(source, {"Name"}, "Name", "Data", "ItemKind", "ItemName", "IsLeaf")
    in
        navTable;

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

Σημείωμα

Δεν βλέπετε να εμφανίζεται το παράθυρο Περιήγηση στο παράθυρο αποτελεσμάτων PQTest του Visual Studio Code. Το παράθυρο Έξοδος ερωτήματος M εμφανίζει πάντα τον υποκείμενο πίνακα.

Εάν αντιγράψετε την επέκτασή σας στην προσαρμοσμένη σύνδεση Power BI Desktop και καλέσετε τη νέα συνάρτηση από το παράθυρο διαλόγου Λήψη δεδομένων , εμφανίζεται η περιήγηση.

TripPin Navigator.

Εάν επιλέξετε σωστά στη ρίζα του δέντρου περιήγησης και επιλέξετε Επεξεργασία, βλέπετε τον ίδιο πίνακα όπως κάνατε στο Visual Studio.

Ερώτημα TripPin.

Συμπέρασμα

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

Επόμενα βήματα

TripPin Part 4 - Διαδρομές προέλευσης δεδομένων