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.
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, umtrue
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
undcol_city
werden entsprechend mitCountryMatcher
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
unddatetime
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.