Δυναμικές παράμετροι ερωτήματος M στο Power BI Desktop (προεπισκόπηση)Dynamic M query parameters in Power BI Desktop (preview)

Με τις δυναμικές παραμέτρους ερωτήματος M, οι συντάκτες μοντέλων μπορούν να επιτρέπουν στους θεατές αναφορών να χρησιμοποιούν φίλτρα ή αναλυτές για να ορίζουν τις τιμές για μια παράμετρο ερωτήματος, η οποία μπορεί να είναι ιδιαίτερα χρήσιμη για βελτιστοποιήσεις απόδοσης ερωτημάτων.With Dynamic M Query Parameters, model authors can let report viewers to use filters or slicers to set the value(s) for an M Query Parameter, which can be especially useful for query performance optimizations. Με τις δυναμικές παραμέτρους ερωτήματος M, οι συντάκτες μοντέλων έχουν πρόσθετο έλεγχο σχετικά με τον τρόπο ενσωμάτωσης των επιλογών φιλτραρίσματος σε ερωτήματα προέλευσης DirectQuery.With Dynamic M Query Parameters, model authors have additional control over how filter selections get incorporated into DirectQuery source queries.

Όταν οι συντάκτες μοντέλων κατανοούν την προβλεπόμενη σημασιολογία των φίλτρων τους, συχνά γνωρίζουν πώς μπορούν να συντάξουν αποτελεσματικά ερωτήματα με βάση την προέλευση δεδομένων τους και, επομένως, μπορούν να εξασφαλίσουν ότι οι επιλογές φιλτραρίσματος ενσωματώνονται σε ερωτήματα προέλευσης στο σωστό σημείο για να επιτύχουν τα επιδιωκόμενα αποτελέσματά τους με βελτιωμένες επιδόσεις.When model authors understand the intended semantics of their filters, they often know how to write efficient queries against their data source, and can thus ensure filter selections get incorporated into source queries at the right point to achieve their intended results with improved performance.

Χρήση δυναμικών παραμέτρων ερωτήματος MEnabling Dynamic M query parameters

Οι δυναμικές παράμετροι ερωτήματος M βρίσκονται αυτήν τη στιγμή σε προεπισκόπηση και πρέπει να ενεργοποιηθούν για να μπορέσετε να τις χρησιμοποιήσετε.Dynamic M Query Parameters are currently in preview, and must be enabled to be used. Επιλέξτε Αρχείο > Επιλογές και ρυθμίσεις > Επιλογές και, στη συνέχεια, επιλέξτε Δυνατότητες προεπισκόπησης από το αριστερό παράθυρο.Select File > Options and settings > Options and then select Preview features from the left pane. Από εκεί, βεβαιωθείτε ότι είναι επιλεγμένο το πλαίσιο ελέγχου Δυναμικές παράμετροι ερωτήματος M.From there, make sure the Dynamic M Query Parameters checkbox is selected. Θα χρειαστεί να κάνετε επανεκκίνηση του Power BI Desktop για να ενεργοποιηθεί η αλλαγή.You may need to restart Power BI Desktop for the change to be enabled.

Ενεργοποίηση της δυνατότητας προεπισκόπησης

Ως προϋπόθεση για αυτήν τη δυνατότητα, πρέπει να έχετε δημιουργήσει μια έγκυρη Παράμετρο ερωτήματος M, η οποία να αναφέρεται σε έναν ή περισσότερους πίνακες Direct Query.As a prerequisite for this feature, you must have a valid M Query Parameter created and referred in one or more Direct Query tables.

Σημείωση

Φροντίστε να διαβάσετε την ενότητα Ζητήματα και περιορισμοί σε αυτό το άρθρο, καθώς δεν υποστηρίζονται όλες οι προελεύσεις DirectQuery με αυτή τη δυνατότητα.Be sure to check the Considerations and limitations section in this article, since not all DirectQuery sources are supported with this feature.

