Dela via


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.

Skärmbild av semantiska funktioner i förslag för 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:

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 och col_city kommenteras med CountryMatcher respektive CityMatcher. 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, floatoch datetime 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.