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


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.

  • Jelentkezzen be a Microsoft Fabricbe.

  • A kezdőlap bal alsó részén található élménykapcsolóval válthat Fabricre.

    Képernyőkép a felületváltó menüjéről, amelyen látható, hogy hol válassza ki a Adattudomány.

  • 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.

  1. A munkaterület megnyitása a Fabric Adattudomány
  2. Válassza a > lehetőséget, és válassza ki az Ügyfél-jövedelmezőségi minta.pbix szemantikai modellt.

Képernyőkép a szemantikai modell munkaterületre való feltöltésére szolgáló felületről.

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.

Képernyőkép a munkaterületre feltöltött Power BI-fájl elemeiről.

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:

  1. Listázhatja a munkaterületen elérhető szemantikai modelleket.

    import sempy.fabric as fabric
    
    df_datasets = fabric.list_datasets()
    df_datasets
    
  2. 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
    
  3. 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.

  4. 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.
  5. É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

  6. 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
    
  7. 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
  8. %%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()
    
  9. 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 űrlapon TableName[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.

  • multiindex_hierarchies: Ha "Igaz", a Power BI-hierarchiákat pandas MultiIndex-struktúrává alakítja

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.