Ας δούμε ένα παράδειγμα για τη διαβίβαση μιας μοναδικής τιμής σε μια παράμετρο δυναμικά:Let's step through an example for passing a single value to a parameter dynamically:

  1. Στο Power BI Desktop, εκκινήστε το Power Query από την καρτέλα Δεδομένα και επιλέξτε Νέες παράμετροι κάτω από το κουμπί Διαχείριση παραμέτρων στην κορδέλα.In Power BI Desktop, launch Power Query from the Data tab, and select New Parameters under the Manage Parameters button in the ribbon.

    Μενού κορδέλας

  2. Στη συνέχεια, συμπληρώστε τις παρακάτω πληροφορίες σχετικά με την παράμετρο.Then fill out the following information about the Parameter.

    Πληροφορίες παραμέτρου

  3. Κάντε ξανά κλικ στην επιλογή Νέο αν έχετε περισσότερες παραμέτρους για προσθήκη.Click New again if you have more parameters to add.

    Δημιουργία άλλης παραμέτρου

  4. Αφού δημιουργήσετε τις παραμέτρους, μπορείτε να τις αναφέρετε στο ερώτημα M.Once you've created the parameters, you can reference them in the M query. Για να τροποποιήσετε το ερώτημα M, ανοίξτε το πρόγραμμα επεξεργασίας για προχωρημένους ενώ έχετε επιλεγμένο το ερώτημα που θέλετε να τροποποιήσετε:To modify the M Query, open the Advanced editor while you have the Query that you want to modify selected:

    άνοιγμα προηγμένου προγράμματος επεξεργασίας

  5. Στη συνέχεια, αναφέρετε τις παραμέτρους στο ερώτημα M, που επισημαίνονται με κίτρινο χρώμα στην ακόλουθη εικόνα.Next, reference the parameters in the M Query, highlighted in yellow in the following image.

    Αναφορά της παραμέτρου

  6. Τώρα που έχετε δημιουργήσει τις παραμέτρους και τις έχετε αναφέρει στο ερώτημα M, θα πρέπει να δημιουργήσετε έναν πίνακα με μια στήλη που παρέχει τις πιθανές διαθέσιμες τιμές για αυτή την παράμετρο.Now that you have created the parameters and referenced them in the M Query, next, you will need to create a table with a column that provides the possible values available for that parameter. Με αυτόν τον τρόπο θα επιτραπούν οι παράμετροι που ρυθμίζονται δυναμικά με βάση την επιλογή φίλτρου.This will allow it such that the parameters are dynamically set based on filter selection. Σε αυτό το παράδειγμα, θέλουμε η παράμετρος StartTime και η παράμετρος EndTime να είναι δυναμικές.In this example, we want our StartTime Parameter and EndTime Parameter to be dynamic. Δεδομένου ότι αυτές οι παράμετροι απαιτούν μια παράμετρο ημερομηνίας/ώρας, θέλω να δημιουργήσω καταχωρήσεις ημερομηνιών που μπορούν να χρησιμοποιηθούν για τον ορισμό της ημερομηνίας της παραμέτρου.Since these parameters are requiring a Date/Time parameter, I want to generate date inputs that can be used to set the date for the parameter. Για να ξεκινήσουμε, δημιουργούμε έναν νέο πίνακα:To start, we create a new table:

    Δημιουργία νέου πίνακα

  7. Ακολουθεί ο πρώτος πίνακας που δημιούργησα για τις τιμές για την παράμετρο StartTime :Here's the first table I created for the values for StartTime Parameter:

    StartDateTable = CALENDAR (DATE(2016,1,1), DATE(2016,12,31))

    δημιουργία πίνακα

  8. Ακολουθεί ο δεύτερος πίνακας που δημιούργησα για τις τιμές για την παράμετρο EndTime:Here's the second table I created for the values for EndTime Parameter:

    EndDateTable = CALENDAR (DATE(2016,1,1), DATE(2016,12,31))

    δημιουργία του δεύτερου πίνακα

    Σημείωση

    Συνιστούμε τη χρήση διαφορετικού ονόματος στήλης που δεν υπάρχει σε πραγματικό πίνακα.We recommend using a different column name that is not in an actual table. Εάν έχουν το ίδιο όνομα, η επιλεγμένη τιμή θα εφαρμοστεί ως φίλτρο στο πραγματικό ερώτημα.If they are same name, the selected value will be applied as a filter to the actual query.

  9. Τώρα που έχουν δημιουργηθεί οι πίνακες με το πεδίο Ημερομηνία, μπορούμε να συνδέουμε κάθε πεδίο με μια παράμετρο.Now that the tables with the Date field have been created, we can bind each field to a parameter. Η σύνδεση του πεδίου με μια παράμετρο ουσιαστικά σημαίνει ότι, καθώς αλλάζει η επιλεγμένη τιμή για το πεδίο, η τιμή θα μεταβιβαστεί στην παράμετρο και θα ενημερώνεται το ερώτημα στο οποίο αναφέρεται η παράμετρος.Binding the field to a parameter essentially means that as the selected value for the field changes, the value will get passed to the parameter and update the query where the parameter is referenced. Επομένως, για να συνδέσετε το πεδίο, μεταβείτε στην καρτέλα Μοντελοποίηση, επιλέξτε το πεδίο που μόλις δημιουργήσατε και, στη συνέχεια, μεταβείτε στις Ιδιότητες Για προχωρημένους:So to bind field, go to the Modeling tab, select the newly created field, and then go to the Advanced properties:

    Σημείωση

    Ο τύπος δεδομένων στήλης πρέπει να συμφωνεί με τον τύπο παραμέτρου M.Column Data type should match with M parameter type.

    σύνδεση του πεδίου με μια παράμετρο

  10. Επιλέξτε την αναπτυσσόμενη λίστα στην περιοχή Σύνδεση με την παράμετρο και επιλέξτε την παράμετρο που θέλετε να συνδέσετε στο πεδίο:Select the dropdown under Bind to parameter and select the Parameter that you want to bind to the field:

    σύνδεση της παραμέτρου με το πεδίο

    Εφόσον αυτό το παράδειγμα προορίζεται για μια τιμή μίας επιλογής (για τη ρύθμιση της παραμέτρου σε μία μόνο τιμή), θα πρέπει να διατηρήσετε τη ρύθμισης Πολλαπλή επιλογή ορισμένη σε Όχι, που είναι η προεπιλογή:Since this example is for a single-select value (setting the parameter to a single value), you'll want to keep Multi-select set to No, which is the default:

    η πολλαπλή επιλογή έχει οριστεί στη θέση απενεργοποίησης

    Εάν οι υποθέσεις χρήσης σας απαιτούν πολλαπλή επιλογή (περνώντας πολλές τιμές σε μία μόνο παράμετρο), πρέπει να κάνετε εναλλαγή του διακόπτη σε Ναι και να εξασφαλίσετε ότι το ερώτημα M έχει ρυθμιστεί σωστά ώστε να αποδέχεται πολλές τιμές στο ερώτημα M.If your use cases require multi-selection (passing multi-values to a single parameter), you must toggle the switch to Yes and ensure that your M query is set up properly to accept multiple values in the M query. Ακολουθεί ένα παράδειγμα για το RepoNameParameter, το οποίο επιτρέπει πολλές τιμές:Here's an example for RepoNameParameter, which allows for multiple values:

    παράδειγμα πολλών τιμών

  11. Μπορείτε να επαναλάβετε αυτά τα βήματα αν έχετε άλλα πεδία για σύνδεση με άλλες παραμέτρους:You can repeat these steps if you have other fields to bind to other parameters:

    διαμόρφωση πρόσθετων ρυθμίσεων

  12. Τέλος, μπορείτε να αναφέρετε αυτό το πεδίο σε έναν αναλυτή ή ως φίλτρο:Finally, you can reference this field in a slicer or as a filter:

    αναφορά στα πεδία

