Útmutató lekérdezésdelegáláshoz a Power BI DesktopbanQuery folding guidance in Power BI Desktop

Ez a cikk azoknak az adatmodellezőknek szól, akik modelleket fejlesztenek a Power BI Desktopban.This article targets data modelers developing models in Power BI Desktop. Útmutatást nyújt arról, hogy mikor és hogyan valósítható meg a Power Query lekérdezések átadása.It provides best practice guidance on when—and how—you can achieve Power Query query folding.

A lekérdezésátadás a Power Query-lekérdezéseknek az a képessége, hogy egyetlen lekérdezési utasítást generál a forrásadatok lekéréséhez és átalakításához.Query folding is the ability for a Power Query query to generate a single query statement that retrieves and transforms source data. További információ: Power Query lekérdezésdelegálás.For more information, see Power Query query folding.

ÚtmutatóGuidance

A lekérdezésdelegáláshoz nyújtott útmutatás a modell módjától függően különböző.Query folding guidance differs based on the model mode.

A Power Query-lekérdezésnek DirectQuery vagy Kettős tárolási módú táblák esetén meg kell valósítania a lekérdezésátadást.For a DirectQuery or Dual storage mode table, the Power Query query must achieve query folding.

Importálás módú tábla esetén lehetséges lehet a lekérdezésátadás.For an Import table, it may be possible to achieve query folding. Relációs forráson alapuló lekérdezés esetén, vagy ha egyetlen SELECT utasítás írható, a legjobb adatfrissítési teljesítmény a lekérdezésátadás megvalósulásának biztosításával érhető el.When the query is based on a relational source—and if a single SELECT statement can be constructed—you achieve best data refresh performance by ensuring that query folding occurs. Ha az Power Query adategyesítő motorja továbbra is szükséges az átalakítások feldolgozásához, akkor az általa elvégzendő munka minimálisra csökkentése a cél, főleg nagy adathalmazok esetében.If the Power Query mashup engine is still required to process transformations, you should strive to minimize the work it needs to do, especially for large datasets.

Az alábbi felsorolás részletes útmutatást ad.The following bulleted-list provides specific guidance.

  • Az adatforráshoz lehető legtöbb feldolgozást delegálhat: ha egy Power Query lekérdezés összes lépése nem hajtható végre, Fedezze fel azt a lépést, amely megakadályozza a lekérdezés bedobását.Delegate as much processing to the data source as possible: When all steps of a Power Query query can't be folded, discover the step that prevents query folding. Ha lehetséges, helyezze át az ezt követő lépéseket a sor korábbi szakaszába, hogy be lehessen foglalni a lekérdezésátadásba.When possible, move later steps earlier in sequence so they may be factored into the query folding. Érdemes tudni, hogy a Power Query adategyesítési motorja elég intelligens lehet a lekérdezési lépések átrendezéséhez a forráslekérdezés létrehozásakor.Note the Power Query mashup engine may be smart enough to reorder your query steps when it generates the source query.

    Relációs adatforrás esetén, ha a lekérdezésátadást megakadályozó lépések megvalósíthatók egyetlen SELECT utasítással vagy egy tárolt eljárás belső logikájával, érdemes megfontolni az alábbiakban ismertetett natív SQL-lekérdezés használatát.For a relational data source, if the step that prevents query folding could be achieved in a single SELECT statement—or within the procedural logic of a stored procedure—consider using a native SQL query, as described next.

  • NATÍV SQL-lekérdezés használata: amikor egy Power Query lekérdezés egy rokon forrásból kér le egy adatforrást, lehetséges, hogy egyes források natív SQL-lekérdezést használnak.Use a native SQL query: When a Power Query query retrieves data from a relational source, it's possible for some sources to use a native SQL query. A lekérdezés bármilyen érvényes utasítás, akár egy tárolt eljárás végrehajtása is lehet.The query can in fact be any valid statement, including a stored procedure execution. Ha az utasítás több eredményhalmazt állít elő, csak az első lesz visszaadva.If the statement produces multiple result sets, only the first will be returned. Paraméterek deklarálhatók az utasításon belül, emellett ajánlott a Value.NativeQuery M-függvényt használni.Parameters can be declared in the statement, and we recommend that you use the Value.NativeQuery M function. Ez a függvény a paraméterértékek biztonságos és kényelmes átadására lett tervezve.This function was designed to safely and conveniently pass parameter values. Fontos tisztában lenni azzal, hogy a Power Query adategyesítő motorja nem tud későbbi lekérdezési lépéseket átadni, ezért érdemes az összes (vagy a lehető legtöbb) átalakítási logikát belefoglalni a natív lekérdezési utasításba.It's important to understand that the Power Query mashup engine can't fold later query steps, and so you should include all—or as much—transformation logic in the native query statement.

    Natív SQL-lekérdezések használatakor két lényeges szempontot kell szem előtt tartania:There are two important considerations you need to bear in mind when using native SQL queries:

    • DirectQuery módú modelltábla esetén a lekérdezésnek egy SELECT utasításnak kell lennie, és nem használhat közös táblakifejezéseket (CTE-ket) vagy tárolt eljárásokat.For a DirectQuery model table, the query must be a SELECT statement, and it can't use Common Table Expressions (CTEs) or a stored procedure.
    • Növekményes frissítés nem használhat natív SQL-lekérdezést.Incremental refresh can't use a native SQL query. Ilyen esetben a Power Query adategyesítő motornak kellene lekérnie a forrás összes sorát, majd szűrők alkalmazásával felismernie a növekményes módosításokat.So, it would force the Power Query mashup engine to retrieve all source rows, and then apply filters to determine incremental changes.

    Fontos

    Egy natív SQL-lekérdezéssel az adatok lekérésénél több is végrehajtható.A native SQL query can potentially do more than retrieve data. Bármely érvényes utasítást (többször is) végrehajthat, akár olyanokat is, amelyek adatokat módosítanak vagy törölnek.Any valid statement can be executed (and possibly multiple times), including one that modifies or deletes data. Fontos a legalacsonyabb jogosultság elvének alkalmazásával biztosítani, hogy az adatbázis eléréséhez használt fiók csak olvasási engedéllyel rendelkezzen a szükséges adatokhoz.It's important that you apply the principle of least privilege to ensure that the account used to access the database has only read permission on required data.

  • Az adatforrások előkészítése és átalakítása: Ha azt állapítja meg, hogy bizonyos Power Query lekérdezési lépések nem hajthatók végre, lehetséges, hogy a transzformációkat az adatforrásban is alkalmazni tudja.Prepare and transformation data in the source: When you identify that certain Power Query query steps can't be folded, it may be possible to apply the transformations in the data source. Az átalakítások megvalósíthatók lehetnek egy olyan adatbázisnézet megírásával, amely logikusan alakítja át a forrásadatokat.The transformations could be achieved by writing a database view that logically transforms source data. Egy másik megoldás lehet az adatok fizikai előkészítése és materializálása, mielőtt a Power Query lekérdezné azokat.Or, by physically preparing and materializing data, in advance of Power BI querying it. Az általában vállalati adatok előre integrált forrásaiból álló relációs adattárházak kitűnő példái az előkészített adatoknak.A relational data warehouse is an excellent example of prepared data, usually consisting of pre-integrated sources of organizational data.

Következő lépésekNext steps

Erről a cikkről a következő forrásanyagokban talál további információt:For more information about this article, check out the following resources: