다음을 통해 공유


의미 체계 함수

이 문서에서는 의미 체계 함수와 데이터 과학자 및 데이터 엔지니어가 작업 중인 FabricDataFrame 또는 FabricSeries와 관련된 함수를 검색하는 데 어떻게 도움이 되는지 설명합니다. 의미 체계 함수는 Microsoft Fabric 의미 체계 링크 기능의 일부입니다.

Spark 3.4 이상의 경우 의미 체계 링크 코어 패키지는 기본 패브릭 런타임에서 사용할 수 있지만 의미 체계 함수 논리(예: is_holiday)를 포함하는 의미 체계-링크-함수 패키지는 수동으로 설치해야 합니다. SemPy(Python 의미 체계 링크) 라이브러리의 최신 버전으로 업데이트하려면 다음 명령을 실행합니다.

%pip install -U semantic-link

FabricDataFrame은 각 함수가 정의하는 논리에 따라 의미 체계 함수를 동적으로 노출합니다. 예를 들어 is_holiday 날짜/시간 열과 국가 열이 모두 포함된 FabricDataFrame에서 작업할 때 자동 완성 제안에 함수가 나타납니다.

각 의미 체계 함수는 FabricDataFrame 또는 FabricSeries의 데이터, 데이터 형식 및 메타데이터(예: Power BI 데이터 범주)에 대한 정보를 사용하여 작업 중인 특정 데이터와 관련성을 확인합니다.

의미 체계 함수는 데코레이터에 주석을 추가하면 @semantic_function 자동으로 검색됩니다. 의미 체계 함수는 DataFrame 개념에 적용되는 C# 확장 메서드와 같다고 생각할 수 있습니다.

의미 체계 함수 자동 완성 제안

의미 체계 함수는 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()

기본 제공 의미 체계 함수

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_city 매개 변수에는 col_country 각각 주석과 CityMatcher매개 변수가 주석으로 CountryMatcher 추가됩니다. 이 주석을 사용하면 해당 메타데이터가 있는 FabricDataFrame으로 작업할 때 의미 체계 함수를 자동으로 검색할 수 있습니다.
  • 함수를 호출하면 , intfloat및 같은 str표준 데이터 형식을 datetime 제공하고 필요한 입력 열을 정의합니다.
  • 첫 번째 매개 변수 df 의 형식 주석은 함수가 FabricSeries가 아닌 FabricDataFrame에 적용할 수 있음을 보여 줍니다.