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


Χειρισμός περιήγησης

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

Ο πίνακας περιήγησης TripPin.

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

Table.ToNavigationTable

Μπορείτε να χρησιμοποιήσετε τη Table.ToNavigationTable συνάρτηση για να προσθέσετε τα μετα-δεδομένα τύπου πίνακα που απαιτούνται για τη δημιουργία ενός πίνακα περιήγησης.

Σημείωμα

Προς το παρόν, πρέπει να αντιγράψετε και να επικολλήσετε αυτήν τη συνάρτηση στην επέκταση M. Στο μέλλον, πιθανότατα θα μετακινηθεί στην τυπική βιβλιοθήκη M.

Ο παρακάτω πίνακας περιγράφει τις παραμέτρους για αυτή τη συνάρτηση:

Παράμετρος Λεπτομέρειες
πίνακας Ο πίνακας περιήγησης.
keyColumns Λίστα ονομάτων στηλών που λειτουργούν ως πρωτεύον κλειδί για τον πίνακα περιήγησης.
nameColumn Το όνομα της στήλης που θα πρέπει να χρησιμοποιηθεί ως το εμφανιζόμενο όνομα στην περιήγηση.
dataColumn Το όνομα της στήλης που περιέχει τον Πίνακα ή τη Συνάρτηση που θα εμφανιστεί.
itemKindColumn Το όνομα της στήλης που θα χρησιμοποιηθεί για τον προσδιορισμό του τύπου εικονιδίου που θα εμφανίζεται. Δείτε παρακάτω για τη λίστα έγκυρων τιμών για τη στήλη.
itemNameColumn Το όνομα της στήλης που θα χρησιμοποιηθεί για τον προσδιορισμό της συμπεριφοράς προεπισκόπησης. Αυτό συνήθως ορίζεται στην ίδια τιμή με την itemKind.
isLeafColumn Το όνομα της στήλης που χρησιμοποιείται για να προσδιοριστεί εάν πρόκειται για έναν κόμβο φύλλου ή εάν ο κόμβος μπορεί να αναπτυχθεί για να περιέχει έναν άλλο πίνακα περιήγησης.

Η συνάρτηση προσθέτει τα παρακάτω μετα-δεδομένα στον τύπο πίνακα:

Πεδίο Παράμετρος
NavigationTable.NameColumn nameColumn
NavigationTable.DataColumn dataColumn
NavigationTable.ItemKindColumn itemKindColumn
NavigationTable.IsLeafColumn isLeafColumn
Preview.DelayColumn itemNameColumn

Τιμές για ItemKind

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

  • Τροφοδοσία
  • Βάση δεδομένων
  • DatabaseServer
  • Διάσταση
  • Table
  • Φάκελος
  • Function
  • Προβολή
  • Φύλλο
  • DefinedName
  • Εγγραφή

Παραδείγματα

Πίνακας επίπεδης περιήγησης

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

shared NavigationTable.Simple = () =>
    let
        objects = #table(
            {"Name",       "Key",        "Data",                           "ItemKind", "ItemName", "IsLeaf"},{
            {"Item1",      "item1",      #table({"Column1"}, {{"Item1"}}), "Table",    "Table",    true},
            {"Item2",      "item2",      #table({"Column1"}, {{"Item2"}}), "Table",    "Table",    true},
            {"Item3",      "item3",      FunctionCallThatReturnsATable(),  "Table",    "Table",    true},            
            {"MyFunction", "myfunction", AnotherFunction.Contents,       "Function", "Function", true}
            }),
        NavTable = Table.ToNavigationTable(objects, {"Key"}, "Name", "Data", "ItemKind", "ItemName", "IsLeaf")
    in
        NavTable;

shared FunctionCallThatReturnsATable = () =>
    #table({"DynamicColumn"}, {{"Dynamic Value"}});

Αυτός ο κώδικας θα έχει ως αποτέλεσμα την εμφάνιση της παρακάτω περιήγησης στο Power BI Desktop:

Ένα δείγμα ενός πίνακα επίπεδης περιήγησης.

Πίνακας περιήγησης πολλών επιπέδων

Μπορείτε να χρησιμοποιήσετε ένθετες πίνακες περιήγησης για να δημιουργήσετε μια ιεραρχική προβολή πάνω από το σύνολο δεδομένων σας. Αυτό το κάνετε ορίζοντας την IsLeaf τιμή για αυτήν τη γραμμή σε false (η οποία την επισημαίνει ως κόμβο που μπορεί να αναπτυχθεί) και μορφοποιήστε τη Data στήλη ώστε να είναι επίσης ένας άλλος πίνακας περιήγησης.

shared NavigationTable.Nested = () as table =>
    let
        objects = #table(
            {"Name",       "Key",  "Data",                "ItemKind", "ItemName", "IsLeaf"},{
            {"Nested A",   "n1",   CreateNavTable("AAA"), "Table",    "Table",    false},
            {"Nested B",   "n2",   CreateNavTable("BBB"), "Table",    "Table",    false},
            {"Nested C",   "n3",   CreateNavTable("CCC"), "Table",    "Table",    false}
        }),
        NavTable = Table.ToNavigationTable(objects, {"Key"}, "Name", "Data", "ItemKind", "ItemName", "IsLeaf")
    in
        NavTable;

CreateNavTable = (message as text) as table => 
    let
        objects = #table(
            {"Name",  "Key",   "Data",                           "ItemKind", "ItemName", "IsLeaf"},{
            {"Item1", "item1", #table({"Column1"}, {{message}}), "Table",    "Table",    true},
            {"Item2", "item2", #table({"Column1"}, {{message}}), "Table",    "Table",    true}
        }),
        NavTable = Table.ToNavigationTable(objects, {"Key"}, "Name", "Data", "ItemKind", "ItemName", "IsLeaf")
    in
        NavTable;

Αυτός ο κώδικας θα έχει ως αποτέλεσμα την εμφάνιση της παρακάτω περιήγησης στο Power BI Desktop:

Ένα δείγμα ενός ιεραρχικού πίνακα περιήγησης.

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

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

  • Χειρισμός σφαλμάτων για να εξασφαλιστεί μια καλή εμπειρία για τους χρήστες που δεν έχουν πρόσβαση σε συγκεκριμένα τελικά σημεία.
  • Η αξιολόγηση κόμβου είναι αργή από προεπιλογή. Οι κόμβοι φύλλων δεν αξιολογούνται μέχρι να επεκταθεί ο γονικός κόμβος. Ορισμένες υλοποιήσεις δυναμικών πινάκων περιήγησης πολλών επιπέδων μπορεί να οδηγήσουν σε γρήγορη αξιολόγηση ολόκληρου του δέντρου. Βεβαιωθείτε ότι παρακολουθείτε τον αριθμό των κλήσεων που πραγματοποιεί το Power Query καθώς αποδίδει αρχικά τον πίνακα περιήγησης. Για παράδειγμα, η Table.InsertRows είναι "πιο τεμπέλα" από την Table.FromRecords, καθώς δεν χρειάζεται να αξιολογήσει τα ορίσματά της.