Dinamikus M-lekérdezési paraméterek a Power BI Desktopban (előzetes verzió)Dynamic M query parameters in Power BI Desktop (preview)

A Dinamikus M-lekérdezési paraméterekkel a modellek szerzői lehetővé tehetik a jelentések megtekintői számára, hogy szűrőket vagy szeletelőket használjanak az M-lekérdezési paraméter értékének megadásához. Ez különösen hasznos lehet a lekérdezések teljesítményének optimalizálásához.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. A dinamikus M-lekérdezési paraméterekkel a modellek szerzői részletesebben képesek szabályozni, hogy a szűrők hogyan legyenek beépítve a DirectQuery-forráslekérdezésekbe.With Dynamic M Query Parameters, model authors have additional control over how filter selections get incorporated into DirectQuery source queries.

Amikor a modellek szerzői ismerik a szűrőik szemantikai felépítését, gyakran tudják, hogyan írhatnak hatékony, az adatforrásuknak megfelelő lekérdezéseket, és így biztosíthatják, hogy a szűrési beállítások a megfelelő pontokon legyenek beépítve a forráslekérdezésbe, így a kívánt eredmények jobb teljesítmény mellett érhetők el.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.

Dinamikus M-lekérdezési paraméterek engedélyezéseEnabling Dynamic M query parameters

A Dinamikus M-lekérdezési paraméterek jelenleg előzetes verzióban érhetők el, és engedélyezni kell a használatukat.Dynamic M Query Parameters are currently in preview, and must be enabled to be used. A Fájl > Lehetőségek és beállítások > Lehetőségek területen válassza a bal oldali panelen az Előzetes funkciók lehetőséget.Select File > Options and settings > Options and then select Preview features from the left pane. Gondoskodjon róla, hogy a Dinamikus M-lekérdezési paraméterek jelölőnégyzet be legyen jelölve.From there, make sure the Dynamic M Query Parameters checkbox is selected. A módosítás engedélyezéséhez előfordulhat, hogy újra kell indítania a Power BI Desktopot.You may need to restart Power BI Desktop for the change to be enabled.

Az előzetes verziójú funkció engedélyezése

Ennek a funkciónak az előfeltétele, hogy létre kell hoznia egy érvényes M-lekérdezési paramétert, és hivatkoznia kell rá egy vagy több DirectQuery-táblában.As a prerequisite for this feature, you must have a valid M Query Parameter created and referred in one or more Direct Query tables.

Megjegyzés

Feltétlenül olvassa el ennek a cikknek a Megfontolandó szempontok és korlátozások című fejezetét, ezzel a funkcióval ugyanis nem minden DirectQuery-forrás támogatott.Be sure to check the Considerations and limitations section in this article, since not all DirectQuery sources are supported with this feature.

