Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I den här artikeln lär du dig att läsa data, metadata och utvärdera mått i semantiska modeller med hjälp av SemPy Python-biblioteket i Microsoft Fabric. Du lär dig också att skriva data som semantiska modeller kan använda.
Förutsättningar
Skaffa en Microsoft Fabric-prenumeration. Eller registrera dig för en kostnadsfri utvärderingsversion av Microsoft Fabric.
Logga in på Microsoft Fabric.
Använd upplevelseväxlaren längst ned till vänster på startsidan för att byta till Fabric.
- Gå till Data Science-upplevelsen i Microsoft Fabric.
- Skapa en ny notebook-fil för att kopiera och klistra in kod i celler.
- För Spark 3.4 och senare är Semantic-link tillgänglig i standardkörningen när du använder Fabric, och du behöver inte installera den. Om du använder Spark 3.3 eller senare, eller om du vill uppdatera till den senaste versionen av Semantic Link, kan du köra kommandot:
python %pip install -U semantic-link - Lägg till ett Lakehouse till din anteckningsbok
- Ladda ned semantikmodellen Customer Profitability Sample.pbix från datauppsättningsmappen på lagringsplatsen fabric-samples och spara den lokalt.
Ladda upp den semantiska modellen till din arbetsyta
Den här artikeln använder semantikmodellen Customer Profitability Sample.pbix . Semantikmodellen refererar till ett företag som tillverkar marknadsföringsmaterial. Den innehåller produkt-, kund- och intäktsdata för olika affärsenheter.
- Öppna din arbetsyta i Fabric Data Science.
- Välj Importera > rapport, Sidnumrerad rapport eller Arbetsbok > Från den här datorn och välj semantikmodellen Customer Profitability Sample.pbix .
När uppladdningen är klar innehåller arbetsytan tre nya artefakter: en Power BI-rapport, en instrumentpanel och en semantisk modell med namnet Customer Profitability Sample. Stegen i den här artikeln förlitar sig på den här semantiska modellen.
Använda Python för att läsa data från semantiska modeller
SemPy Python-API:et kan hämta data och metadata från semantiska modeller som finns på en Microsoft Fabric-arbetsyta. API:et kan också köra frågor på dem.
Notebook-filen, Power BI-datauppsättningens semantiska modell och lakehouse kan finnas på samma arbetsyta eller på olika arbetsytor. Som standard försöker SemPy komma åt din semantiska modell från:
- Arbetsytan i ditt sjöhus, om du bifogat ett sjöhus till din anteckningsbok.
- Arbetsytan i anteckningsboken, om det inte finns någon bifogad lakehouse.
Om din semantiska modell inte finns på någon av dessa arbetsytor måste du ange arbetsytan för din semantiska modell när du anropar en SemPy-metod.
Följ dessa steg för att läsa data från semantiska modeller:
Visa en lista över tillgängliga semantiska modeller på din arbetsyta.
import sempy.fabric as fabric df_datasets = fabric.list_datasets() df_datasetsLista tabellerna som är tillgängliga i semantikmodellen Exempel på kundlönsamhet .
df_tables = fabric.list_tables("Customer Profitability Sample", include_columns=True) df_tablesVisa en lista över måtten som definierats i semantikmodellen Exempel på kundlönsamhet .
Tips
I följande kodexempel angav vi arbetsytan för SemPy som ska användas för att komma åt semantikmodellen. Du kan ersätta
<Your Workspace>med namnet på arbetsytan där du laddade upp semantikmodellen (från avsnittet Ladda upp semantikmodellen till arbetsytan ).df_measures = fabric.list_measures("Customer Profitability Sample", workspace="<Your Workspace>") df_measuresHär har vi fastställt att tabellen Kund är den intressanta tabellen.
Läs tabellen Customer från semantikmodellen Customer Profitability Sample.
df_table = fabric.read_table("Customer Profitability Sample", "Customer") df_tableKommentar
- Data hämtas med XMLA, vilket kräver att minst XMLA är skrivskyddat för att aktiveras.
- Mängden hämtningsbara data begränsas av: – Maximalt minne per fråga för den kapacitets-SKU som är värd för den semantiska modellen. – Spark-drivrutinsnoden (besök nodstorlekar för mer information) som kör notebooken.
- Alla begäranden har låg prioritet för att minimera påverkan på Prestanda för Microsoft Azure Analysis Services och faktureras som interaktiva begäranden.
Utvärdera måttet Totala intäkter för varje kunds tillstånd och datum.
df_measure = fabric.evaluate_measure( "Customer Profitability Sample", "Total Revenue", ["'Customer'[State]", "Calendar[Date]"]) df_measureKommentar
- Som standard hämtas inte data med XMLA, så XMLA-skrivskyddad behöver inte aktiveras.
- Data omfattas inte av begränsningar för Power BI-serverdelen.
- Mängden hämtningsbara data begränsas av: – Maximalt minne per fråga för den kapacitets-SKU som är värd för semantikmodellen. – Spark-drivrutinsnoden (besök nodstorlekar för ytterligare information) som kör notebooken.
- Alla begäranden faktureras som interaktiva begäranden.
- Funktionen
evaluate_daxuppdaterar inte semantikmodellen automatiskt. Mer information finns på den här sidan .
Om du vill lägga till filter i måttberäkningen anger du en lista över tillåtna värden för en viss kolumn.
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_measureUtvärdera måttet Total Revenue per kundens delstat och datum med en DAX-fråga.
df_dax = fabric.evaluate_dax( "Customer Profitability Sample", """ EVALUATE SUMMARIZECOLUMNS( 'State'[Region], 'Calendar'[Date].[Year], 'Calendar'[Date].[Month], "Total Revenue", CALCULATE([Total Revenue])) """)Kommentar
- Data hämtas med XMLA och kräver därför att minst XMLA läsbehörighet är aktiverad
- Mängden hämtningsbara data begränsas av tillgängligt minne i Microsoft Azure Analysis Services och Spark-drivrutinsnoden (besök nodstorlekar för mer information)
- Alla begäranden använder låg prioritet för att minimera påverkan på Analysis Services-prestanda och faktureras som interaktiva begäranden
Använd cellmagi
%%daxför att utvärdera samma DAX-fråga, utan att behöva importera biblioteket. Kör den här cellen för att ladda in%%daxcellkommandon:%load_ext sempyParametern för arbetsytan är valfri. Den följer samma regler som arbetsyteparametern för
evaluate_daxfunktionen.Cellmagi stöder också åtkomst till Python-variabler med syntaxen
{variable_name}. Om du vill använda en klammerparentes i DAX-frågan kan du undvika den med en annan klammerparentes (exempel:EVALUATE {{1}}).%%dax "Customer Profitability Sample" -w "<Your Workspace>" EVALUATE SUMMARIZECOLUMNS( 'State'[Region], 'Calendar'[Date].[Year], 'Calendar'[Date].[Month], "Total Revenue", CALCULATE([Total Revenue]))Den resulterande FabricDataFrame är tillgänglig via variabeln
_. Den variabeln samlar in utdata från den senast utförda cellen.df_dax = _ df_dax.head()Du kan lägga till mått i data som hämtats från externa källor. Den här metoden kombinerar tre uppgifter:
- Kopplar kolumnnamn till Power BI-dimensioner
- Den definierar gruppera efter kolumner
- Det filtrerar måttet Alla kolumnnamn som inte kan matchas inom den angivna semantiska modellen ignoreras (mer information finns i DAX-syntaxresursen som stöds).
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
Särskilda parametrar
SemPy read_table och evaluate_measure metoderna har fler parametrar som är användbara för att manipulera utdata. Dessa parametrar omfattar:
-
pandas_convert_dtypes: Om det ställs in påTruekonverterar pandas de resulterande DataFrame-kolumnerna till bästa möjliga dtype. Läs mer i convert_dtypes. Om den här parametern är inaktiverad kan det uppstå problem med inkompatibilitet mellan kolumner i relaterade tabeller. Power BI-modellen kanske inte identifierar dessa problem på grund av implicit DAX-typkonvertering.
SemPy read_table använder också den modellinformation som Power BI tillhandahåller.
-
multiindex_hierarchies: Om värdet är inställt påTruekonverteras Power BI-hierarkier till en Pandas MultiIndex-struktur.
Skriva data som kan användas med semantiska modeller
Spark-tabeller som läggs till i ett Lakehouse läggs automatiskt till i motsvarande standardsemantiska modell. Den här artikeln visar hur du skriver data till det bifogade Lakehouse. Accepterar FabricDataFrame samma indata som Pandas-dataramar.
from sempy.fabric import FabricDataFrame
df_forecast = FabricDataFrame({'ForecastedRevenue': [1, 2, 3]})
df_forecast.to_lakehouse_table("ForecastTable")
Med Power BI kan tabellen ForecastTable läggas till i en sammansatt semantisk modell som innehåller Lakehouse-semantikmodellen.