Olvasás szemantikai modellekből, és a Power BI által a Python használatával fogyasztható adatok írása
Ebben a cikkben 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 oldalán található élménykapcsolóval válthat a Synapse Adattudomány felületre.
- Lépjen a Microsoft Fabric Adattudomány felületére.
- Hozzon létre egy új jegyzetfüzetet 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
- Vegyen fel egy Lakehouse-t a jegyzetfüzetbe.
- Töltse le a Customer Profitability Sample.pbix szemantikai modellt a hálóminták adattárának adatkészletek mappájából , és mentse a szemantikai modellt helyileg.
A szemantikai modell feltöltése a munkaterületre
Ebben a cikkben a Customer Profitability Sample.pbix szemantikai modellt használjuk. Ez a szemantikai modell egy marketinganyagokat gyártó vállalatra hivatkozik, és adatokat tartalmaz a termékekről, az ügyfelekről és a különböző üzleti egységek megfelelő bevételéről.
- Nyissa meg a munkaterületet a Fabric Adattudomány.
- Válassza a Tallózás feltöltése > lehetőséget, és válassza ki a Customer Profitability Sample.pbix szemantikai modellt.
A feltöltés befejezése után a munkaterület három új összetevővel fog rendelkezni: egy Power BI-jelentéssel, egy irányítópulttal és egy ügyfél-jövedelmezőségi minta nevű szemantikai modellel. Ezt a szemantikai modellt fogja használni a cikk lépéseihez.
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, és lekérdezéseket hajthat végre 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.
Az alábbi kódban a Szemantikai modell eléréséhez használt SemPy-munkaterületet határoztuk meg. 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
Most 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, ezért legalább az XMLA írásvédett engedélyezését igényli.
- A lekért adatok mennyiségét a szemantikai modellt futtató kapacitás-termékváltozat lekérdezésenkénti maximális memóriája és a jegyzetfüzetet futtató Spark-illesztőprogram-csomópont (lásd a csomópontméreteket) korlátozza.
- 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ésként kerül számlázásra.
Értékelje ki a Teljes bevétel mértéket az ügyfél állapota és dátuma szerint.
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.
- Ezenkívül az adatokra nem vonatkoznak a Power BI háttérrendszerre vonatkozó korlátozások.
- A lekért adatok mennyiségét a szemantikai modellt futtató kapacitás-termékváltozat lekérdezésenkénti maximális memóriája és a jegyzetfüzetet futtató Spark-illesztőprogram-csomópont (lásd a csomópontméreteket) korlátozza.
- Minden kérést interaktív kérésként számlázunk ki.
Szűrőket adhat hozzá a mértékszámításhoz egy adott oszlopban található értékek listájának megadásával.
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 lekért adatok mennyiségét a Microsoft Azure Analysis Servicesben és a Spark-illesztőcsomópontban rendelkezésre álló memória korlátozza (lásd a csomópontméreteket).
- 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 van számlázva.
Ugyanezt a DAX-lekérdezést anélkül értékelheti ki, hogy importálnia kellene a kódtárat a
%%dax
cellavarázslással. Futtassuk az alábbi cellát a cellavarázslás betöltéséhez%%dax
.%load_ext sempy
A munkaterület paramétere nem kötelező, és ugyanazokat a szabályokat követi, mint a
evaluate_dax
függvény munkaterületi paramétere. A cellavarázs a Python-változók szintaxissal{variable_name}
való elérését is támogatja. Ha egy kapcsos zárójelet szeretne használni a DAX-lekérdezésben, egy másik kapcsos kapcsos zárójeltel (pl.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, amely az utolsó végrehajtott cella kimenetét rögzíti.df_dax = _ df_dax.head()
Másik lehetőségként mértékeket is hozzáadhat a külső forrásokból lekért adatokhoz. 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, és szűri a mértéket. Az adott szemantikai modellben nem feloldható oszlopnevek figyelmen kívül lesznek hagyva (lásd a támogatott DAX-szintaxist).
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
: Ha az érték "Igaz", a metódusok oszlopneveket ad vissza az űrlaponTableName[ColumnName]
.num_rows
: Az eredményben kimenetelendő sorok száma.pandas_convert_dtypes
: Ha az érték "Igaz", az eredményként kapott DataFrame-oszlopok a lehető legjobb dtype-ra kerülnek a pandas convert_dtypes használatával. Ha ez a paraméter ki van kapcsolva, a típuskompatibilitási problémák olyan kapcsolódó táblák oszlopai között következhetnek be, amelyeket a DAX implicit típuskonvertálás miatt nem észleltek a Power BI-modellben.
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 használatával az ForecastTable tábla hozzáadható egy összetett szemantikai modellhez a Lakehouse szemantikai modell használatával.
Kapcsolódó tartalom
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: