Sémantické funkce
Tento článek popisuje sémantické funkce a způsob, jak mohou datovým vědcům a datovým inženýrům pomoct zjišťovat funkce, které jsou relevantní pro objekt FabricDataFrame nebo FabricSeries, na kterých pracují. Sémantické funkce jsou součástí funkce sémantického propojení Microsoft Fabric.
Pro Spark 3.4 a novější je základní balíček sémantických odkazů k dispozici ve výchozím modulu runtime Fabric, ale balíček sémantic-link-functions, který obsahuje logiku sémantické funkce (například is_holiday
) je potřeba nainstalovat ručně. Pokud chcete aktualizovat na nejnovější verzi sémantické knihovny Pythonu (SemPy), spusťte následující příkaz:
%pip install -U semantic-link
A FabricDataFrame dynamicky zveřejňuje sémantické funkce na základě logiky, která každá funkce definuje.
Funkce se například is_holiday
zobrazí v návrzích automatického dokončování, když pracujete na objektu FabricDataFrame, který obsahuje sloupec datetime i sloupec země.
Každá sémantická funkce používá informace o datech, datových typech a metadatech (jako jsou kategorie dat Power BI) v objektu FabricDataFrame nebo FabricSeries k určení jeho relevance pro konkrétní data, na kterých pracujete.
Sémantické funkce se automaticky zjistí při označení dekorátorem @semantic_function
.
Sémantické funkce si můžete představit jako metody rozšíření jazyka C#použité v konceptu datového rámce.
Návrhy automatického dokončování sémantických funkcí
Sémantické funkce jsou k dispozici v návrzích automatického dokončování při práci s fabricDataFrame nebo FabricSeries. K aktivaci automatického dokončování použijte kombinaci kláves Ctrl+Mezerník.
Následující příklad kódu ručně určuje metadata objektu 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()
Případně pokud načtete z sémantického modelu do objektu FabricDataFrame, metadata se automaticky načtou.
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()
Předdefinované sémantické funkce
Knihovna SemPy Python poskytuje sadu předdefinovaných sémantických funkcí, které jsou k dispozici předem. Mezi předdefinované funkce patří:
is_holiday(...)
použije balíček Pythonu pro svátky , který se vrátítrue
, pokud je datum svátkem v dané zemi.to_geopandas(...)
převede prvek FabricDataFrame na GeoPandas GeoDataFrame.parse_phonenumber(...)
používá telefonní čísla balíčku Pythonu k analýze telefonního čísla do jejích součástí.validators
používá balíček validátorů Pythonu k ověření běžných datových typů, jako jsou e-maily a čísla platebních karet.
Vlastní sémantické funkce
Sémantické funkce jsou navržené pro rozšiřitelnost. V poznámkovém bloku nebo jako samostatné moduly Pythonu můžete definovat vlastní sémantické funkce.
Pokud chcete použít sémantickou funkci mimo poznámkový blok, deklarujte sémantickou funkci v modulu sempy.functions
. Následující příklad kódu ukazuje definici sémantické funkce _is_capital
, která vrátí true
, pokud je město hlavním městem země.
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)
V předchozím příkladu kódu:
- Parametry
col_country
jsoucol_city
opatřeny poznámkamiCountryMatcher
aCityMatcher
v uvedeném pořadí. Tato poznámka umožňuje, aby se sémantická funkce automaticky zjistila při práci s objektem FabricDataFrame, který má odpovídající metadata. - Volání funkce také poskytuje standardní datové typy, jako
str
je ,int
float
, adatetime
definovat požadované vstupní sloupce. - Poznámka typu prvního parametru
df
ukazuje, že funkce je použitelná pro objekt FabricDataFrame místo FabricSeries.