Fonctions sémantiques
Cet article décrit les fonctions sémantiques et la manière dont elles peuvent aider les scientifiques et les ingénieurs des données à découvrir des fonctions pertinentes pour le FabricDataFrame ou le FabricSeries sur lequel ils travaillent. Les fonctions sémantiques font partie de la fonctionnalité de lien sémantique de Microsoft Fabric.
Pour Spark 3.4 et plus, le package semantic link core est disponible dans le runtime Fabric par défaut, mais le package semantic-link-functions qui inclut la logique des fonctions sémantiques (comme is_holiday
) doit être installé manuellement. Pour mettre à jour la version la plus récente de la bibliothèque Python semantic link (SemPy), exécutez la commande suivante :
%pip install -U semantic-link
Un FabricDataFrame expose dynamiquement des fonctions sémantiques basées sur la logique définie par chaque fonction.
Par exemple, la fonction is_holiday
apparaît dans les suggestions de saisie semi-automatique lorsque vous travaillez sur un FabricDataFrame qui contient à la fois une colonne de date et une colonne de pays.
Chaque fonction sémantique utilise des informations sur les données, les types de données et les métadonnées (comme les catégories de données Power BI) dans le FabricDataFrame ou le FabricSeries pour déterminer sa pertinence par rapport aux données particulières sur lesquelles vous travaillez.
Les fonctions sémantiques sont découvertes automatiquement lorsqu’elles sont annotées avec l’élément décoratif @semantic_function
.
Vous pouvez considérer les fonctions sémantiques comme des méthodes d'extension C# appliquées au concept de DataFrame.
Fonctions sémantiques suggestions d'autocomplétion
Les fonctions sémantiques sont disponibles dans les suggestions d’autocomplétion lorsque vous travaillez avec un FabricDataFrame ou un FabricSeries. Utilisez Ctrl+Espace pour déclencher la saisie semi-automatique.
L'exemple de code suivant spécifie manuellement les métadonnées d'un 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()
Par ailleurs, si vous lisez un modèle sémantique dans un FabricDataFrame, les métadonnées sont alimentées automatiquement.
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()
Fonctions sémantiques intégrées
La bibliothèque Python SemPy fournit un ensemble de fonctions sémantiques intégrées disponibles d’emblée. Ces fonctions intégrées comprennent :
is_holiday(...)
utilise le paquet Python holidayspour indiquertrue
si la date est un jour férié dans le pays donné.to_geopandas(...)
convertit un FabricDataFrame en GeoPandas GeoDataFrame.parse_phonenumber(...)
utilise le paquetage Python des numéros de téléphone pour analyser un numéro de téléphone en ses composants.validators
utilise le paquetage Python validators pour valider des types de données courants tels que les courriels et les numéros de cartes de crédit.
Fonctions sémantiques personnalisées
Les fonctions sémantiques sont conçues pour être extensibles. Vous pouvez définir vos propres fonctions sémantiques au sein de votre notebook ou en tant que modules Python distincts.
Pour utiliser une fonction sémantique en dehors d'un bloc-notes, il faut déclarer la fonction sémantique dans le module sempy.functions
. L'exemple de code suivant montre la définition d'une fonction sémantique _is_capital
qui renvoie true
si une ville est la capitale d'un pays.
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)
Dans l’exemple de code précédent :
- Les paramètres
col_country
etcol_city
sont annotés avecCountryMatcher
etCityMatcher
, respectivement. Cette annotation permet à la fonction sémantique d’être détectée automatiquement lors de l’utilisation d’un FabricDataFrame qui a les métadonnées correspondantes. - L’appel de la fonction fournit également des types de données standard tels que
str
,int
,float
etdatetime
pour définir les colonnes d’entrée requises. - L’annotation de type du premier paramètre
df
indique que la fonction s’applique à un FabricDataFrame plutôt qu’à un FabricSeries.