Semantiske funksjoner
Denne artikkelen beskriver semantiske funksjoner og hvordan de kan hjelpe dataforskere og datateknikere med å oppdage funksjoner som er relevante for FabricDataFrame eller FabricSeries de jobber med. Semantiske funksjoner er en del av semantisk koblingsfunksjon for Microsoft Fabric.
For Spark 3.4 og nyere er den semantiske koblingskjernepakken tilgjengelig i standard fabric runtime, men semantisk-link-funksjoner-pakken som inkluderer semantisk funksjonslogikk (for eksempel is_holiday
) må installeres manuelt. Hvis du vil oppdatere til den nyeste versjonen av Python-semantiske koblingsbiblioteket (SemPy), kjører du følgende kommando:
%pip install -U semantic-link
En FabricDataFrame eksponerer semantiske funksjoner dynamisk basert på logikken hver funksjon definerer.
Funksjonen vises for eksempel is_holiday
i autofullføringsforslagene når du arbeider på en FabricDataFrame som inneholder både en datetime-kolonne og en landkolonne.
Hver semantiske funksjon bruker informasjon om data, datatyper og metadata (for eksempel Power BI-datakategorier) i FabricDataFrame eller FabricSeries til å bestemme relevansen for de bestemte dataene du arbeider med.
Semantiske funksjoner oppdages automatisk når de kommenteres med dekoratøren @semantic_function
.
Du kan se på semantiske funksjoner som som C#-utvidelsesmetoder som brukes på DataFrame-konseptet.
Semantiske funksjoner autofullføringsforslag
Semantiske funksjoner er tilgjengelige i autofullføringsforslagene når du arbeider med en FabricDataFrame eller FabricSeries. Bruk CTRL+MELLOMROM til å utløse autofullføring.
Følgende kodeeksempel angir manuelt metadataene for en FabricDataFrame:
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()
Alternativt, hvis du leser fra en semantisk modell til en FabricDataFrame, autofylles metadataene.
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()
Innebygde semantiske funksjoner
SemPy Python-biblioteket inneholder et sett med innebygde semantiske funksjoner som er tilgjengelige utenfor boksen. Disse innebygde funksjonene inkluderer:
is_holiday(...)
bruker Python-pakken for helligdager til å returneretrue
hvis datoen er en ferie i det angitte landet.to_geopandas(...)
konverterer en FabricDataFrame til en GeoPandas GeoDataFrame.parse_phonenumber(...)
bruker Python-pakken for telefonnumre til å analysere et telefonnummer i komponentene.validators
bruker Python-pakken for validatorer til å validere vanlige datatyper som e-post og kredittkortnumre.
Egendefinerte semantiske funksjoner
Semantiske funksjoner er utformet for utvidbarhet. Du kan definere dine egne semantiske funksjoner i notatblokken eller som separate Python-moduler.
Hvis du vil bruke en semantisk funksjon utenfor en notatblokk, erklærer du den semantiske funksjonen i modulen sempy.functions
. Følgende kodeeksempel viser definisjonen av en semantisk funksjon _is_capital
som returnerer true
hvis en by er hovedstaden i et 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 det forrige kodeeksemplet:
col_city
Ogcol_country
parameterne er kommentert medCountryMatcher
henholdsvis ogCityMatcher
. Denne merknaden gjør at semantisk funksjon kan oppdages automatisk når du arbeider med en FabricDataFrame som har tilsvarende metadata.- Kall til funksjonen inneholder også standard datatyper som
str
, ,int
float
ogdatetime
for å definere nødvendige inndatakolonner. - Typemerknaden til den første parameteren viser at funksjonen gjelder
df
for en FabricDataFrame i stedet for FabricSeries.