Semantiska funktioner
Den här artikeln beskriver semantiska funktioner och hur de kan hjälpa dataexperter och datatekniker att identifiera funktioner som är relevanta för den FabricDataFrame eller FabricSeries som de arbetar med. Semantiska funktioner är en del av microsoft fabric-semantisk länkfunktion.
För Spark 3.4 och senare är det semantiska länkkärnpaketet tillgängligt i standardpaketet fabric runtime, men paketet semantic-link-functions som innehåller den semantiska funktionslogik (till exempel is_holiday
) måste installeras manuellt. Om du vill uppdatera till den senaste versionen av Python-semantiklänkbiblioteket (SemPy) kör du följande kommando:
%pip install -U semantic-link
En FabricDataFrame exponerar dynamiskt semantiska funktioner baserat på logiken som varje funktion definierar.
Funktionen visas till exempel is_holiday
i förslag för automatisk komplettering när du arbetar på en FabricDataFrame som innehåller både en datetime-kolumn och en landskolumn.
Varje semantisk funktion använder information om data, datatyper och metadata (till exempel Power BI-datakategorier) i FabricDataFrame eller FabricSeries för att fastställa dess relevans för de specifika data som du arbetar med.
Semantiska funktioner identifieras automatiskt när de kommenteras med dekoratören @semantic_function
.
Du kan se semantiska funktioner som C#-tilläggsmetoder som tillämpas på DataFrame-konceptet.
Förslag på automatisk komplettering av semantiska funktioner
Semantiska funktioner är tillgängliga i förslag för automatisk komplettering när du arbetar med en FabricDataFrame eller FabricSeries. Använd Ctrl+Space för att utlösa automatisk komplettering.
I följande kodexempel anges metadata för en FabricDataFrame manuellt:
from sempy.fabric import FabricDataFrame
df = FabricDataFrame(
{"country": ["US", "AT"],
"lat": [40.7128, 47.8095],
"long": [-74.0060, 13.0550]},
column_metadata={"lat": {"data_category": "Latitude"}, "long": {"data_category": "Longitude"}},
)
# Convert to GeoPandas dataframe
df_geo = df.to_geopandas(lat_col="lat", long_col="long")
# Use the explore function to visualize the data
df_geo.explore()
Om du läser från en semantisk modell till en FabricDataFrame fylls metadata i automatiskt.
from sempy.fabric import FabricDataFrame
# Read from semantic model
import sempy.fabric as fabric
df = fabric.read_table("my_dataset_name", "my_countries")
# Convert to GeoPandas dataframe
df_geo = df.to_geopandas(lat_col="lat", long_col="long")
# Use the explore function to visualize the data
df_geo.explore()
Inbyggda semantiska funktioner
SemPy Python-biblioteket innehåller en uppsättning inbyggda semantiska funktioner som är tillgängliga direkt. Dessa inbyggda funktioner omfattar:
is_holiday(...)
använder python-paketet holidays för att returneratrue
om datumet är en helgdag i det angivna landet.to_geopandas(...)
konverterar en FabricDataFrame till en GeoPandas GeoDataFrame.parse_phonenumber(...)
använder python-paketet med telefonnummer för att parsa ett telefonnummer i dess komponenter.validators
använder python-paketet validatorer för att verifiera vanliga datatyper som e-post och kreditkortsnummer.
Anpassade semantiska funktioner
Semantiska funktioner är utformade för utökningsbarhet. Du kan definiera dina egna semantiska funktioner i notebook-filen eller som separata Python-moduler.
Om du vill använda en semantisk funktion utanför en notebook-fil deklarerar du den semantiska funktionen i modulen sempy.functions
. I följande kodexempel visas definitionen av en semantisk funktion _is_capital
som returnerar true
om en stad är huvudstad i ett land.
from sempy.fabric import FabricDataFrame, FabricSeries
from sempy.fabric.matcher import CountryMatcher, CityMatcher
from sempy.functions import semantic_function, semantic_parameters
@semantic_function("is_capital")
@semantic_parameters(col_country=CountryMatcher, col_city=CityMatcher)
def _is_capital(df: FabricDataFrame, col_country: str, col_city: str) -> FabricSeries:
"""Returns true if the city is the capital of the country"""
capitals = {
"US": ["Washington"],
"AT": ["Vienna"],
# ...
}
return df[[col_country, col_city]] \
.apply(lambda row: row[1] in capitals[row[0]], axis=1)
I föregående kodexempel:
- Parametrarna
col_country
ochcol_city
kommenteras medCountryMatcher
respektiveCityMatcher
. Med den här anteckningen kan semantisk funktion identifieras automatiskt när du arbetar med en FabricDataFrame som har motsvarande metadata. - Anropa funktionen tillhandahåller även standarddatatyper som
str
,int
,float
ochdatetime
för att definiera nödvändiga indatakolumner. - Typanteckningen för den första parametern
df
visar att funktionen gäller för en FabricDataFrame i stället för en FabricSeries.