Del via


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.

Skjermbilde av semantiske funksjoner i autofullføringsforslag.

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:

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 Og col_country parameterne er kommentert med CountryMatcher henholdsvis og CityMatcher. 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, , intfloatog datetime for å definere nødvendige inndatakolonner.
  • Typemerknaden til den første parameteren viser at funksjonen gjelder df for en FabricDataFrame i stedet for FabricSeries.