Olvasás szemantikai modellekből, és a Power BI által a Python használatával fogyasztható adatok írása
Ebből a cikkből megtudhatja, hogyan olvashatja el az adatokat és metaadatokat, és hogyan értékelheti ki a mértékeket szemantikai modellekben a SemPy Python-kódtár használatával a Microsoft Fabricben. Azt is megtudhatja, hogyan írhat olyan adatokat, amelyeket a szemantikai modellek felhasználhatnak.
Előfeltételek
Microsoft Fabric-előfizetés lekérése. Vagy regisztráljon egy ingyenes Microsoft Fabric-próbaverzióra.
A kezdőlap bal alsó részén található élménykapcsolóval válthat Fabricre.
- Látogasson el a Microsoft Fabric Adattudomány felületére.
- Új jegyzetfüzet létrehozása a kód cellákba másolásához/beillesztéséhez
- A Spark 3.4-hez és újabb verziókhoz a Szemantikus hivatkozás az alapértelmezett futtatókörnyezetben érhető el a Fabric használatakor, és nincs szükség a telepítésre. Ha a Spark 3.3-at vagy az alábbi verziót használja, vagy a Szemantic Link legújabb verziójára szeretne frissíteni, futtassa a parancsot:
python %pip install -U semantic-link
- Lakehouse hozzáadása a jegyzetfüzethez
- Töltse le a Customer Profitability Sample.pbix szemantikai modellt a hálóminták adattár adathalmazmappájából , és mentse a szemantikai modellt helyileg
A szemantikai modell feltöltése a munkaterületre
Ez a cikk a Customer Profitability Sample.pbix szemantikai modellt használja. Ez a szemantikai modell egy marketinganyagokat gyártó vállalatra hivatkozik. A különböző üzleti egységek termék-, ügyfél- és kapcsolódó bevételi adatait tartalmazza.
- A munkaterület megnyitása a Fabric Adattudomány
- Válassza a > lehetőséget, és válassza ki az Ügyfél-jövedelmezőségi minta.pbix szemantikai modellt.
Amikor a feltöltés befejeződött, a munkaterület három új összetevővel rendelkezik: egy Power BI-jelentéssel, egy irányítópulttal és egy ügyfél-jövedelmezőségi minta nevű szemantikai modellel. A cikkben szereplő lépések erre a szemantikai modellre támaszkodnak.
Adatok beolvasása szemantikai modellekből a Python használatával
A SemPy Python API adatokat és metaadatokat tud lekérni a Microsoft Fabric-munkaterületen található szemantikai modellekből. Az API lekérdezéseket is végrehajthat rajtuk.
A jegyzetfüzet, a Power BI adathalmaz szemantikai modellje és a Lakehouse ugyanabban a munkaterületen vagy különböző munkaterületeken is elhelyezhető. A SemPy alapértelmezés szerint a következő forrásból próbálja elérni a szemantikai modellt:
- A tóház munkaterülete, ha egy tóházat csatolt a jegyzetfüzethez.
- A jegyzetfüzet munkaterülete, ha nincs csatlakoztatva a lakehouse.
Ha a szemantikai modell egyik munkaterületen sem található, a Szemantikai modell munkaterületét meg kell adnia, amikor Egy SemPy metódust hív meg.
Adatok beolvasása szemantikai modellekből:
Listázhatja a munkaterületen elérhető szemantikai modelleket.
import sempy.fabric as fabric df_datasets = fabric.list_datasets() df_datasets
Sorolja fel az Ügyfél-jövedelmezőségi minta szemantikai modelljében elérhető táblákat.
df_tables = fabric.list_tables("Customer Profitability Sample", include_columns=True) df_tables
Az ügyfél-jövedelmezőségi minta szemantikai modelljében meghatározott mértékek felsorolása.
Tipp.
A következő kódmintában meghatároztuk a Szemantikai modell eléréséhez használni kívánt SemPy munkaterületét. Lecserélheti
Your Workspace
annak a munkaterületnek a nevét, ahová feltöltötte a szemantikai modellt (a szemantikai modell feltöltése a munkaterület szakaszába).df_measures = fabric.list_measures("Customer Profitability Sample", workspace="Your Workspace") df_measures
Itt megállapítottuk, hogy az Ügyfél tábla a fontos tábla.
Olvassa el az Ügyfél táblát az Ügyfél-jövedelmezőségi minta szemantikai modelljéből.
df_table = fabric.read_table("Customer Profitability Sample", "Customer") df_table
Feljegyzés
- Az adatok lekérése XMLA használatával történik. Ehhez engedélyezni kell legalább az XMLA írásvédett fájlokat.
- A beolvasható adatok mennyisége korlátozott – a szemantikai modellt futtató kapacitás-termékváltozat lekérdezésenkénti maximális memóriája – a Jegyzetfüzetet futtató Spark-illesztőcsomópont (további információkért látogasson el a csomópontméretekre )
- Minden kérés alacsony prioritást használ a Microsoft Azure Analysis Services teljesítményére gyakorolt hatás minimalizálása érdekében, és interaktív kérésekként vannak számlázva.
Értékelje ki az egyes ügyfelek állapotára és dátumára vonatkozó Teljes bevétel mértéket.
df_measure = fabric.evaluate_measure( "Customer Profitability Sample", "Total Revenue", ["'Customer'[State]", "Calendar[Date]"]) df_measure
Feljegyzés
- Alapértelmezés szerint az adatok beolvasása nem XMLA használatával történik, ezért nem követeli meg a csak olvasható XMLA engedélyezését.
- Az adatokra nem vonatkoznak a Power BI háttérrendszerre vonatkozó korlátozások.
- A beolvasható adatok mennyiségét korlátozza – a szemantikai modellt üzemeltető kapacitás-termékváltozat lekérdezésenkénti maximális memóriája – a Jegyzetfüzetet futtató Spark-illesztőprogram csomópontja (további információkért látogasson el a csomópontméretekre )
- Az összes kérelem számlázása interaktív kérésként van kiszámlázva
Ha szűrőket szeretne hozzáadni a mértékszámításhoz, adja meg egy adott oszlop megengedett értékeinek listáját.
filters = { "State[Region]": ["East", "Central"], "State[State]": ["FLORIDA", "NEW YORK"] } df_measure = fabric.evaluate_measure( "Customer Profitability Sample", "Total Revenue", ["Customer[State]", "Calendar[Date]"], filters=filters) df_measure
DAX-lekérdezéssel az ügyfél állapotára és dátumára vonatkozó Összes bevétel mértéket is kiértékelheti.
df_dax = fabric.evaluate_dax( "Customer Profitability Sample", """ EVALUATE SUMMARIZECOLUMNS( 'State'[Region], 'Calendar'[Date].[Year], 'Calendar'[Date].[Month], "Total Revenue", CALCULATE([Total Revenue])) """)
Feljegyzés
- Az adatok lekérése XMLA használatával történik, ezért legalább az XMLA írásvédett engedélyezését igényli
- A beolvasható adatok mennyiségét a Microsoft Azure Analysis Servicesben és a Spark-illesztőcsomópontban rendelkezésre álló memória korlátozza (további információkért látogasson el a csomópontméretekre )
- Minden kérés alacsony prioritást használ az Analysis Services teljesítményére gyakorolt hatás minimalizálása érdekében, és interaktív kérésként kerül számlázásra
%%dax
A cellavarázslóval kiértékelheti ugyanazt a DAX-lekérdezést anélkül, hogy importálnia kellene a kódtárat. Futtassa ezt a cellát a cellavarázslás betöltéséhez%%dax
:%load_ext sempy
A munkaterület paramétere nem kötelező. Ugyanazokat a szabályokat követi, mint a függvény munkaterületi paramétere
evaluate_dax
.A cellavarázs szintén támogatja a Python-változók szintaxissal való
{variable_name}
elérését. Ha egy kapcsos zárójelet szeretne használni a DAX-lekérdezésben, egy másik kapcsos kapcsos zárójelet használjon (például:EVALUATE {{1}}
).%%dax "Customer Profitability Sample" -w "Your Workspace" EVALUATE SUMMARIZECOLUMNS( 'State'[Region], 'Calendar'[Date].[Year], 'Calendar'[Date].[Month], "Total Revenue", CALCULATE([Total Revenue]))
Az eredményként kapott FabricDataFrame a
_
változón keresztül érhető el. Ez a változó rögzíti az utolsó végrehajtott cella kimenetét.df_dax = _ df_dax.head()
A külső forrásokból lekért adatokhoz mértékeket adhat hozzá. Ez a megközelítés három feladatot egyesít:
- Az oszlopneveket Power BI-dimenziókra oldja fel
- Oszloponként definiálja a csoportokat
- Szűri a mértéket Az adott szemantikai modellben nem feloldható oszlopnevek figyelmen kívül lesznek hagyva (további információért látogasson el a támogatott DAX szintaxiserőforrásra ).
from sempy.fabric import FabricDataFrame df = FabricDataFrame({ "Sales Agent": ["Agent 1", "Agent 1", "Agent 2"], "Customer[Country/Region]": ["US", "GB", "US"], "Industry[Industry]": ["Services", "CPG", "Manufacturing"], } ) joined_df = df.add_measure("Total Revenue", dataset="Customer Profitability Sample") joined_df
Speciális paraméterek
A SemPy read_table
és evaluate_measure
a metódusok további paraméterekkel rendelkeznek, amelyek hasznosak a kimenet manipulálására. Ezek a paraméterek a következők:
-
fully_qualified_columns
: Igaz érték esetén a metódusok oszlopneveket adnak vissza az űrlaponTableName[ColumnName]
-
num_rows
: Az eredményben kimenetelendő sorok száma -
pandas_convert_dtypes
: Igaz érték esetén a pandas az eredményként kapott DataFrame-oszlopokat a lehető legjobb dtype convert_dtypes. Ha ez a paraméter ki van kapcsolva, a kapcsolódó táblák oszlopai közötti kompatibilitási problémákat okozhatnak; előfordulhat, hogy a Power BI-modell nem észleli ezeket a problémákat a DAX implicit típusátalakítása miatt
A SemPy read_table
a Power BI által biztosított modellinformációkat is használja.
Szemantikai modellek által fogyasztható adatok írása
A Lakehouse-hoz hozzáadott Spark-táblák automatikusan hozzáadódnak a megfelelő alapértelmezett szemantikai modellhez. Ez a példa bemutatja, hogyan írhat adatokat a csatolt Lakehouse-ba. A FabricDataFrame ugyanazokat a bemeneti adatokat fogadja el, mint a Pandas-adatkeretek.
from sempy.fabric import FabricDataFrame
df_forecast = FabricDataFrame({'ForecastedRevenue': [1, 2, 3]})
df_forecast.to_lakehouse_table("ForecastTable")
A Power BI-ban az ForecastTable tábla hozzáadható egy összetett szemantikai modellhez a Lakehouse szemantikai modellel.