Dynamische M-Abfrageparameter in Power BI Desktop (Vorschau)Dynamic M query parameters in Power BI Desktop (preview)

Mit dynamischen M-Abfrageparametern können Modellautoren für Berichts-Viewer ermöglichen, dass Filter oder Slicer verwendet werden, um die Werte für einen M-Abfrageparameter festzulegen. Dies kann besonders nützlich für die Optimierung der Abfrageleistung sein.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. Mit dynamischen M-Abfrageparametern haben Modellautoren zusätzliche Kontrolle darüber, wie ausgewählte Filter in Abfragen der DirectQuery-Quelle integriert werden.With Dynamic M Query Parameters, model authors have additional control over how filter selections get incorporated into DirectQuery source queries.

Wenn Modellautoren sich mit der beabsichtigten Semantik der Filter vertraut gemacht haben, wissen sie häufig, wie sie effiziente Abfragen für ihre Datenquelle schreiben können. So können sie sicherstellen, dass Filterauswahlen an der richtigen Stelle in Quellabfragen integriert werden, um die gewünschten Ergebnisse mit verbesserter Leistung zu erzielen.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.

Aktivieren von dynamischen M-AbfrageparameternEnabling Dynamic M query parameters

Dynamische M-Abfrageparameter befinden sich derzeit in der Vorschauphase und müssen zur Verwendung aktiviert werden.Dynamic M Query Parameters are currently in preview, and must be enabled to be used. Wählen Sie Datei > Optionen und Einstellungen > Optionen und dann im linken Bereich Vorschaufunktionen aus.Select File > Options and settings > Options and then select Preview features from the left pane. Vergewissern Sie sich, dass das Kontrollkästchen Dynamic M Query Parameters (Dynamische M-Abfrageparameter) aktiviert ist.From there, make sure the Dynamic M Query Parameters checkbox is selected. Möglicherweise müssen Sie Power BI Desktop neu starten, damit die Änderung aktiviert wird.You may need to restart Power BI Desktop for the change to be enabled.

Aktivieren der Previewfunktion

Als Voraussetzung für diese Funktion müssen Sie einen gültigen M-Abfrageparameter erstellen und darauf in einer oder mehreren DirectQuery-Tabellen verweisen.As a prerequisite for this feature, you must have a valid M Query Parameter created and referred in one or more Direct Query tables.

Hinweis

Lesen Sie unbedingt den Abschnitt Überlegungen und Einschränkungen in diesem Artikel, da dieses Feature nicht alle DirectQuery-Quellen unterstützt.Be sure to check the Considerations and limitations section in this article, since not all DirectQuery sources are supported with this feature.