Εάν η αντιστοιχισμένη στήλη έχει οριστεί σε Καμία για πολλαπλή επιλογή, πρέπει να χρησιμοποιήσετε είτε μια μοναδική λειτουργία επιλογής στον αναλυτή, είτε να απαιτήσετε μόνο μία επιλογή στην κάρτα φίλτρου.If the mapped column is set to No for Multi-select, you must use either a single select mode in the slicer, or require single select in the filter card.

Δυνητικός κίνδυνος ασφαλείαςPotential security risk

Όταν επιτρέπετε στους αναγνώστες αναφορών να ορίζουν δυναμικά τις τιμές για τις παραμέτρους ερωτήματος M, ενδέχεται να μπορούν να έχουν πρόσβαση σε πρόσθετα δεδομένα ή να ενεργοποιούν τροποποιήσεις στο σύστημα προέλευσης, χρησιμοποιώντας επιθέσεις με προσθήκη κακόβουλου κώδικα, ανάλογα με τον τρόπο με τον οποίο γίνεται αναφορά στις παραμέτρους στο ερώτημα M και ποιες τιμές μεταβιβάζονται σε αυτήν την παράμετρο.When you allow report readers to dynamically set the values for the M Query parameters, they may be able to access additional data or trigger modifications to the source system using injection attacks, depending how the parameters are referenced in the M Query and what values are passed to that parameter.

