Semanttiset funktiot
Tässä artikkelissa kuvataan semanttisia funktioita ja sitä, miten ne voivat auttaa tietojenkäsittelyasiantuntijat ja tietoteknikot löytämään funktioita, jotka liittyvät heidän työstämäänsä FabricDataFrameen tai FabricSeriesiin. Semanttiset funktiot ovat osa Microsoft Fabricin semanttisen linkin ominaisuutta.
Spark 3.4:ssä ja tätä uudemmat versioissa semanttisen linkin ydinpaketti on saatavilla oletusarvoisessa Fabric-suorituspalvelussa, mutta semanttisen linkin funktiot-funktiopaketti, joka sisältää semanttisen funktion logiikan (kuten is_holiday
), on asennettava manuaalisesti. Päivitä Pythonin semanttinen linkki (SemPy) -kirjaston uusimpaan versioon suorittamalla seuraava komento:
%pip install -U semantic-link
FabricDataFrame paljastaa dynaamisesti semanttisia funktioita kunkin funktion määrittämän logiikan perusteella.
Esimerkiksi funktio näkyy automaattisen täydennyksen is_holiday
ehdotuksissa, kun käsittelet FabricDataFrame-kehystä, joka sisältää sekä datetime-sarakkeen että maasarakkeen.
Kukin semanttinen funktio käyttää FabricDataFrame- tai FabricSeries-kehyksissä tietoja tiedoista, tietotyypeistä ja metatiedoista (kuten Power BI -tietoluokista) niiden merkityksen määrittämiseksi, mitä käsittelet.
Semanttiset funktiot löydetään automaattisesti, kun niihin lisätään merkintä decoratorilla @semantic_function
.
Semanttiset funktiot ovat ikään kuin DataFrame-käsitteessä käytettyjä C#-laajennusmenetelmiä .
Semanttiset funktiot voivat täydentää ehdotuksia automaattisesti
Semanttiset funktiot ovat käytettävissä automaattisen täydennysehdotuksen kanssa, kun käytät FabricDataFrame- tai FabricSeries-kehyksiä. Käynnistä automaattinen täydennys painamalla Ctrl+välilyönti.
Seuraava koodiesimerkki määrittää manuaalisesti FabricDataFrame-kehyksen metatiedot:
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()
Vaihtoehtoisesti jos luet semanttisesta mallista FabricDataFrame-kehykseen, metatiedot täytetään automaattisesti.
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()
Sisäiset semanttiset funktiot
SemPy Python -kirjasto sisältää joukon valmiita semanttisia funktioita, jotka ovat käytettävissä valmiina. Näitä sisäisiä funktioita ovat muun muassa seuraavat:
is_holiday(...)
käyttää lomia Python-pakettia palatakseen,true
jos päivämäärä on juhlapäivä tietyssä maassa.to_geopandas(...)
muuntaa FabricDataFrame-kehyksen GeoPandas GeoDataFrame -kehykseksi.parse_phonenumber(...)
käyttää puhelinnumeroita Python-pakettia puhelinnumeron jäsentämiseksi sen komponentteihin.validators
käyttää vahvistajien Python-pakettia yhteisten tietotyyppien, kuten sähköpostin ja luottokorttien numeroiden, vahvistamiseen.
Mukautetut semanttiset funktiot
Semanttiset funktiot on suunniteltu laajennettavuutta varten. Voit määrittää omia semanttisia funktioita muistikirjassasi tai erillisinä Python-moduuleina.
Jos haluat käyttää semanttista toimintoa muistikirjan ulkopuolella, määritä semanttinen funktio moduulissa sempy.functions
. Seuraava koodiesimerkki näyttää semanttisen funktion _is_capital
määrityksen, joka palauttaa true
arvon, jos kaupunki on maan pääkaupunki.
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)
Edellisessä koodiesimerkissä:
- - ja
col_city
-col_country
parametreihin on lisättyCountryMatcher
- jaCityMatcher
-merkintöjä. Tämä huomautus sallii semanttisen funktion automaattisen löytämisen, kun käytät FabricDataFrame-kehyksessä vastaavia metatietoja. - Funktion kutsuminen tarjoaa myös vakiotietotyyppejä, kuten
str
,int
,float
jadatetime
vaadittujen syötesarakkeiden määrittämiseksi. - Ensimmäisen parametrin
df
tyyppihuomenna ilmaisee, että funktiota voidaan käyttää FabricDataFrame-kehykseen FabricSeries-ominaisuuden sijaan.