Im Folgenden wird ein Beispiel für die dynamische Übergabe eines einzelnen Werts an einen Parameter beschrieben:Let's step through an example for passing a single value to a parameter dynamically:

  1. Starten Sie Power Query in Power BI Desktop auf der Registerkarte Daten , und wählen Sie im Menüband unter der Schaltfläche Parameter verwalten die Option Neuer Parameter aus.In Power BI Desktop, launch Power Query from the Data tab, and select New Parameters under the Manage Parameters button in the ribbon.

    Menüband

  2. Füllen Sie dann die folgenden Informationen zum Parameter aus.Then fill out the following information about the Parameter.

    Parameterinformationen

  3. Klicken Sie erneut auf Neu , wenn Sie weitere Parameter hinzufügen möchten.Click New again if you have more parameters to add.

    Erstellen eines weiteren Parameters

  4. Nachdem Sie die Parameter erstellt haben, können Sie in der M-Abfrage darauf verweisen.Once you've created the parameters, you can reference them in the M query. Zum Ändern der M-Abfrage öffnen Sie den erweiterten Editor in der ausgewählten zu ändernden Abfrage:To modify the M Query, open the Advanced editor while you have the Query that you want to modify selected:

    Öffnen des erweiterten Editors

  5. Verweisen Sie anschließend in der M-Abfrage auf die Parameter, die in der folgenden Abbildung gelb hervorgehoben sind.Next, reference the parameters in the M Query, highlighted in yellow in the following image.

    Verweisen auf Parameter

  6. Nachdem Sie die Parameter erstellt und in der M-Abfrage darauf verwiesen haben, müssen Sie eine Tabelle mit einer Spalte erstellen, die die möglichen Werte für den jeweiligen Parameter enthält.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. Damit können die Parameter basierend auf der Filterauswahl dynamisch festgelegt werden.This will allow it such that the parameters are dynamically set based on filter selection. In diesem Beispiel sollen der Parameter StartTime und der Parameter EndTime dynamisch sein.In this example, we want our StartTime Parameter and EndTime Parameter to be dynamic. Da diese Parameter einen Parameterwert mit Datum und Uhrzeit erfordern, sollen Dateneingaben generiert werden, die zum Festlegen des Datums für den Parameter verwendet werden können.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. Zunächst wird eine neue Tabelle erstellt:To start, we create a new table:

    Erstellen einer neuen Tabelle

  7. Es folgt die erste Tabelle, die für die Werte für den Parameter StartTime erstellt wird:Here's the first table I created for the values for StartTime Parameter:

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

    Erstellen einer Tabelle

  8. Es folgt die zweite Tabelle, die für die Werte für den Parameter „EndTime“ erstellt wird:Here's the second table I created for the values for EndTime Parameter:

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

    Erstellen der zweiten Tabelle

    Hinweis

    Es empfiehlt sich die Verwendung eines anderen Spaltennamens, der nicht in einer tatsächlichen Tabelle enthalten ist.We recommend using a different column name that is not in an actual table. Bei Verwendung gleicher Spaltennamen wird der ausgewählte Wert als Filter auf die tatsächliche Abfrage angewandt.If they are same name, the selected value will be applied as a filter to the actual query.

  9. Nachdem die Tabellen mit dem Feld Date erstellt wurden, können die einzelnen Felder an einen Parameter gebunden werden.Now that the tables with the Date field have been created, we can bind each field to a parameter. Die Bindung eines Felds an einen Parameter bedeutet im Wesentlichen, dass bei Änderung des ausgewählten Werts für das Feld der Wert an den Parameter übergeben und die Abfrage aktualisiert wird, in der auf den Parameter verwiesen wird.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. Zum Binden des Felds wechseln Sie also zur Registerkarte Modellierung , wählen das neu erstellte Feld aus und wechseln dann unter „Eigenschaften“ zu Erweitert :So to bind field, go to the Modeling tab, select the newly created field, and then go to the Advanced properties:

    Hinweis

    Der Spaltendatentyp muss mit dem M-Parametertyp identisch sein.Column Data type should match with M parameter type.

    Binden des Felds an einen Parameter

  10. Wählen Sie die Dropdownliste unter An Parameter binden und dann den Parameter aus, der an das Feld gebunden werden soll:Select the dropdown under Bind to parameter and select the Parameter that you want to bind to the field:

    Binden des Parameters an das Feld

    Da sich dieses Beispiel auf einen Wert mit Einfachauswahl bezieht (der Parameter wird auf einen einzelnen Wert festgelegt), wird die Festlegung von Mehrfachauswahl auf Nein beibehalten. Dies ist die Standardeinstellung.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:

    „Mehrfachauswahl“ auf „Nein“ festgelegt

    Wenn für Ihre Anwendungsfälle eine Mehrfachauswahl erforderlich ist (mehrere Werte werden an einen einzelnen Parameter übergeben), müssen Sie den Schalter auf Ja festlegen und sicherstellen, dass die M-Abfrage ordnungsgemäß so eingerichtet ist, dass in der M-Abfrage mehrere Werte akzeptiert werden.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. Es folgt ein Beispiel für RepoNameParameter , bei dem mehrere Werte zulässig sind:Here's an example for RepoNameParameter , which allows for multiple values:

    Beispiel mit mehreren Werten

  11. Sie können diese Schritte wiederholen, wenn Sie andere Felder an andere Parameter binden möchten:You can repeat these steps if you have other fields to bind to other parameters:

    Konfigurieren weiterer Parameter

  12. Schließlich können Sie das Feld in einem Slicer oder als Filter referenzieren:Finally, you can reference this field in a slicer or as a filter:

    Verweisen auf die Felder

Wenn die zugeordnete Spalte unter „Mehrfachauswahl“ auf Nein festgelegt ist, müssen Sie entweder einen Einfachauswahlmodus im Slicer verwenden oder die Einfachauswahl in der Filterkarte festlegen.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.

Mögliches SicherheitsrisikoPotential security risk

Wenn Sie Berichtslesern ermöglichen, die Werte für die M-Abfrageparameter dynamisch festzulegen, können sie möglicherweise durch Angriffe durch Einschleusung auf zusätzliche Daten zugreifen oder Änderungen am Quellsystem auslösen. Dies hängt davon ab, wie die Parameter in der M-Abfrage referenziert und welche Werte an die Parameter übergeben werden.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.

