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 dozvíte, jak číst data a 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.
- Navštivte Data Science v Microsoft Fabric.
- Vytvoření nového poznámkového bloku pro zkopírování nebo 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 datasetů úložiště 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. Tento sémantický model odkazuje na marketingové materiály společnosti. Obsahuje údaje o produktech, zákaznících a odpovídajících výnosech pro různé obchodní jednotky.
- Otevřete svůj pracovní prostor ve Fabric Data Science
- Vyberte > nebo > a vyberte sémantický model Customer Profitability Sample.pbix.
Po dokončení nahrávání má 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.
Čtení dat z sémantických modelů:
Vypište dostupné sémantické modely v pracovním prostoru.
import sempy.fabric as fabric df_datasets = fabric.list_datasets() df_datasets
Zobrazí seznam tabulek dostupných v sémantickém modelu Customer Profitability Sample .
df_tables = fabric.list_tables("Customer Profitability Sample", include_columns=True) df_tables
Uveď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_measures
V 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_table
Poznámka:
- Data se načítají pomocí XMLA. To vyžaduje, aby byla povolena alespoň XMLA pouze pro čtení.
- Množství získatelných dat je omezené – maximální pamětí na dotaz kapacity SKU, která hostuje sémantický model – řídicím uzlem Spark (pro více informací navštivte velikosti uzlů), na kterém je spuštěný poznámkový blok.
- 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_measure
Poznámka:
- Ve výchozím nastavení se data nenačítají pomocí XMLA, a proto nevyžadují povolení XMLA jen pro čtení.
- Na data se nevztahujíomezení back-endu Power BI.
- Množství dostupných dat je omezené – maximální pamětí na dotaz SKU kapacity hostující sémantický model – uzlem ovladače Spark (další informace najdete ve velikostech uzlů), na kterém je spuštěný poznámkový blok.
- Všechny žádosti se účtují jako interaktivní žádosti.
- Funkce evaluate_dax neaktualizuje 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_measure
Pomocí dotazu DAX můžete také vyhodnotit 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
%%dax
vyhodnoťte stejný dotaz DAX, aniž byste museli knihovnu importovat. Spusťte tuto buňku pro načtení%%dax
magie buněk:%load_ext sempy
Parametr pracovního prostoru je volitelný. Řídí se stejnými pravidly jako parametr funkce
evaluate_dax
pracovní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ří:
-
fully_qualified_columns
: Pro hodnotu True vrátí metody názvy sloupců ve formuláři.TableName[ColumnName]
-
num_rows
: Počet řádků pro výstup ve výsledku -
pandas_convert_dtypes
: U hodnoty True přetypuje knihovna pandas výsledné sloupce datového rámce na nejlepší možný typ dtypeconvert_dtypes. Pokud je tento parametr vypnutý, může dojít k problémům s nekompatibilitou typu mezi sloupci souvisejících tabulek; Model Power BI nemusí tyto problémy rozpoznat kvůli implicitní převodu typu DAX
SemPy read_table
také používá informace o modelu, které Power BI poskytuje.
-
multiindex_hierarchies
: Pokud má hodnotu True, 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 příklad ukazuje, jak zapisovat data do připojeného Lakehouse. FabricDataFrame přijímá stejná vstupní data jako datové rámce Pandas.
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 složeného sémantického modelu sémantickým modelem Lakehouse.