Del via


Semantiske funktioner

I denne artikel beskrives semantiske funktioner, og hvordan de kan hjælpe dataspecialister og datateknikere med at finde funktioner, der er relevante for den FabricDataFrame eller FabricSeries, de arbejder på. Semantiske funktioner er en del af funktionen Microsoft Fabric semantisk link.

For Spark 3.4 og nyere er den semantiske linkkernepakke tilgængelig i Fabric-standardkørslen, men den semantiske-link-funktionspakke, der indeholder semantisk funktionslogik (f.eks. is_holiday), skal installeres manuelt. Hvis du vil opdatere til den nyeste version af SemPy-biblioteket (Python semantisk link), skal du køre følgende kommando:

%pip install -U semantic-link

En FabricDataFrame viser dynamisk semantiske funktioner baseret på den logik, som hver funktion definerer. Funktionen vises f.eks. i forslagene til autofuldførelse, is_holiday når du arbejder på en FabricDataFrame, der indeholder både en datetime-kolonne og en landekolonne.

Hver semantisk funktion bruger oplysninger om data, datatyper og metadata (f.eks. Power BI-datakategorier) i FabricDataFrame eller FabricSeries til at bestemme dens relevans for de bestemte data, du arbejder på.

Semantiske funktioner registreres automatisk, når de anmærkes med dekoratøren @semantic_function . Du kan tænke på semantiske funktioner som at være som C#-udvidelsesmetoder , der anvendes på DataFrame-konceptet.

Forslag til autofuldførelse af semantiske funktioner

Semantiske funktioner er tilgængelige i forslagene til autofuldførelse, når du arbejder med en FabricDataFrame eller FabricSeries. Brug Ctrl+Mellemrum til at udløse autofuldførelse.

Skærmbillede af semantiske funktioner i forslag til autofuldførelse.

Følgende kodeeksempel angiver 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()

Hvis du læser fra en semantisk model i en FabricDataFrame, udfyldes metadataene også automatisk.

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()

Indbyggede semantiske funktioner

SemPy Python-biblioteket indeholder et sæt indbyggede semantiske funktioner, der er tilgængelige. Disse indbyggede funktioner omfatter:

Brugerdefinerede semantiske funktioner

Semantiske funktioner er designet til udvidelse. Du kan definere dine egne semantiske funktioner i din notesbog eller som separate Python-moduler.

Hvis du vil bruge en semantisk funktion uden for en notesbog, skal du deklarere den semantiske funktion i sempy.functions modulet. I følgende kodeeksempel vises definitionen af en semantisk funktion _is_capital , der 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 foregående kodeeksempel:

  • Parametrene col_country og col_city er henholdsvis kommenteret med CountryMatcher og CityMatcher. Denne anmærkning gør det muligt automatisk at registrere den semantiske funktion, når du arbejder med en FabricDataFrame, der har de tilsvarende metadata.
  • Når du kalder funktionen, leveres der også standarddatatyper som str, int, floatog datetime for at definere påkrævede inputkolonner.
  • Typeanmærkningen for den første parameter df viser, at funktionen gælder for en FabricDataFrame i stedet for en FabricSeries.