Angenommen, Sie haben eine parametrisierte Kusto-Abfrage wie die folgende erstellt: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```

Möglicherweise treten keine Probleme bei einem Friendly User auf, der einen geeigneten Wert für den Parameter übergibt, z. B. Games :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'

Ein Angreifer kann jedoch unter Umständen einen Wert übergeben, der die Abfrage ändert, um Zugriff auf weitere Daten zu erhalten, z. B. 'Games' // :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 diesem Beispiel kann der Angreifer Zugriff auf Informationen zu Spielen erhalten, die noch nicht veröffentlicht wurden, indem er einen Teil der Abfrage in einen Kommentar umwandelt.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.

Verringern des RisikosHow to mitigate the risk

Zur Verringerung des Sicherheitsrisikos empfiehlt es sich, eine Zeichenfolgenverkettung von M-Parameterwerten in der Abfrage zu vermeiden.To mitigate the security risk, it's best to avoid string concatenation of M parameter values within the query. Verwenden Sie stattdessen die Parameterwerte in M-Vorgängen, die unter die Quellabfrage gefaltet werden, damit die M-Engine und der Connector die endgültige Abfrage erstellen.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. Alternativ können Sie einen in die Quellabfragesprache und die Connectors integrierten Mechanismus zur Parameterübergabe verwenden, sofern ein solcher vorhanden ist.Alternatively, if available, make use of a parameter passing mechanism built-in to the source query language and connectors. Azure Data Explorer enthält beispielsweise integrierte Abfrageparameterfunktionen für den Schutz vor Angriffen durch Einschleusung.For example, Azure Data Explorer has built-in query parameter capabilities that are designed to protect against injection attacks.

Im Folgenden finden Sie einige Beispiele:Here are some examples:

  • Beispiel für die Verwendung der Filtervorgänge der M-Abfrage:Example using M query's filtering operations:

    Table.SelectRows(Source, (r) =\> r[Columns] = Parameter)
    
  • Beispiel für das Deklarieren des Parameters in der Quellabfrage (oder das Übergeben des Parameterwerts als Eingabe für eine Quellabfragefunktion):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);
    

Überlegungen und EinschränkungenConsiderations and limitations

Bei der Verwendung von dynamischen M-Abfrageparametern sind einige Aspekte und Einschränkungen zu berücksichtigen:There are some considerations and limitations to consider when using dynamic M query parameters:

  • Ein einzelner Parameter kann nicht an mehrere Felder gebunden werden und umgekehrt.A single parameter cannot be bound to multiple fields nor vice-versa.

  • Dieses Feature wird nur für M-basierte Datenquellen unterstützt.The feature is only supported for M based data sources. Die folgenden DirectQuery-Quellen werden nicht unterstützt:The following DirectQuery sources are not supported:

    • T-SQL-basierte Datenquellen: SQL Server, Azure SQL-Datenbank, Synapse SQL-Pools (bzw. Azure SQL Data Warehouse) und Synapse SQL-OnDemand-PoolsT-SQL based data sources: SQL Server, Azure SQL Database, Synapse SQL pools (aka Azure SQL Data Warehouse), and Synapse SQL OnDemand pools
    • Datenquellen mit Liveverbindung: Azure Analysis Services, SQL Server Analysis Services, Power BI-DatasetsLive connect data sources: Azure Analysis Services, SQL Server Analysis Services, Power BI Datasets
    • Weitere nicht unterstützte Datenquellen: Oracle, Teradata und relationale SAP Hana-InstanzenOther unsupported data sources: Oracle, Teradata and Relational SAP Hana
    • Teilweise unterstützt durch XMLA-/TOM-Endpunktprogrammierbarkeit: SAP BW und SAP HanaPartially supported through XMLA / TOM endpoint programmability: SAP BW and SAP Hana
  • Folgende vordefinierte Parametertypen werden nicht unterstützt:Unsupported out-of-box parameter types are the following:

    • AnyAny
    • DurationDuration
    • Wahr/falschTrue/False
    • BinaryBinary
  • Nicht unterstützte Filter:Unsupported filters:

    • Slicer oder Filter für relative ZeitbereicheRelative time slicer or filter
    • Relatives DatumRelative date
    • HierarchieslicerHierarchy slicer
    • Einschlussfilter für mehrere FelderMulti-field include filter
    • Ausschlussfilter/NOT-FilterExclude filter / Not filters
    • Übergreifende HervorhebungCross-highlighting
    • DrilldownfilterDrill down filter
    • CrossdrillfilterCross drill filter
    • Top N-FilterTop N filter
  • Nicht unterstützte Vorgänge:Unsupported operations:

    • UndAnd
    • EnthältContains
    • Kleiner alsLess than
    • Größer alsGreater than
    • Beginnt mitStarts with
    • Beginnt nicht mitDoes not start with
    • Ist nichtIs not
    • Enthält nichtDoes not contains
    • Alles auswählenSelect all
    • Ist leerIs blank
    • Ist nicht leerIs not blank

Nächste SchritteNext steps

Mit Power BI Desktop können Sie vielfältige Aufgaben ausführen.You can do all sorts of things with Power BI Desktop. Weitere Informationen zu den Funktionen und Möglichkeiten finden Sie in den folgenden Ressourcen:For more information on its capabilities, check out the following resources: