Σημασιολογικές συναρτήσεις
Αυτό το άρθρο περιγράφει τις σημασιολογικές συναρτήσεις και πώς μπορούν να βοηθήσουν επιστήμονες δεδομένων και μηχανικούς δεδομένων να ανακαλύψουν συναρτήσεις που σχετίζονται με το FabricDataFrame ή το FabricSeries στα οποία εργάζονται. Οι σημασιολογικές συναρτήσεις αποτελούν μέρος της δυνατότητας σημασιολογίας του Microsoft Fabric.
Για το Spark 3.4 και νεότερες εκδόσεις, το πακέτο πυρήνα σημασιολογίας σύνδεσης είναι διαθέσιμο στον προεπιλεγμένο χρόνο εκτέλεσης Fabric, αλλά το πακέτο συναρτήσεων σημασιολογίας-σύνδεσης που περιλαμβάνει τη λογική συνάρτησης σημασιολογίας (όπως is_holiday
) πρέπει να εγκατασταθεί με μη αυτόματο τρόπο. Για να ενημερώσετε την πιο πρόσφατη έκδοση της βιβλιοθήκης σημασιολογίας Python (SemPy), εκτελέστε την ακόλουθη εντολή:
%pip install -U semantic-link
Ένα FabricDataFrame εκθέτει δυναμικά σημασιολογικές συναρτήσεις με βάση τη λογική που ορίζει κάθε συνάρτηση.
Για παράδειγμα, η is_holiday
συνάρτηση εμφανίζεται στις προτάσεις αυτόματης συμπλήρωσης όταν εργάζεστε σε ένα FabricDataFrame που περιέχει μια στήλη ημερομηνίας/ώρας και μια στήλη χώρας.
Κάθε συνάρτηση σημασιολογίας χρησιμοποιεί πληροφορίες σχετικά με τα δεδομένα, τους τύπους δεδομένων και τα μετα-δεδομένα (όπως κατηγορίες δεδομένων Power BI) στο FabricDataFrame ή fabricSeries για να προσδιορίσει τη συνάφειά της με τα συγκεκριμένα δεδομένα στα οποία εργάζεστε.
Οι σημασιολογικές συναρτήσεις εντοπίζονται αυτόματα όταν επισημαίνονται με τον @semantic_function
διακοσμητή.
Μπορείτε να θεωρήσετε τις σημασιολογικές συναρτήσεις ως σαν τις μεθόδους επέκτασης C# που εφαρμόζονται στην έννοια του DataFrame.
Προτάσεις αυτόματης συμπλήρωσης σημασιολογικών συναρτήσεων
Οι σημασιολογικές συναρτήσεις είναι διαθέσιμες στις προτάσεις αυτόματης συμπλήρωσης όταν εργάζεστε με ένα 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 επικυρώσεων για την επικύρωση κοινών τύπων δεδομένων, όπως οι αριθμοί ηλεκτρονικού ταχυδρομείου και πιστωτικής κάρτας.
Προσαρμοσμένες σημασιολογικές συναρτήσεις
Οι σημασιολογικές συναρτήσεις έχουν σχεδιαστεί για επεκτασιμότητα. Μπορείτε να ορίσετε τις δικές σας σημασιολογικές συναρτήσεις εντός του σημειωματάριού σας ή ως ξεχωριστές λειτουργικές μονάδες Python.
Για να χρησιμοποιήσετε μια συνάρτηση σημασιολογίας εκτός ενός σημειωματάριου, δηλώστε τη συνάρτηση σημασιολογίας εντός της εκπαιδευτικής ενότητας sempy.functions
. Το παρακάτω παράδειγμα κώδικα εμφανίζει τον ορισμό μιας σημασιολογικής συνάρτησης _is_capital
που επιστρέφει true
εάν μια πόλη είναι το κεφάλαιο μιας χώρας.
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
δείχνει ότι η συνάρτηση εφαρμόζεται σε ένα FabricDataFrame αντί για ένα FabricSeries.