Tekintsük át egyetlen érték egy paraméterre történő dinamikus átadásának példáját:Let's step through an example for passing a single value to a parameter dynamically:

  1. A Power BI Desktopban indítsa el a Power Queryt az Adatok lapon, és válassza a menüszalagon található Paraméterek kezelése részben az Új paraméterek lehetőséget.In Power BI Desktop, launch Power Query from the Data tab, and select New Parameters under the Manage Parameters button in the ribbon.

    Menüszalag

  2. Ezután adja meg a paraméter következő adatait.Then fill out the following information about the Parameter.

    Paraméteradatok

  3. Kattintson ismét az Új lehetőségre, ha további paramétereket szeretne hozzáadni.Click New again if you have more parameters to add.

    Másik paraméter létrehozása

  4. Miután létrehozta a paramétereket, hivatkozhat rájuk az M-lekérdezésekben.Once you've created the parameters, you can reference them in the M query. Az M-lekérdezés módosításához nyissa meg a Speciális szerkesztőt úgy, hogy közben a módosítani kívánt lekérdezés ki van jelölve:To modify the M Query, open the Advanced editor while you have the Query that you want to modify selected:

    a Speciális szerkesztő megnyitása

  5. Ezután hivatkozzon azokra a paraméterekre az M-lekérdezésben, amelyek a következő képen sárga színnel vannak kijelölve.Next, reference the parameters in the M Query, highlighted in yellow in the following image.

    Hivatkozás a paraméterre

  6. Most, hogy létrehozta a paramétereket és hivatkozott rájuk az M-lekérdezésben, következő lépésként létre kell hoznia egy táblát egy olyan oszloppal, amely megadja az adott paraméter számára elérhető lehetséges értékeket.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. Ez lehetővé teszi, hogy a paraméterek dinamikusan változhassanak a kiválasztott szűrőkhöz.This will allow it such that the parameters are dynamically set based on filter selection. Ebben a példában azt szeretnénk, hogy a StartTime és az EndTime paraméter dinamikus legyen.In this example, we want our StartTime Parameter and EndTime Parameter to be dynamic. Mivel ezek a paraméterek dátum/idő típusú paramétert igényelnek, olyan dátumbemeneteket kell létrehoznunk, amelyek használatával beállítható a paraméter dátuma.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. Első lépésként hozzunk létre egy új táblát:To start, we create a new table:

    Új tábla létrehozása

  7. Itt látható az első tábla, amelyet a StartTime paraméter értékeihez hoztam létre:Here's the first table I created for the values for StartTime Parameter:

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

    a tábla létrehozása

  8. A második táblát az EndTime paraméter értékeihez hoztam létre:Here's the second table I created for the values for EndTime Parameter:

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

    a második tábla létrehozása

    Megjegyzés

    Azt javasoljuk, hogy olyan oszlopnevet használjon, amely nem található meg egy tényleges táblában.We recommend using a different column name that is not in an actual table. Ha a nevük megegyezik, a kijelölt érték a tényleges lekérdezés szűrőjeként lesz alkalmazva.If they are same name, the selected value will be applied as a filter to the actual query.

  9. Most, hogy a Date mezőt tartalmazó táblákat létrehoztuk, az egyes mezőket egy-egy paraméterhez tudjuk kötni.Now that the tables with the Date field have been created, we can bind each field to a parameter. A mező paraméterhez való kötése lényegében azt jelenti, hogy a mező kijelölt értékének megváltozásakor a rendszer átadja az értéket a paraméternek, és frissíti a lekérdezést, amelyben a paraméterhez tartozó hivatkozás található.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. A mező összekötéséhez lépjen a Modellezés lapra, válassza ki az újonnan létrehozott mezőt, majd lépjen a Speciális tulajdonságaira:So to bind field, go to the Modeling tab, select the newly created field, and then go to the Advanced properties:

    Megjegyzés

    Az oszlop adattípusának egyeznie kell az M-paraméter típusával.Column Data type should match with M parameter type.

    a mező paraméterhez kötése

  10. Válassza ki a legördülő menüből a Kötés paraméterhez lehetőséget, és válassza ki azt a paramétert, amelyet a mezőhöz szeretne kötni:Select the dropdown under Bind to parameter and select the Parameter that you want to bind to the field:

    a paraméter kötése a mezőhöz

    Mivel ez a példa egyetlen értékre vonatkozik (a paraméter egyetlen értékre van állítva), a Többszörös kijelölés beállítás értékét érdemes az alapértelmezett Nem értéken hagyni: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:

    kikapcsolt többszörös kijelölés beállítás

    Ha a használati esetek többszörös kijelölést igényelnek (több értéket kell átadnia egyetlen paraméternek), a kapcsolót Igen értékre kell váltania, és biztosítania kell, hogy az M-lekérdezés megfelelően legyen beállítva, hogy több értéket is elfogadjon az M-lekérdezésben.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. Itt látható egy RepoNameParameter paramétert használó példa, amely több értéket is lehetővé tesz:Here's an example for RepoNameParameter, which allows for multiple values:

    többértékű példa

  11. Ezeket a lépéseket megismételheti, ha más mezőket össze szeretne kötni más paraméterekkel:You can repeat these steps if you have other fields to bind to other parameters:

    további paraméterek konfigurálása

  12. Végül pedig hivatkozhat erre a mezőre egy szeletelőben vagy szűrőként:Finally, you can reference this field in a slicer or as a filter:

    hivatkozás a mezőkre

Ha a leképezett oszlop esetén a Többszörös kijelölés beállítás értéke Nem, akkor a szeletelőben egyszeres kijelölési módot kell használnia, vagy a szűrőkártyán egyszeres kijelölést kell kérnie.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.

Lehetséges biztonsági kockázatPotential security risk

Ha engedélyezi a jelentés megtekintői számára, hogy dinamikusan állítsák az M-lekérdezési paraméterek értékeit, akkor előfordulhat, hogy további adatokhoz férhetnek hozzá, vagy adatinjektálási támadásokkal módosításokat válthatnak ki a forrásrendszerben, attól függően, hogy a paraméterekre való hivatkozás hogyan történik az M-lekérdezésben, és milyen értékeket továbbítanak a paraméternek.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.

