Semantiske funktioner
I denne artikel beskrives semantiske funktioner, og hvordan de kan hjælpe dataspecialister og datateknikere med at finde funktioner, der er relevante for den FabricDataFrame eller FabricSeries, de arbejder på. Semantiske funktioner er en del af funktionen Microsoft Fabric semantisk link.
For Spark 3.4 og nyere er den semantiske linkkernepakke tilgængelig i Fabric-standardkørslen, men den semantiske-link-funktionspakke, der indeholder semantisk funktionslogik (f.eks. is_holiday
), skal installeres manuelt. Hvis du vil opdatere til den nyeste version af SemPy-biblioteket (Python semantisk link), skal du køre følgende kommando:
%pip install -U semantic-link
En FabricDataFrame viser dynamisk semantiske funktioner baseret på den logik, som hver funktion definerer.
Funktionen vises f.eks. i forslagene til autofuldførelse, is_holiday
når du arbejder på en FabricDataFrame, der indeholder både en datetime-kolonne og en landekolonne.
Hver semantisk funktion bruger oplysninger om data, datatyper og metadata (f.eks. Power BI-datakategorier) i FabricDataFrame eller FabricSeries til at bestemme dens relevans for de bestemte data, du arbejder på.
Semantiske funktioner registreres automatisk, når de anmærkes med dekoratøren @semantic_function
.
Du kan tænke på semantiske funktioner som at være som C#-udvidelsesmetoder , der anvendes på DataFrame-konceptet.
Forslag til autofuldførelse af semantiske funktioner
Semantiske funktioner er tilgængelige i forslagene til autofuldførelse, når du arbejder med en FabricDataFrame eller FabricSeries. Brug Ctrl+Mellemrum til at udløse autofuldførelse.
Følgende kodeeksempel angiver manuelt metadataene for en 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()
Hvis du læser fra en semantisk model i en FabricDataFrame, udfyldes metadataene også automatisk.
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()
Indbyggede semantiske funktioner
SemPy Python-biblioteket indeholder et sæt indbyggede semantiske funktioner, der er tilgængelige. Disse indbyggede funktioner omfatter:
is_holiday(...)
bruger Python-pakken til ferier til at returneretrue
, hvis datoen er en helligdag i det angivne land.to_geopandas(...)
konverterer en FabricDataFrame til en GeoPandas GeoDataFrame.parse_phonenumber(...)
bruger Python-pakken med telefonnumre til at fortolke et telefonnummer i dets komponenter.validators
bruger Python-pakken validatorer til at validere almindelige datatyper, f.eks. mail- og kreditkortnumre.
Brugerdefinerede semantiske funktioner
Semantiske funktioner er designet til udvidelse. Du kan definere dine egne semantiske funktioner i din notesbog eller som separate Python-moduler.
Hvis du vil bruge en semantisk funktion uden for en notesbog, skal du deklarere den semantiske funktion i sempy.functions
modulet. I følgende kodeeksempel vises definitionen af en semantisk funktion _is_capital
, der returnerer true
, hvis en by er hovedstaden i et land.
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)
I det foregående kodeeksempel:
- Parametrene
col_country
ogcol_city
er henholdsvis kommenteret medCountryMatcher
ogCityMatcher
. Denne anmærkning gør det muligt automatisk at registrere den semantiske funktion, når du arbejder med en FabricDataFrame, der har de tilsvarende metadata. - Når du kalder funktionen, leveres der også standarddatatyper som
str
,int
,float
ogdatetime
for at definere påkrævede inputkolonner. - Typeanmærkningen for den første parameter
df
viser, at funktionen gælder for en FabricDataFrame i stedet for en FabricSeries.