Udostępnij za pośrednictwem


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.

Zrzut ekranu przedstawiający funkcje semantyczne w sugestiach autouzupełniania.

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.
  • validatorsUż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 i col_city są oznaczone odpowiednio adnotacjami CountryMatcher 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, floati datetime w celu zdefiniowania wymaganych kolumn wejściowych.
  • Adnotacja typu pierwszego parametru df pokazuje, że funkcja ma zastosowanie do elementu FabricDataFrame, a nie fabricSeries.