Για παράδειγμα, ας υποθέσουμε ότι έχετε ένα παραμετροποιημένο ερώτημα Kusto, κατασκευασμένο όπως το εξής:For example, let's say you have a parameterized Kusto query constructed like the following:

Products
| where Category == [Parameter inserted here] & HasReleased == 'True'
 | project ReleaseDate, Name, Category, Region```

Ενδέχεται να μην έχετε προβλήματα με έναν φιλικό χρήστη ο οποίος μεταβιβάζει μια κατάλληλη τιμή για την παράμετρο, για παράδειγμα, Παιχνίδια:You may have no issues with a friendly user who passes an appropriate value for the parameter, for example, Games:

| where Category == 'Games' & HasReleased == 'True'

Ωστόσο, ένας εισβολέας μπορεί να είναι σε θέση να περάσει μια τιμή που τροποποιεί το ερώτημα για να αποκτήσει πρόσβαση σε περισσότερα δεδομένα, για παράδειγμα, 'Παιχνίδια' // :However, an attacker may be able to pass a value that modifies the query to get access to more data, for example, 'Games' //:

Products
| where Category == 'Games'// & HasReleased == 'True'
| project ReleaseDate, Name, Category, Region

Σε αυτό το παράδειγμα, ο εισβολέας μπορεί να αποκτήσει πρόσβαση σε πληροφορίες σχετικά με παιχνίδια που δεν έχουν κυκλοφορήσει ακόμα, αλλάζοντας μέρος του ερωτήματος σε ένα σχόλιο.In this example, the attacker can get access to information on games that have not been released yet by changing part of the query into a comment.

Πώς να μετριάσετε τον κίνδυνοHow to mitigate the risk

Για να μετριάσετε τον κίνδυνο ασφαλείας, είναι προτιμότερο να αποφύγετε την αλληλουχία συμβολοσειρών των τιμών παραμέτρων M μέσα στο ερώτημα.To mitigate the security risk, it's best to avoid string concatenation of M parameter values within the query. Αντί για αυτό, καταναλώστε αυτές τις τιμές παραμέτρων σε λειτουργίες M που αναδιπλώνονται στο ερώτημα προέλευσης, έτσι ώστε ο μηχανισμός M και η σύνδεση να κατασκευάσουν το τελικό ερώτημα.Instead, consume those parameter values in M operations that fold to the source query, so that the M engine and connector construct the final query. Εναλλακτικά, εάν υπάρχει, χρησιμοποιήστε έναν μηχανισμό μετάδοσης παραμέτρων που είναι ενσωματωμένος στη γλώσσα και τις γραμμές σύνδεσης του ερωτήματος προέλευσης.Alternatively, if available, make use of a parameter passing mechanism built-in to the source query language and connectors. Για παράδειγμα, η Εξερεύνηση δεδομένων Azure έχει ενσωματωμένες δυνατότητες παραμέτρου ερωτήματος που έχουν σχεδιαστεί για προστασία από επιθέσεις με προσθήκη κακόβουλου κώδικα.For example, Azure Data Explorer has built-in query parameter capabilities that are designed to protect against injection attacks.

Εδώ θα βρείτε ορισμένα παραδείγματα:Here are some examples:

  • Παράδειγμα με τις λειτουργίες φιλτραρίσματος του M Query:Example using M query's filtering operations:

    Table.SelectRows(Source, (r) =\> r[Columns] = Parameter)
    
  • Παράδειγμα δήλωσης της παραμέτρου στο ερώτημα προέλευσης (ή διαβίβαση της τιμής της παραμέτρου ως στοιχείου εισόδου σε μια συνάρτηση ερωτήματος προέλευσης):Example declaring the parameter in the source query (or passing the parameter value as an input to a source query function):

    declare query\_parameters (Name of Parameter : Type of Parameter);
    

Ζητήματα και περιορισμοίConsiderations and limitations

Υπάρχουν ορισμένα ζητήματα και περιορισμοί που πρέπει να λάβετε υπόψη όταν χρησιμοποιείτε δυναμικές παραμέτρους ερωτήματος M:There are some considerations and limitations to consider when using dynamic M query parameters:

  • Μια μεμονωμένη παράμετρος δεν μπορεί να συνδεθεί σε πολλαπλά πεδία ή αντίστροφα.A single parameter cannot be bound to multiple fields nor vice-versa.

  • Η δυνατότητα υποστηρίζεται μόνο για προελεύσεις δεδομένων που βασίζονται σε M.The feature is only supported for M based data sources. Οι παρακάτω προελεύσεις DirectQuery δεν υποστηρίζονται:The following DirectQuery sources are not supported:

    • Προελεύσεις δεδομένων που βασίζονται σε T-SQL: SQL Server, βάση δεδομένων SQL Azure, χώροι συγκέντρωσης Synapse SQL (γνωστοί και ως Αποθήκες δεδομένων Azure SQL) και χώροι συγκέντρωσης Synapse SQL OnDemandT-SQL based data sources: SQL Server, Azure SQL Database, Synapse SQL pools (aka Azure SQL Data Warehouse), and Synapse SQL OnDemand pools
    • Προελεύσεις δεδομένων δυναμικής σύνδεσης: Υπηρεσίες Ανάλυσης του Azure, Υπηρεσίες ανάλυσης του SQL Server, Σύνολα δεδομένων του Power BILive connect data sources: Azure Analysis Services, SQL Server Analysis Services, Power BI Datasets
    • Άλλες μη υποστηριζόμενες προελεύσεις δεδομένων: Oracle, Teradata και Relational SAP HanaOther unsupported data sources: Oracle, Teradata and Relational SAP Hana
    • Υποστηρίζονται μερικώς μέσω της δυνατότητας προγραμματισμού τελικού σημείου XMLA/TOM: SAP BW και SAP ΧάναPartially supported through XMLA / TOM endpoint programmability: SAP BW and SAP Hana
  • Οι μη υποστηριζόμενοι έτοιμοι τύποι παραμέτρου είναι οι εξής:Unsupported out-of-box parameter types are the following:

    • ΟποιοσδήποτεAny
    • ΔιάρκειαDuration
    • Αληθές/ΨευδέςTrue/False
    • ΔυαδικόBinary
  • Μη υποστηριζόμενα φίλτρα:Unsupported filters:

    • Δημιουργία αναλυτή σχετικής ώρας ή φίλτρουRelative time slicer or filter
    • Σχετική ημερομηνίαRelative date
    • Αναλυτής ιεραρχίαςHierarchy slicer
    • Φίλτρο συμπερίληψης πολλών πεδίωνMulti-field include filter
    • Εξαίρεση φίλτρων / Όχι φίλτραExclude filter / Not filters
    • Διασταυρούμενη επισήμανσηCross-highlighting
    • Φίλτρο διερεύνησηςDrill down filter
    • Φίλτρα διασταυρούμενης διερεύνησηςCross drill filter
    • Φίλτρα κορυφαίων NTop N filter
  • Μη υποστηριζόμενες λειτουργίες:Unsupported operations:

    • ΚαιAnd
    • ΠεριέχειContains
    • Μικρότερο απόLess than
    • Μεγαλύτερο απόGreater than
    • Αρχίζει μεStarts with
    • Δεν αρχίζει απόDoes not start with
    • Δεν είναιIs not
    • Δεν περιέχειDoes not contains
    • Επιλογή όλωνSelect all
    • Είναι κενόIs blank
    • Δεν είναι κενόIs not blank

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

Υπάρχουν πολλά πράγματα που μπορείτε να κάνετε με το Power BI Desktop.You can do all sorts of things with Power BI Desktop. Για περισσότερες πληροφορίες σχετικά με τις δυνατότητές του, δείτε τους παρακάτω πόρους:For more information on its capabilities, check out the following resources: