Zdieľať cez


Čítanie zo sémantických modelov a zapisovanie údajov, ktoré je možné použiť v Službe Power BI pomocou jazyka python

V tomto článku sa dozviete, ako čítať údaje a metaúdaje a hodnotiť mierky v sémantických modeloch pomocou knižnice jazyka Python SemPy v službe Microsoft Fabric. Naučíte sa tiež zapisovať údaje, ktoré môžu využívať sémantické modely.

Požiadavky

  • Získajte predplatné na Microsoft Fabric. Alebo si zaregistrujte bezplatnú skúšobnú verziu služby Microsoft Fabric.

  • Prihláste sa do služby Microsoft Fabric.

  • Pomocou prepínača skúseností v ľavej dolnej časti domovskej stránky sa prepnete na službu Fabric.

    Snímka obrazovky ponuky prepínača prostredí zobrazujúca, kde vybrať možnosť Dátová veda.

  • Navštívte prostredie dátovej vedy v službe Microsoft Fabric.
  • Vytvorenie nového poznámkového bloku na kopírovanie a prilepenie kódu do buniek
  • V prípade služby Spark 3.4 alebo uvedenej vyššie je sémantické prepojenie k dispozícii v predvolenom režime runtime pri použití služby Fabric a nie je potrebné ho nainštalovať. Ak používate Spark 3.3 alebo nižšie, alebo ak chcete aktualizovať na najnovšiu verziu sémantického prepojenia, môžete spustiť príkaz: python %pip install -U semantic-link  
  • Pridanie služby Lakehouse do poznámkového bloku
  • Stiahnite si sémantický model ziskovosti zákazníkov Sample.pbix z priečinka množín údajov odkladacieho priestoru vzoriek tkaniny a lokálne uložte sémantický model.

Nahrajte sémantický model do svojho pracovného priestoru

V tomto článku sa používa sémantický model Ukážka ziskovosti zákazníkov.pbix . Tento sémantický model odkazuje na marketingové materiály spoločnosti vo výrobe. Obsahuje produkty, údaje o zákazníkoch a zodpovedajúce údaje o výnosoch pre rôzne organizačné jednotky.

  1. Otvorte pracovný priestor v službe Fabric Data Science
  2. Vyberte položku Nahrať > prehľadávať a vyberte sémantický model Customer Profitability Sample.pbix.

Snímka obrazovky znázorňujúca rozhranie na nahrávanie sémantického modelu do pracovného priestoru.

Po dokončení nahrávania má váš pracovný priestor tri nové artefakty: zostavu Power BI, tabuľu a sémantický model s názvom Ukážka ziskovosti zákazníkov. Kroky v tomto článku závisia od tohto sémantického modelu.

Snímka obrazovky zobrazujúca položky zo súboru Power BI nahratého do pracovného priestoru.

Používanie jazyka Python na čítanie údajov zo sémantických modelov

Rozhranie API jazyka Python SemPy môže načítať údaje a metaúdaje zo sémantických modelov umiestnených v pracovnom priestore služby Microsoft Fabric. Rozhranie API môže na nich tiež vykonávať dotazy.

Poznámkový blok, sémantický model množiny údajov služby Power BI a súbor lakehouse sa môžu nachádzať v tom istom pracovnom priestore alebo v rôznych pracovných priestoroch. Funkcia SemPy sa predvolene pokúša získať prístup k sémantickému modelu z:

  • Pracovný priestor vášho jazera, ak ste pripojili lakehouse k notebooku.
  • Pracovný priestor poznámkového bloku, ak nie je pripojený žiadny domov lakehouse.

Ak sa váš sémantický model nenachádza v niektorom z týchto pracovných priestorov, musíte zadať pracovný priestor sémantického modelu, keď zavoláte metódu SemPy.

