Share via


Semantische Funktionen

Dieser Artikel befasst sich mit semantischen Funktionen, und wie sie Datenwissenschaftlern und Datentechnikern helfen können, Funktionen zu entdecken, die für fabricDataFrame oder FabricSeries, an denen sie gerade arbeiten, relevant sind.

Für Spark 3.4 und höher ist der semantische Link bei Verwendung von Fabric in der Standardlaufzeit verfügbar und muss nicht installiert werden. Wenn Sie Spark 3.3 oder darunter verwenden oder auf die neueste Version von Semantic Link aktualisieren möchten, können Sie den Befehl ausführen:

python %pip install -U semantic-link  

FabricDataFrames macht semantische Funktionen dynamisch basierend auf ihrer jeweilig definierten Logik verfügbar. Die is_holiday-Funktion wird beispielsweise in den Vorschlägen zum Auto-Vervollständigung angezeigt, wenn Sie an einem FabricDataFrame arbeiten, der sowohl eine Datetime-Spalte als auch eine Länderspalte enthält.

Jede semantische Funktion verwendet Informationen zu den Datentypen, Metadaten (z. B. Power BI-Datenkategorien) und Daten in einem FabricDataFrame- oder FabricSeries-Element, um ihre Relevanz für die jeweiligen 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 beliebte DataFrame-Konzept angewendet werden.

Verwendung semantischer Funktionen: Vorschläge für automatische Vervollständigung

Semantische Funktionen sind in den Vorschlägen für automatische Vervollständigung verfügbar, wenn Sie mit FabricDataFrame oder FabricSeries arbeiten. Sie können STRG+LEERTASTE verwenden, um automatische Vervollständigung auszulösen.

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

Im folgenden Beispiel werden die Metadaten für 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()

Alternativ können Sie Daten aus einem semantischen Modell in ein FabricDataFrame einlesen, dann werden die Metadaten automatisch aufgefüllt.

from sempy.fabric import FabricDataFrame

# Alternative: reading 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. Einige Beispiele:

  • is_holiday(...), die true zurückgibt, ob das Datum im angegebenen Land ein Feiertag ist, mithilfe des Python Urlaubs-Pakets.
  • to_geopandas(...), die einen FabricDataFrame in einen GeoPandas-GeoDataFrame konvertiert.
  • parse_phonenumber(...), die eine Telefonnummer in ihre Komponenten zerlegt, mithilfe des Python-Pakets für Telefonnummern.
  • validators, die eine Datenüberprüfung für allgemeine Datentypen, wie z. B. E-Mail- und Kreditkartennummern, durchführt. Die semantische Funktion verwendet das Python-Paket für Validierungssteuerelemente.

Benutzerdefinierte semantische Funktionen

Semantische Funktionen werden zur Erweiterbarkeit erstellt. Sie können ihre eigenen semantischen Funktionen innerhalb Ihres Notizbuchs oder als separates Python-Modul definieren. Um eine semantische Funktion außerhalb eines Notizbuchs zu verwenden, muss die semantische Funktion innerhalb des sempy.functions-Moduls deklariert werden.

Dieses Codebeispiel zeigt die Definition einer semantischen Funktion _is_captial, die true zurückgibt, wenn eine Stadt die Hauptstadt eines Landes ist.

from sempy.fabric import FabricDataFrame, FabricSeries
from sempy.fabric.matcher import CountryMatcher, CityMatcher
from sempy.functions import semantic_function, semantic_paramters

@semantic_function("is_capital")
@semantic_parameters(col_country=CountryMatcher, col_city=CityMatcher)
def _is_captial(df: FabricDataFrame, col_country: str, col_city: str) -> FabricSeries:
    """Returns true if the city is a 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)

Die folgenden Punkte enthalten eine Aufschlüsselung des Codeausschnitts:

  • 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 Parameters (df) zeigt an, dass die Funktion auf einen FabricDataFrame und nicht auf eine FabricSeries anwendbar ist.