의미론적 함수
이 문서에서는 의미 체계 함수에 대해 설명하고 데이터 과학자와 데이터 엔지니어가 작업 중인 FabricDataFrame 또는 FabricSeries와 관련된 함수를 발견하는 데 어떻게 도움이 될 수 있는지 설명합니다. 의미 체계 함수는 Microsoft Fabric 의미 체계 링크 기능의 일부입니다.
Spark 3.4 이상 버전의 경우 의미 체계 링크 코어 패키지는 기본 Fabric 런타임에서 사용할 수 있지만, 의미 체계 함수 논리(예: is_holiday
)를 포함하는 semantic-link-functions 패키지는 수동으로 설치해야 합니다. Python 의미 체계 링크(SemPy) 라이브러리의 최신 버전으로 업데이트하려면 다음 명령을 실행합니다.
%pip install -U semantic-link
FabricDataFrame은 각 함수가 정의하는 논리에 따라 의미 체계 함수를 동적으로 노출합니다.
예를 들어 날짜/시간 열과 국가 열이 모두 포함된 FabricDataFrame에서 작업할 때 자동 완성 제안에 is_holiday
함수가 나타납니다.
각 의미 체계 함수는 FabricDataFrame 또는 FabricSeries의 데이터, 데이터 형식, 메타데이터(예: Power BI 데이터 범주)에 대한 정보를 사용하여 작업 중인 특정 데이터와 관련성을 확인합니다.
의미 체계 함수는 @semantic_function
데코레이터로 주석을 달면 자동으로 검색됩니다.
의미 체계 함수는 DataFrame 개념에 적용되는 C# 확장 메서드와 비슷하다고 생각할 수 있습니다.
의미 체계 함수 자동 완성 제안
FabricDataFrame 또는 FabricSeries로 작업할 때 자동 완성 제안으로 의미 체계 함수를 사용할 수 있습니다. Ctrl+Space를 사용하여 자동 완성을 트리거합니다.
다음 코드 예시에서는 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()
기본 제공 의미 체계 함수
SemPy Python 라이브러리는 바로 사용할 수 있는 기본 제공 의미 체계 함수 세트를 제공합니다. 이러한 기본 제공 함수는 다음과 같습니다.
is_holiday(...)
는 해당 국가에서 휴일인 경우 휴일 Python 패키지를 사용하여true
를 반환합니다.to_geopandas(...)
는 FabricDataFrame을 GeoPandas GeoDataFrame으로 변환합니다.parse_phonenumber(...)
는 전화 번호 Python 패키지를 사용하여 전화 번호를 해당 구성 요소로 구문 분석합니다.validators
는 유효성 검사기 Python 패키지를 사용하여 이메일 및 신용 카드 번호와 같은 일반적인 데이터 형식의 유효성을 검사합니다.
사용자 지정 의미 체계 함수
의미 체계 함수는 확장성을 위해 설계되었습니다. Notebook 내에서 또는 별도의 Python 모듈로 고유한 의미 체계 함수를 정의할 수 있습니다.
Notebook 외부에서 의미 체계 함수를 사용하려면 sempy.functions
모듈 내에서 의미 체계 함수를 선언해야 합니다. 다음 코드 예시에서는 도시가 국가의 수도인 경우 true
를 반환하는 의미 체계 함수 _is_capital
의 정의를 보여줍니다.
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_country
및col_city
매개 변수에는 각각CountryMatcher
및CityMatcher
로 주석이 달려 있습니다. 이 주석을 사용하면 해당 메타데이터가 있는 FabricDataFrame으로 작업할 때 의미 체계 함수를 자동으로 검색할 수 있습니다.- 함수를 호출하면 필수 입력 열을 정의하기 위해,
str
,int
,float
,datetime
같은 표준 데이터 형식도 제공됩니다. - 첫 번째 매개 변수
df
의 형식 주석은 해당 함수가 FabricSeries가 아닌 FabricDataFrame에 적용될 수 있음을 보여 줍니다.