Na čítanie údajov zo sémantických modelov:

  1. Zobrazenie zoznamu dostupných sémantických modelov vo vašom pracovnom priestore.

    import sempy.fabric as fabric
    
    df_datasets = fabric.list_datasets()
    df_datasets
    
  2. Zadajte zoznam tabuliek, ktoré sú k dispozícii v sémantickom modeli Ukážka ziskovosti zákazníkov.

    df_tables = fabric.list_tables("Customer Profitability Sample", include_columns=True)
    df_tables
    
  3. Zadajte zoznam mierok definovaných v sémantickom modele Ukážka ziskovosti zákazníkov.

    Prepitné

    V nasledujúcej ukážke kódu sme zadali pracovný priestor pre SemPy, ktorý sa má použiť na prístup k sémantickému modelu. Môžete ho nahradiť Your Workspace názvom pracovného priestoru, do ktorého ste nahrali sémantický model (zo sekcie Nahrať sémantický model do pracovného priestoru ).

    df_measures = fabric.list_measures("Customer Profitability Sample", workspace="Your Workspace")
    df_measures
    

    V tomto príklade sme zistili , že tabuľka Customer je tabuľkou, ktorá vás zaujíma.

  4. Prečítajte si tabuľku Zákazník zo sémantického modelu Ukážka ziskovosti zákazníkov.

    df_table = fabric.read_table("Customer Profitability Sample", "Customer")
    df_table
    

    Poznámka

    • Údaje sa načítajú pomocou XMLA. Toto si vyžaduje povolenie minimálne XMLA iba na čítanie.
    • Množstvo načítateľných údajov je obmedzené maximálnou pamäťou na dotaz kapacity SKU, ktorá hosťuje sémantický model – uzol vodiča služby Spark (ďalšie informácie nájdete v veľkostiach uzla), ktorý spúšťa poznámkový blok.
    • Všetky žiadosti majú nízku prioritu na minimalizovanie vplyvu na výkon služby Microsoft Azure Analysis Services a sú účtované ako interaktívne požiadavky.
  5. Vyhodnotí mierku Celkové výnosy pre stav a dátum každého zákazníka.

    df_measure = fabric.evaluate_measure(
        "Customer Profitability Sample",
        "Total Revenue",
        ["'Customer'[State]", "Calendar[Date]"])
    df_measure
    

    Poznámka

    • V predvolenom nastavení sa údaje nenačítavajú pomocou XMLA, preto nevyžadujú povolenie XMLA iba na čítanie.
    • Na údaje sa nevzťahujúkoncové obmedzenia služby Power BI.
    • Množstvo načítateľných údajov je obmedzené – maximálnou pamäťou na dotaz kapacity SKU hosťujúceho sémantický model – uzlom ovládača Spark (navštívte veľkosti uzla, kde nájdete ďalšie informácie), ktorý spúšťa poznámkový blok.
    • Všetky žiadosti sa fakturujú ako interaktívne žiadosti
  6. Ak chcete pridať filtre do výpočtu mierky, zadajte zoznam povolených hodnôt pre konkrétny stĺpec.

    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. Pomocou dotazu DAX môžete tiež vyhodnotiť mierku Celkové výnosy na stav a dátum zákazníka.

    df_dax = fabric.evaluate_dax(
        "Customer Profitability Sample",
        """
        EVALUATE SUMMARIZECOLUMNS(
            'State'[Region],
            'Calendar'[Date].[Year],
            'Calendar'[Date].[Month],
            "Total Revenue",
            CALCULATE([Total Revenue]))
        """)
    

    Poznámka

    • Údaje sa načítajú pomocou XMLA, a preto sa vyžaduje, aby sa povolilo aspoň XMLA iba na čítanie.
    • Množstvo načítateľných údajov je obmedzené dostupnou pamäťou v službe Microsoft Azure Analysis Services a uzlom ovládača služby Spark (ďalšie informácie nájdete vo veľkostiach uzla).
    • Všetky žiadosti majú nízku prioritu na minimalizovanie vplyvu na výkon služby Analysis Services a sú účtované ako interaktívne žiadosti
  8. Použite mágiu %%dax buniek na vyhodnotenie rovnakého dotazu DAX bez nutnosti importovania knižnice. Spustiť túto bunku na načítanie %%dax bunky mágie:

    %load_ext sempy
    

    Parameter pracovného priestoru je voliteľný. Dodržiava rovnaké pravidlá ako parameter evaluate_dax pracovného priestoru funkcie.

    Mágia buniek tiež podporuje prístup k premenným jazyka Python so syntaxou {variable_name} . Ak chcete v dotaze DAX použiť zložený zátvorku, ukončite ju s inou zloženou zátvorkou (príklad: EVALUATE {{1}}).

    %%dax "Customer Profitability Sample" -w "Your Workspace"
    EVALUATE SUMMARIZECOLUMNS(
        'State'[Region],
        'Calendar'[Date].[Year],
        'Calendar'[Date].[Month],
        "Total Revenue",
        CALCULATE([Total Revenue]))
    

    Výsledný prvok FabricDataFrame je k dispozícii prostredníctvom premennej _ . Táto premenná zaznamenáva výstup poslednej spustenej bunky.

    df_dax = _
    
    df_dax.head()
    
  9. Mierky môžete pridávať k údajom načítaným z externých zdrojov. Tento prístup kombinuje tri úlohy:

    • Vyrieši názvy stĺpcov do dimenzií služby Power BI
    • Definuje skupinu podľa stĺpcov.
    • Filtruje mieru Všetky názvy stĺpcov, ktoré sa nedajú vyriešiť v rámci daného sémantického modelu, sa ignorujú (ďalšie informácie nájdete v podporovanom zdroji syntaxe jazyka DAX).
    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
    

Špeciálne parametre

SemPy read_table a evaluate_measure metódy majú viac parametrov, ktoré sú užitočné na manipuláciu s výstupom. Tieto parametre zahŕňajú:

  • fully_qualified_columns: V prípade hodnoty True metódy vrátia názvy stĺpcov vo formulári TableName[ColumnName]
  • num_rows: Počet riadkov, ktoré sa majú výstupom vo výsledku
  • pandas_convert_dtypes: V prípade hodnoty True pandas pretypuje výsledné stĺpce údajového rámca do najlepšieho možného typu convert_dtypes. Ak je tento parameter vypnutý, zadajte nekompatibilitu medzi stĺpcami súvisiacich tabuliek, ktoré môžu viesť k problémom. Model Power BI nemusí tieto problémy odhaliť z dôvodu implicitnej konverzie typu jazyka DAX

SemPy read_table tiež používa informácie o modeli, ktoré poskytuje služba Power BI.

  • multiindex_hierarchies: Ak hodnota "True", konvertuje hierarchie služby Power BI na štruktúru pandas MultiIndex

Zapisovanie údajov použiteľných sémantickými modelmi

Tabuľky Spark pridané do služby Lakehouse sa automaticky pridajú do príslušného predvoleného sémantického modelu. Tento príklad ukazuje, ako písať údaje do pripojeného lakehouse. FabricDataFrame prijíma rovnaké vstupné údaje ako údajové rámce pandas.

from sempy.fabric import FabricDataFrame

df_forecast = FabricDataFrame({'ForecastedRevenue': [1, 2, 3]})

df_forecast.to_lakehouse_table("ForecastTable")

So službou Power BI je možné tabuľku ForecastTable pridať do zloženého sémantického modelu so sémantickým modelom Lakehouse.