Tegyük fel például, hogy rendelkezik egy paraméteres Kusto-lekérdezéssel, amely az alábbiakhoz hasonlóan épül fel: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```

Előfordulhat, hogy a jóindulatú felhasználókkal semmi gond nem lesz, mivel ők megfelelő, például Games értéket adnak át a paraméternek: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'

Előfordulhat azonban, hogy egy támadó olyan értéket ad át, amely módosítja a lekérdezést, így az több adathoz biztosít hozzáférést, ilyen lehet például a 'Games' // érték: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

Ebben a példában a támadó a lekérdezés egy részének megjegyzéssé módosításával hozzáférhet olyan játékok adataihoz, amelyek még nincsenek közzétéve.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.

A kockázat csökkentéseHow to mitigate the risk

A biztonsági kockázat csökkentése érdekében érdemes elkerülni a lekérdezésen belüli M-paraméterek értékeinek sztringösszefűzését.To mitigate the security risk, it's best to avoid string concatenation of M parameter values within the query. Ehelyett ezeket a paramétereket olyan M-műveletekben használja fel, amelyek a forráslekérdezésre adják át az adatokat, így az M-motor és -összekötő hozza létre a végső lekérdezést.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. Másik lehetőségként, ha elérhető, használja a forráslekérdezési nyelvbe és összekötőkbe beépített paraméterátadási mechanizmust.Alternatively, if available, make use of a parameter passing mechanism built-in to the source query language and connectors. Az Azure Data Explorer például beépített lekérdezési paraméterekkel rendelkezik, amelyek beépített módon védettek az injektálásos támadások ellen.For example, Azure Data Explorer has built-in query parameter capabilities that are designed to protect against injection attacks.

Néhány példa:Here are some examples:

  • Példa az M-lekérdezés szűrési műveleteire:Example using M query's filtering operations:

    Table.SelectRows(Source, (r) =\> r[Columns] = Parameter)
    
  • Példa a paraméter forráslekérdezésben történő deklarálására (vagy a paraméter értékének bemenetként való átadására a forráslekérdezési függvénynek):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);
    

Megfontolandó szempontok és korlátozásokConsiderations and limitations

A dinamikus M-lekérdezési paraméterek használatakor érdemes figyelembe venni néhány szempontot és korlátozást:There are some considerations and limitations to consider when using dynamic M query parameters:

  • Ugyanaz a paraméter nem köthető több mezőhöz, és fordítva.A single parameter cannot be bound to multiple fields nor vice-versa.

  • A funkció csak M-alapú adatforrásokhoz támogatott.The feature is only supported for M based data sources. A következő DirectQuery-források nem támogatottak:The following DirectQuery sources are not supported:

    • T-SQL-alapú adatforrások: SQL Server, Azure SQL Database, Synapse SQL-készletek (más néven Azure SQL Data Warehouse), és Synapse SQL OnDemand-készletekT-SQL based data sources: SQL Server, Azure SQL Database, Synapse SQL pools (aka Azure SQL Data Warehouse), and Synapse SQL OnDemand pools
    • Élő kapcsolatú adatforrások: Azure Analysis Services, SQL Server Analysis Services, Power BI-adathalmazokLive connect data sources: Azure Analysis Services, SQL Server Analysis Services, Power BI Datasets
    • Egyéb nem támogatott adatforrások: Oracle, Teradata és relációs SAP HanaOther unsupported data sources: Oracle, Teradata and Relational SAP Hana
    • Részben támogatott XMLA/TOM végpontprogramozással: SAP BW és SAP HanaPartially supported through XMLA / TOM endpoint programmability: SAP BW and SAP Hana
  • A beépítetten nem támogatott paraméterek a következők:Unsupported out-of-box parameter types are the following:

    • BármelyikAny
    • IdőtartamDuration
    • Igaz/HamisTrue/False
    • BinárisBinary
  • Nem támogatott szűrők:Unsupported filters:

    • Relatívidő-szeletelő vagy -szűrőRelative time slicer or filter
    • Relatív dátumRelative date
    • HierarchiaszeletelőHierarchy slicer
    • Több mezőből álló szűrőMulti-field include filter
    • Kizárási/nem szűrőkExclude filter / Not filters
    • KeresztkijelölésCross-highlighting
    • Lehatolási szűrőDrill down filter
    • Kereszt-részletezési szűrőCross drill filter
    • Felső N-szűrőTop N filter
  • Nem támogatott műveletek:Unsupported operations:

    • AndAnd
    • ContainsContains
    • Kisebb, mintLess than
    • Nagyobb, mintGreater than
    • Ezzel kezdődikStarts with
    • Nem ezzel kezdődik:Does not start with
    • Nem egyezik ezzel:Is not
    • Nem tartalmazza a következőt:Does not contains
    • Az összes kijelöléseSelect all
    • ÜresIs blank
    • Nem üresIs not blank

Következő lépésekNext steps

A Power BI Desktop műveletek és lehetőségek széles tárházát tartalmazza.You can do all sorts of things with Power BI Desktop. A program képességeivel kapcsolatos további információkért lásd az alábbi forrásanyagokat:For more information on its capabilities, check out the following resources: