Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel leert u hoe u gegevens, metagegevens en metingen kunt lezen in semantische modellen met behulp van de SemPy Python-bibliotheek in Microsoft Fabric. U leert ook hoe u gegevens schrijft die semantische modellen kunnen gebruiken.
Vereisten
Haal een Microsoft Fabric-abonnement op. Of meld u aan voor een gratis proefversie van Microsoft Fabric.
Meld u aan bij Microsoft Fabric.
Schakel over naar Fabric met behulp van de ervaringsschakelaar aan de linkerkant van de startpagina.
- Ga naar de Data Science-ervaring in Microsoft Fabric.
- Maak een nieuw notitieblok om code te kopiëren en in cellen te plakken.
- Voor Spark 3.4 en hoger is Semantische koppeling beschikbaar in de standaardruntime wanneer u Fabric gebruikt en hoeft u deze niet te installeren. Als u Spark 3.3 of lager gebruikt of als u wilt bijwerken naar de meest recente versie van Semantic Link, kunt u de opdracht uitvoeren:
python %pip install -U semantic-link - Een Lakehouse toevoegen aan uw notitieblok
- Download het semantische model Customer Profitability Sample.pbix uit de map gegevenssets van de opslagplaats fabric-samples en sla het lokaal op.
Het semantische model uploaden naar uw werkruimte
In dit artikel wordt het semantische model Customer Profitability Sample.pbix gebruikt. Het semantische model verwijst naar een bedrijf dat marketingmateriaal produceert. Het bevat gegevens over producten, klanten en omzet voor verschillende bedrijfseenheden.
- Open uw werkruimte in Fabric Data Science.
- Selecteer Rapport importeren>, Gepagineerd Rapport of Werkmap > van deze computer en kies het semantische model Customer Profitability Sample.pbix.
Nadat het uploaden is voltooid, bevat uw werkruimte drie nieuwe artefacten: een Power BI-rapport, een dashboard en een semantisch model met de naam Klantwinstgevendheidsvoorbeeld. De stappen in dit artikel zijn afhankelijk van dit semantische model.
Python gebruiken om gegevens te lezen uit semantische modellen
De SemPy Python-API kan gegevens en metagegevens ophalen uit semantische modellen die zich in een Microsoft Fabric-werkruimte bevinden. De API kan er ook query's op uitvoeren.
Uw notebook, het semantische power BI-gegevenssetmodel en lakehouse kunnen zich in dezelfde werkruimte of in verschillende werkruimten bevinden. SemPy probeert standaard toegang te krijgen tot uw semantische model vanuit:
- De werkruimte van uw lakehouse, indien u een lakehouse aan uw notitieblok hebt gekoppeld.
- Indien er geen lakehouse is gekoppeld, is dit de werkruimte van uw notitieblok.
Als uw semantische model zich niet in een van deze werkruimten bevindt, moet u de werkruimte van uw semantische model opgeven wanneer u een SemPy-methode aanroept.
Als u gegevens uit semantische modellen wilt lezen, voert u de volgende stappen uit:
Geef de beschikbare semantische modellen in uw werkruimte weer.
import sempy.fabric as fabric df_datasets = fabric.list_datasets() df_datasetsGeef de tabellen weer die beschikbaar zijn in het semantische model klantwinstgevendheidsvoorbeeld .
df_tables = fabric.list_tables("Customer Profitability Sample", include_columns=True) df_tablesVermeld de metingen die zijn gedefinieerd in het semantische model klantwinstgevendheidsvoorbeeld .
Aanbeveling
In het volgende codevoorbeeld hebben we de werkruimte voor SemPy opgegeven die moet worden gebruikt voor toegang tot het semantische model. U kunt
<Your Workspace>vervangen door de naam van de werkruimte waarin u het semantische model hebt geüpload (uit de sectie Upload het semantische model naar uw werkruimte).df_measures = fabric.list_measures("Customer Profitability Sample", workspace="<Your Workspace>") df_measuresHier hebben we vastgesteld dat de tabel Klant de interessetabel is.
Lees de tabel Klant uit het semantische model Klantwinstgevendheidsvoorbeeld .
df_table = fabric.read_table("Customer Profitability Sample", "Customer") df_tableNotitie
- Gegevens worden opgehaald met XMLA, waarvoor ten minste XMLA alleen-lezen moet worden ingeschakeld.
- De hoeveelheid ophaalbare gegevens wordt beperkt door: - Het maximale geheugen per query van de capaciteits-SKU die als host fungeert voor het semantische model. - Het Spark-stuurprogrammaknooppunt (bezoek knooppuntgrootten voor meer informatie) waarmee het notebook wordt uitgevoerd.
- Alle aanvragen gebruiken lage prioriteit om de impact op de prestaties van Microsoft Azure Analysis Services te minimaliseren en worden gefactureerd als interactieve aanvragen.
Evalueer de meting Totale omzet voor de status en datum van elke klant.
df_measure = fabric.evaluate_measure( "Customer Profitability Sample", "Total Revenue", ["'Customer'[State]", "Calendar[Date]"]) df_measureNotitie
- Standaard worden gegevens niet opgehaald met XMLA, dus XMLA alleen-lezen hoeft niet te worden ingeschakeld.
- De gegevens zijn niet onderhevig aan power BI-back-endbeperkingen.
- De hoeveelheid ophaalbare gegevens wordt beperkt door: - Het maximale geheugen per query van de capaciteits-SKU die als host fungeert voor het semantische model. - Het Spark-stuurprogrammaknooppunt (bezoek knooppuntgrootten voor meer informatie) waarmee het notebook wordt uitgevoerd.
- Alle aanvragen worden gefactureerd als interactieve aanvragen.
- De
evaluate_daxfunctie vernieuwt het semantische model niet automatisch. Ga naar deze pagina voor meer informatie.
Als u filters wilt toevoegen aan de metingberekening, geeft u een lijst met toegestane waarden voor een bepaalde kolom op.
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_measureEvalueer de meting Totale omzet per klantstatus en -datum met een DAX-query.
df_dax = fabric.evaluate_dax( "Customer Profitability Sample", """ EVALUATE SUMMARIZECOLUMNS( 'State'[Region], 'Calendar'[Date].[Year], 'Calendar'[Date].[Month], "Total Revenue", CALCULATE([Total Revenue])) """)Notitie
- Gegevens worden opgehaald met XMLA en daarom moeten ten minste XMLA-alleen-lezen zijn ingeschakeld
- De hoeveelheid ophaalbare gegevens wordt beperkt door het beschikbare geheugen in Microsoft Azure Analysis Services en het Spark-stuurprogrammaknooppunt (bezoek knooppuntgrootten voor meer informatie)
- Alle aanvragen gebruiken lage prioriteit om de impact op de prestaties van Analysis Services te minimaliseren en worden gefactureerd als interactieve aanvragen
Gebruik de magic van de
%%daxcel om dezelfde DAX-query te evalueren, zonder dat u de bibliotheek hoeft te importeren. Voer deze cel uit om celmagie te laden:%%dax%load_ext sempyDe werkruimteparameter is optioneel. Het volgt dezelfde regels als de werkruimteparameter van de
evaluate_daxfunctie.De celmagie biedt ook ondersteuning voor toegang tot Python-variabelen met de
{variable_name}syntaxis. Als u een accolade in de DAX-query wilt gebruiken, escape dan de accolade met een andere accolade (bijvoorbeeld:EVALUATE {{1}}).%%dax "Customer Profitability Sample" -w "<Your Workspace>" EVALUATE SUMMARIZECOLUMNS( 'State'[Region], 'Calendar'[Date].[Year], 'Calendar'[Date].[Month], "Total Revenue", CALCULATE([Total Revenue]))Het resulterende FabricDataFrame is beschikbaar via de
_variabele. Deze variabele legt de uitvoer van de laatst uitgevoerde cel vast.df_dax = _ df_dax.head()U kunt metingen toevoegen aan gegevens die zijn opgehaald uit externe bronnen. Deze benadering combineert drie taken:
- Kolomnamen worden vertaald naar Power BI-dimensies
- Het definieert het groeperen per kolom
- Hiermee worden de kolomnamen van de meting gefilterd. Kolomnamen die niet binnen het opgegeven semantische model kunnen worden opgelost, worden genegeerd (ga naar de ondersteunde DAX-syntaxisresource voor meer informatie).
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
Speciale parameters
De SemPy read_table en evaluate_measure methoden hebben meer parameters die nuttig zijn voor het bewerken van de uitvoer. Deze parameters omvatten:
-
pandas_convert_dtypes: Als dit is ingesteld opTrue, zet pandas de resulterende DataFrame-kolommen om naar het best mogelijke dtype. Meer informatie vindt u in convert_dtypes. Als deze parameter is uitgeschakeld, kunnen er incompatibiliteitsproblemen optreden tussen kolommen met gerelateerde tabellen. Het Power BI-model detecteert deze problemen mogelijk niet vanwege impliciete DAX-typeconversie.
SemPy read_table gebruikt ook de modelgegevens die Power BI levert.
-
multiindex_hierarchies: Als deze optie is ingesteldTrue, worden Power BI-hiërarchieën geconverteerd naar een pandas MultiIndex-structuur.
Gegevens schrijven die kunnen worden gebruikt door semantische modellen
Spark-tabellen die aan een Lakehouse worden toegevoegd, worden automatisch toegevoegd aan het bijbehorende semantische standaardmodel. In dit artikel wordt gedemonstreert hoe u gegevens schrijft naar de gekoppelde Lakehouse. De FabricDataFrame accepteert dezelfde invoergegevens als Pandas-gegevensframes.
from sempy.fabric import FabricDataFrame
df_forecast = FabricDataFrame({'ForecastedRevenue': [1, 2, 3]})
df_forecast.to_lakehouse_table("ForecastTable")
Met Power BI kan de tabel ForecastTable worden toegevoegd aan een samengesteld semantisch model dat het semantische Lakehouse-model bevat.