Funkcje semantyczne
W tym artykule opisano funkcje semantyczne i sposoby, w jaki mogą pomóc analitykom danych i inżynierom danych odkrywać funkcje istotne dla elementu FabricDataFrame lub FabricSeries, nad którymi pracują. Funkcje semantyczne są częścią funkcji linku semantycznego usługi Microsoft Fabric.
W przypadku platformy Spark w wersji 3.4 lub nowszej pakiet podstawowy linku semantycznego jest dostępny w domyślnym środowisku uruchomieniowym sieci szkieletowej, ale pakiet semantyczny-link-functions zawierający logikę funkcji semantycznej (na przykład is_holiday
) musi zostać zainstalowany ręcznie. Aby zaktualizować bibliotekę SemPy (Semantic Link) języka Python do najnowszej wersji, uruchom następujące polecenie:
%pip install -U semantic-link
Element FabricDataFrame dynamicznie uwidacznia funkcje semantyczne na podstawie logiki definiowanej przez każdą funkcję.
Na przykład is_holiday
funkcja jest wyświetlana w sugestiach autouzupełniania podczas pracy z elementem FabricDataFrame zawierającym zarówno kolumnę data/godzina, jak i kolumnę kraju.
Każda funkcja semantyczna używa informacji o danych, typach danych i metadanych (takich jak kategorie danych usługi Power BI) w elemantach FabricDataFrame lub FabricSeries w celu określenia jego istotności dla określonych danych, nad którymi pracujesz.
Funkcje semantyczne są automatycznie wykrywane po dodaniu adnotacji do dekoratora @semantic_function
.
Funkcje semantyczne można traktować jak metody rozszerzeń języka C# stosowane do koncepcji ramki danych.
Sugestie autouzupełniania funkcji semantycznych
Funkcje semantyczne są dostępne w sugestiach autouzupełniania podczas pracy z elementem FabricDataFrame lub FabricSeries. Użyj Ctrl+Spacja, aby wyzwolić autouzupełnianie.
Poniższy przykład kodu ręcznie określa metadane elementu 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()
Alternatywnie, jeśli odczytujesz z modelu semantycznego do elementu FabricDataFrame, metadane są wypełniane automatycznie.
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()
Wbudowane funkcje semantyczne
Biblioteka SemPy języka Python udostępnia zestaw wbudowanych funkcji semantycznych, które są dostępne w pudełku. Te wbudowane funkcje obejmują:
is_holiday(...)
używa pakietu holidays Python, aby powrócićtrue
, jeśli data jest wakacjami w danym kraju.to_geopandas(...)
Konwertuje element FabricDataFrame na element GeoDataFrame geopandas .parse_phonenumber(...)
używa numeru telefonu w pakiecie Python, aby przeanalizować numer telefonu w jego składnikach.validators
Używa pakietu modułów sprawdzania poprawności języka Python do sprawdzania poprawności typowych typów danych, takich jak adres e-mail i numery kart kredytowych.
Niestandardowe funkcje semantyczne
Funkcje semantyczne są zaprojektowane pod kątem rozszerzalności. Możesz zdefiniować własne funkcje semantyczne w notesie lub jako oddzielne moduły języka Python.
Aby użyć funkcji semantycznej poza notesem, zadeklaruj funkcję semantyczną w module sempy.functions
. Poniższy przykład kodu przedstawia definicję funkcji _is_capital
semantycznej, która zwraca true
, jeśli miasto jest stolicą kraju.
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)
W poprzednim przykładzie kodu:
- Parametry
col_country
icol_city
są oznaczone odpowiednio adnotacjamiCountryMatcher
i .CityMatcher
Ta adnotacja umożliwia automatyczne odnajdywanie funkcji semantycznej podczas pracy z elementem FabricDataFrame zawierającym odpowiednie metadane. - Wywołanie funkcji udostępnia również standardowe typy danych, takie jak
str
,int
,float
idatetime
w celu zdefiniowania wymaganych kolumn wejściowych. - Adnotacja typu pierwszego parametru
df
pokazuje, że funkcja ma zastosowanie do elementu FabricDataFrame, a nie fabricSeries.