Семантические функции
В этой статье описываются семантические функции и как они могут помочь специалистам по обработке и анализу данных обнаруживать функции, относящиеся к FabricDataFrame или FabricSeries, над которыми они работают. Семантические функции являются частью функции семантической связи Microsoft Fabric.
Для Spark 3.4 и более поздних версий пакет ядра семантической связи доступен в среде выполнения Fabric по умолчанию, но пакет функций семантики, включающий логику семантической функции (например is_holiday
, необходимо установить вручную). Чтобы обновить последнюю версию библиотеки семантики Python (SemPy), выполните следующую команду:
%pip install -U semantic-link
FabricDataFrame динамически предоставляет семантические функции на основе логики, определяемой каждой функцией.
Например, is_holiday
функция отображается в предложениях автозаполнения при работе с Кадром FabricDataFrame, который содержит как столбец datetime, так и столбец страны.
Каждая семантическая функция использует сведения о данных, типах данных и метаданных (например, категориях данных Power BI) в FabricDataFrame или FabricSeries, чтобы определить его релевантность для конкретных данных, над которыми вы работаете.
Семантические функции автоматически обнаруживаются при аннотировании с @semantic_function
помощью декоратора.
Вы можете рассматривать семантические функции как методы расширения C#, применяемые к концепции DataFrame.
Предложения автозавершения семантических функций
Семантические функции доступны в предложениях автозаполнения при работе с FabricDataFrame или FabricSeries. Используйте CTRL+ПРОБЕЛ, чтобы активировать автозавершение.
В следующем примере кода вручную указывается метаданные для 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()
Кроме того, при чтении из семантической модели в FabricDataFrame метаданные автоматически заполняются.
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()
Встроенные семантические функции
Библиотека Python SemPy предоставляет набор встроенных семантических функций, доступных вне поля. К этим встроенным функциям относятся:
is_holiday(...)
использует пакет Python для праздников, чтобы вернутьсяtrue
, если дата является праздником в данной стране.to_geopandas(...)
преобразует FabricDataFrame в GeoPandas GeoDataFrame.parse_phonenumber(...)
использует пакет Python для анализа номера телефона с его компонентами.validators
использует пакет проверки Python для проверки распространенных типов данных, таких как электронная почта и номера кредитной карты.
Пользовательские семантические функции
Семантические функции предназначены для расширения. Вы можете определить собственные семантические функции в записной книжке или как отдельные модули Python.
Чтобы использовать семантику вне записной книжки, объявите семантику функции в модуле sempy.functions
. В следующем примере кода показано определение семантической функции _is_capital
, возвращающей true
, если город является столицей страны.
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)
В предыдущем примере кода:
col_city
Иcol_country
параметры аннотируются иCountryMatcher
CityMatcher
соответственно. Эта заметка позволяет автоматически обнаруживать семантическую функцию при работе с Кадром FabricDataFrame с соответствующими метаданными.- Вызов функции также предоставляет стандартные типы данных, такие как
str
,float
int
иdatetime
для определения обязательных входных столбцов. - Заметка типа первого параметра
df
показывает, что функция применима к FabricDataFrame, а не FabricSeries.