Megosztás a következőn keresztül:


Szemantikai függvények

Ez a cikk a szemantikai függvényeket ismerteti, és azt ismerteti, hogyan segíthetnek az adattudósok és az adatmérnökök a FabricDataFrame-hez vagy a FabricSerieshez kapcsolódó függvények felderítésében. A szemantikai függvények a Microsoft Fabric szemantikai hivatkozás funkciójának részét képezik.

A Spark 3.4-hez és újabb verziókhoz a szemantikai kapcsolat magcsomagja az alapértelmezett Fabric-futtatókörnyezetben érhető el, de a szemantikai függvénylogikát (például is_holiday) tartalmazó szemantikai-csatolási függvénycsomagot manuálisan kell telepíteni. A Python szemantikai hivatkozástárának (SemPy) legújabb verziójára való frissítéshez futtassa a következő parancsot:

%pip install -U semantic-link

A FabricDataFrame dinamikusan teszi elérhetővé a szemantikai függvényeket az egyes függvények által definiált logika alapján. A függvény például akkor jelenik meg az automatikus kiegészítési javaslatokban, is_holiday ha olyan FabricDataFrame-et használ, amely dátum-idő oszlopot és országoszlopot is tartalmaz.

Minden szemantikai függvény a FabricDataFrame-ben vagy a FabricSeriesben található adatokra, adattípusokra és metaadatokra (például a Power BI adatkategóriáira) vonatkozó információkat használja annak meghatározásához, hogy mennyire relevánsak az éppen használt adatok.

A szemantikai függvényeket a rendszer automatikusan felderíti, amikor a @semantic_function dekoratőrrel jegyzetel. A szemantikai függvények a DataFrame-koncepcióra alkalmazott C#-bővítménymetszetekhez hasonlónak tekinthetők.

Szemantikai függvények automatikus kiegészítési javaslatai

A szemantikai függvények az automatikus kiegészítési javaslatokban érhetők el a FabricDataFrame vagy a FabricSeries használatakor. Az automatikus kiegészítés aktiválásához használja a Ctrl+Szóköz billentyűkombinációt.

Képernyőkép az automatikus kiegészítési javaslatok szemantikai függvényéről.

Az alábbi példakód manuálisan adja meg a FabricDataFrame metaadatait:

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()

Másik lehetőségként, ha szemantikai modellből olvas egy FabricDataFrame-be, a metaadatok automatikusan fel lesznek töltve.

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()

Beépített szemantikai függvények

A SemPy Python-kódtár beépített szemantikai függvények készletét biztosítja, amelyek a dobozon kívül érhetők el. Ezek a beépített függvények a következők:

  • is_holiday(...) Az ünnepek Python-csomag használatával tér vissza true , ha a dátum az adott országban ünnepnap.
  • to_geopandas(...)A FabricDataFrame-et GeoPandas GeoDataFrame-gé alakítja át.
  • parse_phonenumber(...) A Telefonszámok Python-csomag használatával elemzi a telefonszámokat az összetevőiben.
  • validators A validators Python-csomag használatával ellenőrzi az olyan gyakori adattípusokat, mint az e-mail- és hitelkártya-számok.

Egyéni szemantikai függvények

A szemantikai függvények bővíthetőségre vannak tervezve. Saját szemantikai függvényeket definiálhat a jegyzetfüzetben, vagy különálló Python-modulokként.

Ha jegyzetfüzeten kívüli szemantikai függvényt szeretne használni, deklarálja a szemantikai függvényt a modulon sempy.functions belül. Az alábbi példakód egy szemantikai függvény _is_capital definícióját mutatja be, amely akkor ad vissza true , ha egy város egy ország fővárosa.

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)

Az előző példakódban:

  • A col_country paramétereket és col_city a paramétereket a rendszer széljegyzetekkel, CityMatcherilletve azokkal fűzi CountryMatcher hozzá. Ez a megjegyzés lehetővé teszi a szemantikai függvény automatikus felderítését a megfelelő metaadatokat tartalmazó FabricDataFrame használatakor.
  • A függvény meghívása olyan szabványos adattípusokat is biztosít, mint a str, int, floatés datetime a szükséges bemeneti oszlopok definiálása.
  • Az első paraméter df típusjegyzete azt mutatja, hogy a függvény a FabricDataFrame-ekre alkalmazható a FabricSeries helyett.