Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto článku se naučíte číst data, metadata a vyhodnocovat míry v sémantických modelech pomocí knihovny SemPy Python v Microsoft Fabric. Naučíte se také psát data, která můžou sémantické modely využívat.
Požadavky
Získejte předplatné Microsoft Fabric. Nebo si zaregistrujte bezplatnou zkušební verzi Microsoft Fabricu.
Přihlaste se k Microsoft Fabric.
Pomocí přepínače zkušeností v levém dolním rohu domovské stránky přepněte na Fabric.
- Přejděte do prostředí pro datové vědy v Microsoft Fabric.
- Vytvořte nový poznámkový blok pro zkopírování a vložení kódu do buněk.
- Pro Spark 3.4 a vyšší je sémantický odkaz dostupný ve výchozím prostředí runtime při použití Fabric a není potřeba jej instalovat. Pokud používáte Spark 3.3 nebo novější nebo pokud chcete aktualizovat na nejnovější verzi sémantického odkazu, můžete tento příkaz spustit:
python %pip install -U semantic-link - Přidej lakehouse do poznámkového bloku
- Stáhněte si sémantický model Customer Profitability Sample.pbix ze složky datasets repozitáře fabric-samples a uložte ho místně.
Nahrání sémantického modelu do pracovního prostoru
Tento článek používá sémantický model Customer Profitability Sample.pbix. Sémantický model odkazuje na společnost, která vyrábí marketingové materiály. Zahrnuje data o produktech, zákaznících a výnosech pro různé obchodní jednotky.
- Otevřete pracovní prostor v Fabric Data Science.
- Vyberte Importovat > sestavu, stránkovanou sestavu nebo pracovní sešit > z tohoto počítače a vyberte sémantický model Customer Profitability Sample.pbix.
Po dokončení nahrávání obsahuje váš pracovní prostor tři nové artefakty: sestavu Power BI, řídicí panel a sémantický model s názvem Customer Profitability Sample. Kroky v tomto článku se spoléhají na tento sémantický model.
Čtení dat z sémantických modelů pomocí Pythonu
Rozhraní API Pythonu SemPy může načítat data a metadata z sémantických modelů umístěných v pracovním prostoru Microsoft Fabric. Rozhraní API může rovněž na ně spouštět dotazy.
Poznámkový blok, sémantický model datové sady Power BI a lakehouse se dají nacházet ve stejném pracovním prostoru nebo v různých pracovních prostorech. Ve výchozím nastavení se SemPy pokusí o přístup k sémantickému modelu z:
- Pracovní prostor vašeho lakehouse, pokud jste připojili lakehouse k poznámkovému bloku.
- Pracovní prostor vašeho poznámkového bloku, pokud není připojený žádný lakehouse.
Pokud se váš sémantický model nenachází v některém z těchto pracovních prostorů, musíte při volání metody SemPy zadat pracovní prostor sémantického modelu.
Pokud chcete číst data z sémantických modelů, postupujte takto:
Vypište dostupné sémantické modely v pracovním prostoru.
import sempy.fabric as fabric df_datasets = fabric.list_datasets() df_datasetsZobrazí seznam tabulek dostupných v sémantickém modelu Customer Profitability Sample .
df_tables = fabric.list_tables("Customer Profitability Sample", include_columns=True) df_tablesUveďte opatření definovaná v sémantickém modelu Ukázka ziskovosti zákazníků.
Návod
V následující ukázce kódu jsme zadali pracovní prostor pro SemPy, který se má použít pro přístup k sémantickému modelu. Můžete nahradit
<Your Workspace>názvem pracovního prostoru, do kterého jste nahráli sémantický model (z sekce Nahrát sémantický model do pracovního prostoru).df_measures = fabric.list_measures("Customer Profitability Sample", workspace="<Your Workspace>") df_measuresV této části jsme zjistili, že tabulka 'Customer' (Zákazník) je tabulka, která nás zajímá.
Přečtěte si tabulku Customer z sémantického modelu Customer Profitability Sample.
df_table = fabric.read_table("Customer Profitability Sample", "Customer") df_tablePoznámka:
- Data se načítají pomocí XMLA, která vyžaduje, aby byla povolena alespoň funkce XMLA jen pro čtení .
- Množství dostupných dat je omezeno: – maximální pamětí na dotaz kapacity SKU, která hostuje sémantický model. – Uzel ovladače Sparku, který provozuje notebook, další informace najdete v velikostech uzlů.
- Všechny požadavky používají nízkou prioritu k minimalizaci dopadu na výkon služby Microsoft Azure Analysis Services a účtují se jako interaktivní požadavky.
Vyhodnoťte míru Total Revenue (Celkové výnosy ) pro stav a datum každého zákazníka.
df_measure = fabric.evaluate_measure( "Customer Profitability Sample", "Total Revenue", ["'Customer'[State]", "Calendar[Date]"]) df_measurePoznámka:
- Ve výchozím nastavení se data nenačítají pomocí XMLA, takže XMLA nemusí být povolená jen pro čtení.
- Na data se nevztahují omezení back-endu Power BI.
- Množství dostupných dat je omezené: – maximální paměť na dotaz SKU kapacity, kde je hostován sémantický model. – Uzel ovladače Sparku (další informace najdete v velikostech uzlů ), na kterém je poznámkový blok spuštěný.
- Všechny žádosti se účtují jako interaktivní žádosti.
- Funkce
evaluate_daxneaktualizuje sémantický model automaticky. Další podrobnosti najdete na této stránce .
Pokud chcete do výpočtu míry přidat filtry, zadejte seznam povolených hodnot pro určitý sloupec.
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_measurePomocí dotazu DAX vyhodnoťte míru Celkové výnosy podle stavu a data 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:
- Data se načítají pomocí XMLA, a proto vyžadují, aby byla povolena alespoň funkce XMLA jen pro čtení.
- Množství načístelných dat je omezené dostupnou pamětí ve službě Microsoft Azure Analysis Services a uzlem ovladače Spark (další informace najdete v velikostech uzlů).
- Všechny požadavky používají nízkou prioritu k minimalizaci dopadu na výkon služby Analysis Services a účtují se jako interaktivní požadavky.
Pomocí magické buňky
%%daxvyhodnoťte stejný dotaz DAX, aniž byste museli knihovnu importovat. Spusťte tuto buňku pro načtení%%daxmagie buněk:%load_ext sempyParametr pracovního prostoru je volitelný. Řídí se stejnými pravidly jako parametr funkce
evaluate_daxpracovního prostoru.Magie buňky také podporuje přístup k proměnným Pythonu
{variable_name}pomocí syntaxe. Pokud chcete v dotazu DAX použít složenou závorku, zdvojte ji další složenou závorkou (pří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ý objekt FabricDataFrame je k dispozici prostřednictvím
_proměnné. Tato proměnná zachycuje výstup poslední spuštěné buňky.df_dax = _ df_dax.head()Míry můžete přidat k datům načteným z externích zdrojů. Tento přístup kombinuje tři úkoly:
- Překládá názvy sloupců na dimenze Power BI.
- Definuje seskupení podle sloupců.
- Filtruje měřítko. Jakékoli názvy sloupců, které nelze vyřešit v rámci daného sémantického modelu, jsou ignorovány (podrobnosti naleznete v podporovaném zdroji syntaxe 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
Speciální parametry
SemPy read_table a evaluate_measure metody mají více parametrů, které jsou užitečné pro manipulaci s výstupem. Mezi tyto parametry patří:
-
pandas_convert_dtypes: Pokud je nastavená hodnotaTrue, pandas přetypuje výsledné sloupce datového rámce na nejlepší možný typ dtype. Další informace najdete v convert_dtypes. Pokud je tento parametr vypnutý, můžou nastat problémy s nekompatibilitou mezi sloupci souvisejících tabulek. Model Power BI nemusí rozpoznat tyto problémy kvůli implicitnímu převodu typu DAX.
SemPy read_table také používá informace o modelu, které Power BI poskytuje.
-
multiindex_hierarchies: Pokud je nastavená hodnotaTrue, převede hierarchie Power BI na strukturu pandas MultiIndex.
Zápis dat použitelných pomocí sémantických modelů
Tabulky Sparku přidané do Lakehouse se automaticky přidají do odpovídajícího výchozího sémantického modelu. Tento článek ukazuje, jak zapisovat data do připojeného Lakehouse.
FabricDataFrame přijímá stejná vstupní data jako Pandas dataframy.
from sempy.fabric import FabricDataFrame
df_forecast = FabricDataFrame({'ForecastedRevenue': [1, 2, 3]})
df_forecast.to_lakehouse_table("ForecastTable")
V Power BI je možné tabulku ForecastTable přidat do sémantického modelu, který zahrnuje sémantický model Lakehouse.