Anlamsal işlevler

Bu makalede anlamsal işlevler ve veri bilimcilerinin ve veri mühendislerinin üzerinde çalıştıkları FabricDataFrame veya FabricSeries ile ilgili işlevleri bulmasına nasıl yardımcı olabilecekleri açıklanır. Anlam işlevleri, Microsoft Fabric semantik bağlantı özelliğinin bir parçasıdır.

Spark 3.4 ve üzeri için, semantik bağlantı çekirdek paketi varsayılan Doku çalışma zamanında kullanılabilir, ancak anlamsal işlev mantığını içeren semantik-link-functions paketinin (örneğin is_holiday) el ile yüklenmesi gerekir. Python semantik bağlantı (SemPy) kitaplığının en son sürümüne güncelleştirmek için aşağıdaki komutu çalıştırın:

%pip install -U semantic-link

FabricDataFrame, her işlevin tanımladığı mantığı temel alan anlamsal işlevleri dinamik olarak kullanıma sunar. Örneğin işlev, is_holiday hem tarih saat sütunu hem de ülke sütunu içeren bir FabricDataFrame üzerinde çalışırken otomatik tamamlama önerilerinde görünür.

Her anlam işlevi, üzerinde çalıştığınız belirli veriler ile ilgili olup olmadığını belirlemek için FabricDataFrame veya FabricSeries içindeki veriler, veri türleri ve meta veriler (Power BI veri kategorileri gibi) hakkındaki bilgileri kullanır.

Semantik işlevler, dekoratöre @semantic_function ek açıklama eklendiğinde otomatik olarak bulunur. Anlamsal işlevleri DataFrame kavramına uygulanan C# uzantı yöntemleri gibi düşünebilirsiniz.

Anlamsal işlevler otomatik tamamlama önerileri

Bir FabricDataFrame veya FabricSeries ile çalışırken otomatik tamamlama önerilerinde anlamsal işlevler kullanılabilir. Otomatik tamamlamayı tetikleme için Ctrl+Boşluk tuşlarını kullanın.

Otomatik tamamlama önerilerindeki anlamsal işlevlerin ekran görüntüsü.

Aşağıdaki kod örneği, FabricDataFrame için meta verileri el ile belirtir:

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

Alternatif olarak, bir anlam modelinden FabricDataFrame'e okursanız meta veriler otomatik olarak doldurulur.

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

Yerleşik semantik işlevler

SemPy Python kitaplığı, kullanıma hazır bir dizi yerleşik semantik işlev sağlar. Bu yerleşik işlevler şunlardır:

Özel anlamsal işlevler

Anlamsal işlevler genişletilebilirlik için tasarlanmıştır. Kendi anlamsal işlevlerinizi not defterinizde veya ayrı Python modülleri olarak tanımlayabilirsiniz.

Not defterinin dışında bir anlam işlevi kullanmak için modül içindeki sempy.functions anlamsal işlevi bildirin. Aşağıdaki kod örneği, bir şehir bir ülkenin başkentiyse döndüren true anlamsal işlevin _is_capital tanımını gösterir.

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)

Yukarıdaki kod örneğinde:

  • col_country ve col_city parametrelerine sırasıyla ve CityMatcherile CountryMatcher ek açıklama eklenir. Bu ek açıklama, karşılık gelen meta verileri içeren bir FabricDataFrame ile çalışırken semantik işlevin otomatik olarak bulunmasını sağlar.
  • işlevini çağırmak, gerekli giriş sütunlarını tanımlamak için , int, floatve datetime gibi strstandart veri türlerini de sağlar.
  • İlk parametrenin df tür ek açıklaması, işlevin FabricSeries yerine FabricDataFrame için geçerli olduğunu gösterir.