Megosztás a következőn keresztül:


A Power Query optimalizálása táblázatoszlopok kibontásakor

Az egyszerűség és a könnyű használat lehetővé teszi, hogy a Power BI-felhasználók gyorsan gyűjtsenek adatokat, és érdekes és hatékony jelentéseket hozzanak létre az intelligens üzleti döntések meghozatalához, valamint lehetővé teszi a felhasználók számára a rosszul teljesítő lekérdezések létrehozását is. Ez gyakran akkor fordul elő, ha két tábla kapcsolódik ahhoz, ahogyan egy idegen kulcs sql-táblákhoz vagy SharePoint-listákhoz kapcsolódik. (A rekord esetében ez a probléma nem az SQL-hez vagy a SharePointhoz kapcsolódik, és számos háttérbeli adatkinyerési forgatókönyvben fordul elő, különösen akkor, ha a séma folyékony és testreszabható.) Az adatok közös kulccsal rendelkező különálló táblákban való tárolásával sincs semmi baj – valójában ez az adatbázis-tervezés és -normalizálás alapvető alapelve. De ez azt jelenti, hogy jobb módja annak, hogy bővítse a kapcsolatot.

Tekintse meg az alábbi példát egy SharePoint-ügyféllistára.

Elsődleges SharePoint-ügyféllista.

És az alábbi helylista, amelyre hivatkozik.

Másodlagos SharePoint-ügyféllista.

Amikor először csatlakozik a listához, a hely rekordként jelenik meg.

Elsődleges helyrekordok.

Ezeket a legfelső szintű adatokat a SharePoint API egyetlen HTTP-hívásán keresztül gyűjti össze (a metaadat-hívás figyelmen kívül hagyásával), amelyet bármely webes hibakeresőben láthat.

Egyetlen HTTP-hívás a webes hibakeresőben.

A rekord kibontásakor a másodlagos táblához csatlakoztatott mezők jelennek meg.

A másodlagos táblából csatlakoztatott mezők.

A kapcsolódó sorok egyik táblából a másikba történő kibontásakor a Power BI alapértelmezett viselkedése a hívás Table.ExpandTableColumnlétrehozása. Ezt a létrehozott képletmezőben tekintheti meg. Ez a metódus sajnos az első tábla minden sorához külön hívást generál a második táblához.

A második táblára irányuló egyéni hívások.

Ez az elsődleges lista minden sorához egyenként növeli a HTTP-hívások számát. Ez nem tűnik túl soknak a fenti öt-hat sor esetében, de azokban az éles rendszerekben, ahol a SharePoint-listák több százezer sort érnek el, ez jelentős tapasztalatcsökkenést okozhat.

Ha a lekérdezések elérik ezt a szűk keresztmetszetet, a legjobb megoldás, ha elkerüljük a hívássoronkénti viselkedést egy klasszikus táblaillesztés használatával. Ez biztosítja, hogy csak egy hívás legyen a második tábla lekéréséhez, és a további bővítés a memóriában is előfordulhat a két tábla közös kulcsával. A teljesítménybeli különbség bizonyos esetekben jelentős lehet.

Először kezdje az eredeti táblával, és a kibontani kívánt oszlopot, és gondoskodjon arról, hogy az elem azonosítójával rendelkezzen, hogy megfeleltethesse azt. Az idegen kulcs neve általában a hozzáfűzett azonosítóval rendelkező oszlop megjelenítendő nevéhez hasonló. Ebben a példában ez a LocationId.

Idegen kulcs neve.

Másodszor töltse be a másodlagos táblát, és ügyeljen rá, hogy tartalmazza az azonosítót, amely az idegen kulcs. Új lekérdezés létrehozásához kattintson a jobb gombbal a Lekérdezések panelre.

Töltse be a másodlagos táblát az azonosító idegen kulccsal.

Végül csatlakoztassa a két táblát a megfelelő oszlopnevek használatával. Ezt a mezőt általában úgy találja, hogy először kibontja az oszlopot, majd megkeresi a megfelelő oszlopokat az előnézetben.

Egyező oszlopok az előzetes verzióban.

Ebben a példában láthatja, hogy az elsődleges listában szereplő LocationId azonosító megegyezik a másodlagos listában szereplő azonosítóval . A felhasználói felület ezt átnevezi Location.Id az oszlopnév egyedivé tétele érdekében. Most ezeket az információkat használva egyesítsük a táblákat.

Ha a jobb gombbal a lekérdezési panelre kattint, és az Új lekérdezés>egyesítő>lekérdezések újként lehetőséget választja, megjelenik egy barátságos felhasználói felület, amellyel kombinálhatja ezt a két lekérdezést.

Az egyesítési lekérdezések újként való használata a lekérdezések kombinálásához.

A legördülő menüben jelölje ki az egyes táblákat a lekérdezés előnézetének megtekintéséhez.

Egyesített lekérdezések előnézete.

Miután kiválasztotta mindkét táblát, jelölje ki azt az oszlopot, amely logikailag csatlakozik a táblákhoz (ebben a példában ez az elsődleges tábla Helyazonosítója és a másodlagos tábla azonosítója ). A párbeszédpanelen megtudhatja, hogy hány sor egyezik az idegen kulccsal. Az ilyen típusú adatokhoz valószínűleg az alapértelmezett illesztési típust (bal külső) kell használnia.

A bal oldali külső illesztés típusának egyesítése.

Válassza az OK gombot , és megjelenik egy új lekérdezés, amely az illesztés eredménye. A rekord kibontása nem jelent további hívásokat a háttérrendszernek.

Bal oldali külső illesztés eredménye.

Az adatok frissítésekor csak két hívás érkezik a SharePointba – egy az elsődleges listához, egy pedig a másodlagos listához. Az illesztés a memóriában lesz végrehajtva, jelentősen csökkentve a SharePointba irányuló hívások számát.

Ez a módszer a PowerQuery bármely olyan táblájára használható, amely egyező idegen kulccsal rendelkezik.

Feljegyzés

A SharePoint felhasználói listái és osztályozása táblákként is elérhető, és pontosan a fent leírt módon csatlakoztatható, feltéve, hogy a felhasználó megfelelő jogosultságokkal rendelkezik a listák eléréséhez.