Freigeben über


Semantische Funktionen

Dieser Artikel beschreibt semantische Funktionen und wie sie Datenwissenschaftlern und Dateningenieuren helfen können, Funktionen zu entdecken, die für den FabricDataFrame oder die FabricSeries, an denen sie arbeiten, relevant sind. Semantische Funktionen sind Teil der semantischen Verknüpfungsfunktion von Microsoft Fabric.

Für Spark 3.4 und höher ist das Kernpaket für semantische Verknüpfungen in der Standard-Fabric-Laufzeit verfügbar, aber das Paket für semantische Verknüpfungsfunktionen, das die semantische Funktionslogik (z. B. is_holiday) enthält, muss manuell installiert werden. Führen Sie den folgenden Befehl aus, um die neueste Version der Python-Bibliothek für semantische Verknüpfungen (SemPy) zu aktualisieren:

%pip install -U semantic-link

FabricDataFrames zeigt dynamisch semantische Funktionen an, die auf der Logik basieren, die jede Funktion definiert. Die is_holiday-Funktion erscheint zum Beispiel in den Vorschlägen zur automatischen Vervollständigung, wenn Sie mit einem FabricDataFrame arbeiten, der sowohl eine Datums- als auch eine Länderspalte enthält.

Jede semantische Funktion verwendet Informationen über die Daten, Datentypen und Metadaten (wie Power BI-Datenkategorien) im FabricDataFrame oder in der FabricSeries, um ihre Relevanz für die speziellen Daten zu bestimmen, an denen Sie arbeiten.

Semantische Funktionen werden automatisch ermittelt, wenn sie mit dem @semantic_function-Decorator kommentiert werden. Sie können sich semantische Funktionen wie C#-Erweiterungsmethoden vorstellen, die auf das DataFrame-Konzept angewendet werden.

Semantische Funktionen zur automatischen Vervollständigung von Vorschlägen

Semantische Funktionen sind in den Vorschlägen für automatische Vervollständigung verfügbar, wenn Sie mit FabricDataFrame oder FabricSeries arbeiten. Verwenden Sie die Tastenkombination Strg+Leertaste, um die automatische Vervollständigung auszulösen.

Screenshot der semantischen Funktionen in AutoVervollständigen-Vorschlägen.

Im folgenden Codebeispiel werden die Metadaten für einen FabricDataFrame manuell festgelegt:

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

Wenn Sie alternativ aus einem semantischen Modell in einen FabricDataFrame lesen, werden die Metadaten automatisch ausgefüllt.

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

Integrierte semantische Funktionen

Die SemPy Python-Bibliothek bietet eine Reihe integrierter semantischer Funktionen, die sofort verfügbar sind. Diese integrierten Funktionen umfassen:

  • is_holiday(...) verwendet das Python-Paket Feiertage, um true zurückzugeben, wenn das Datum ein Feiertag in dem angegebenen Land ist.
  • to_geopandas(...) konvertiert einen FabricDataFrame in einen GeoPandas-GeoDataFrame.
  • parse_phonenumber(...) verwendet das Python-Paket phone numbers, um eine Telefonnummer in ihre Bestandteile zu zerlegen.
  • validators verwendet das Python-Paket Validierungssteuerelement, um gängige Datentypen wie E-Mail und Kreditkartennummern zu validieren.

Benutzerdefinierte semantische Funktionen

Semantische Funktionen sind auf Erweiterbarkeit ausgelegt. Sie können Ihre eigenen semantischen Funktionen innerhalb Ihres Notebooks oder als separate Python-Module definieren.

Um eine semantische Funktion außerhalb eines Notizbuchs zu verwenden, deklarieren Sie die semantische Funktion innerhalb des sempy.functions-Moduls. Das folgende Codebeispiel zeigt die Definition einer semantischen Funktion _is_capital, die true zurückgibt, wenn die Stadt die Hauptstadt des Landes ist.

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)

Im vorangegangenen Codebeispiel:

  • Die Parameter col_country und col_city werden entsprechend mit CountryMatcher bzw. CityMatcher kommentiert. Mit dieser Anmerkung kann die semantische Funktion automatisch ermittelt werden, wenn Sie mit einem FabricDataFrame arbeiten, der über die entsprechenden Metadaten verfügt.
  • Durch Aufrufen der Funktion werden auch Standarddatentypen wie str, int, float und datetime zum Definieren der erforderlichen Eingabespalten bereitgestellt.
  • Die Typanmerkung des ersten df-Parameters zeigt an, dass die Funktion auf einen FabricDataFrame und nicht auf eine FabricSeries anwendbar ist.