Σημείωμα
Η πρόσβαση σε αυτήν τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να εισέλθετε ή να αλλάξετε καταλόγους.
Η πρόσβαση σε αυτήν τη σελίδα απαιτεί εξουσιοδότηση. Μπορείτε να δοκιμάσετε να αλλάξετε καταλόγους.
Ισχύει για:✅ τελικό σημείο ανάλυσης SQL στο Microsoft Fabric
Σε αυτό το εκπαιδευτικό βοήθημα, θα μάθετε πώς μπορείτε να δημιουργήσετε μια διοχέτευση Microsoft Fabric για την εκτέλεση έξυπνης συντήρησης πίνακα.
Αυτή η λύση καλεί την sys.sp_get_table_health_metrics αποθηκευμένη διαδικασία T-SQL στο τελικό σημείο ανάλυσης Lakehouse SQL, αξιολογεί το αποτέλεσμα και εκτελείται OPTIMIZE μόνο όταν ο πίνακας χρειάζεται πραγματικά συντήρηση. Αυτό το μοτίβο "check-then-act" αποτρέπει τις περιττές υπολογιστικές δαπάνες σε υγιείς πίνακες, διασφαλίζοντας παράλληλα ότι οι υποβαθμισμένοι πίνακες διατηρούνται αυτόματα.
Γιατί είναι απαραίτητη η συντήρηση
Οι πίνακες Lakehouse μπορούν να συγκεντρώσουν πάρα πολλά μικρά αρχεία Parquet με την πάροδο του χρόνου, γεγονός που βλάπτει την απόδοση των ερωτημάτων στο τελικό σημείο ανάλυσης SQL.
Αντί να εκτελείται OPTIMIZE σε ένα σταθερό χρονοδιάγραμμα ανεξάρτητα από την κατάσταση του πίνακα, αυτή η διοχέτευση λαμβάνει μια τεκμηριωμένη απόφαση: ελέγχει πρώτα την εύρυθμη λειτουργία του πίνακα και ενεργοποιεί τη βελτιστοποίηση μόνο όταν εντοπιστεί μια ανωμαλία.
Προϋποθέσεις
Προτού ξεκινήσετε, βεβαιωθείτε ότι έχετε:
- Ένας χώρος εργασίας Microsoft Fabric με δικαιώματα συμβάλλοντα ή υψηλότερα.
- Ένα Lakehouse σε αυτόν τον χώρο εργασίας που περιέχει τουλάχιστον έναν πίνακα Delta που θέλετε να παρακολουθήσετε. Αυτό το εκπαιδευτικό βοήθημα χρησιμοποιεί ένα Lakehouse με το όνομα
SalesDataLakehouse. - Εξοικείωση με διοχετεύσεις δεδομένων Fabric.
- Εξοικείωση με σημειωματάρια Fabric.
Δομή λύσης
Ο ολοκληρωμένος αγωγός έχει την εξής δομή:
-
Δραστηριότητα δέσμης ενεργειών: Εκτελείται
sp_get_table_health_metricsσε σχέση με τον πίνακα προορισμού και επιστρέφει μετρήσεις εύρυθμης λειτουργίας πίνακα ως δομημένη έξοδο. -
Εάν η δραστηριότητα συνθήκης: Διαβάζει
PotentialAnomalyTypeαπευθείας από την έξοδο του σεναρίου και ελέγχει εάν είναι μεγαλύτερη από το μηδέν. Για περισσότερες πληροφορίες σχετικά με τοPotentialAnomalyType, ανατρέξτε στην ενότητα Κωδικοί τύπου πιθανής ανωμαλίας. -
Δραστηριότητα σημειωματαρίου (μέσα στη διακλάδωση True ): Εκτελείται
OPTIMIZEστον πίνακα από ένα σημειωματάριο Spark.
Στο τέλος αυτού του σεμιναρίου, θα έχετε ένα σημειωματάριο που λαμβάνει παραμέτρους από τη διοχέτευση και βελτιστοποιεί έναν πίνακα όταν ενεργοποιείται.
Βήμα 1: Δημιουργία του σημειωματαρίου βελτιστοποίησης
Το σημειωματάριο δέχεται το Lakehouse προορισμού, το σχήμα και το όνομα του πίνακα ως παραμέτρους από τη διοχέτευση και, στη συνέχεια, εκτελείται OPTIMIZE χρησιμοποιώντας το Spark SQL.
- Στον χώρο εργασίας Fabric, επιλέξτε + Σημειωματάριο νέου στοιχείου>.
- Ονομάστε το σημειωματάριο Optimize-Table.
- Στην περιοχή Τοποθεσία, επιλέξτε το Lakehouse όπου είναι αποθηκευμένοι οι πίνακες που ελέγχετε. Αυτή η άσκηση χρησιμοποιεί ένα Lakehouse με το όνομα
SalesDataLakehouse. - Επιλέξτε Δημιουργία.
Προσθήκη του κελιού παραμέτρου
Το πρώτο κελί ορίζει τις μεταβλητές που παρακάμπτει η διοχέτευση κατά το χρόνο εκτέλεσης.
Στο πρώτο κελί, εισαγάγετε τις ακόλουθες παραμέτρους. Οι τιμές δεν είναι σημαντικές και η διοχέτευση τις παρακάμπτει κατά τον χρόνο εκτέλεσης.
# Parameters lakehouse_name = "<LakehouseName>" schema_name = "<SchemaName>" table_name = "<TableName>"Σημαντικό
Πώς λειτουργεί η παραμετροποίηση σε σημειωματάρια Fabric: Κατά τον χρόνο εκτέλεσης, το Fabric εισάγει ένα νέο κελί αμέσως μετά το κελί παραμέτρων, το οποίο αντιστοιχίζει εκ νέου αυτές τις μεταβλητές με τις τιμές που μεταβιβάζονται από τη διοχέτευση. Οι τιμές που ορίζετε εδώ αρχικοποιούν μόνο τις μεταβλητές και βελτιώνουν την αναγνωσιμότητα.
Επιλέξτε το μενού κελιού (...) >Εναλλαγή κελιού παραμέτρων για να επισημάνετε αυτό το κελί ως κελί παραμέτρων.
Προσθέστε το κελί OPTIMIZE
Η OPTIMIZE εντολή είναι μια εντολή Spark SQL, όχι μια εντολή T-SQL. Πρέπει να το εκτελέσετε σε περιβάλλοντα Spark, όπως σημειωματάρια, ορισμούς εργασιών Spark ή τη διασύνδεση συντήρησης Lakehouse. Το τελικό σημείο ανάλυσης SQL και το πρόγραμμα επεξεργασίας ερωτημάτων SQL αποθήκης δεν υποστηρίζουν αυτήν την εντολή απευθείας.
Στο δεύτερο κελί, πληκτρολογήστε:
full_name = f"{lakehouse_name}.{schema_name}.{table_name}" print(f"Optimizing {full_name} ...") result = spark.sql(f"OPTIMIZE {full_name}") result.show(truncate=False)Προσθέστε κελιά Markdown όπως απαιτείται για να τεκμηριώσετε σωστά το σημειωματάριο για άλλους χρήστες. Το οριστικοποιημένο σημειωματάριό σας θα πρέπει να έχει περίπου την εξής μορφή:
Σημείωση
Αυτό το παράδειγμα θεωρεί ένα Lakehouse με ενεργοποιημένα σχήματα. Προσαρμόστε ανάλογα το όνομα full_name τριών τμημάτων εάν δεν χρησιμοποιείτε σχήματα Lakehouse.
Βήμα 2: Δημιουργήστε τη διοχέτευση
Στον χώρο εργασίας Fabric, επιλέξτε + Διοχέτευση νέου στοιχείου>.
Ονομάστε τη διοχέτευση Check-and-Optimize-Table.
Επιλέξτε το φόντο καμβά διοχέτευσης και, στη συνέχεια, ανοίξτε την καρτέλα Παράμετροι . Προσθέστε τρεις παραμέτρους:
Ονομασία Τύπος Προεπιλεγμένη τιμή lakehouse_nameString SalesDataLakehouseschema_nameString dbotable_nameString FactSales
Βήμα 3: Προσθέστε τη δραστηριότητα δέσμης ενεργειών
Η δραστηριότητα δέσμης ενεργειών εκτελείται sys.sp_get_table_health_metrics στο τελικό σημείο ανάλυσης SQL και καταγράφει το αποτέλεσμα.
Σημαντικό
Χρησιμοποιήστε τη δραστηριότητα Δέσμη ενεργειών και όχι τη δραστηριότητα Αποθηκευμένη διαδικασία . Μόνο η δραστηριότητα δέσμης ενεργειών εκθέτει το σύνολο αποτελεσμάτων ως δομημένη έξοδο JSON που μπορούν να αναλύσουν οι κατάντη δραστηριότητες.
- Από την καρτέλα Δραστηριότητες , επιλέξτε Δέσμη ενεργειών για να την προσθέσετε στον καμβά.
- Ονομάστε το Check Table Health.
- Στην καρτέλα Ρυθμίσεις :
Σύνδεση: Επιλέξτε το τελικό σημείο ανάλυσης SQL για το Lakehouse σας. Εάν δεν εμφανίζεται στη λίστα, επιλέξτε Αναζήτηση όλων στο κάτω μέρος της αναπτυσσόμενης λίστας και, στη συνέχεια, εντοπίστε το τελικό σημείο ανάλυσης SQL του Lakehouse.
Τύπος δέσμης ενεργειών: Επιλέξτε Ερώτημα.
Δέσμη ενεργειών: Επιλέξτε Προσθήκη δυναμικού περιεχομένου και εισαγάγετε την ακόλουθη έκφραση:
@concat('EXEC sys.sp_get_table_health_metrics ''', pipeline().parameters.schema_name, '.', pipeline().parameters.table_name, '''')
Αυτή η έκφραση παράγει την εντολή SQL που εκτελεί την αποθηκευμένη διαδικασία στον πίνακα προορισμού, για παράδειγμα: EXEC sys.sp_get_table_health_metrics 'dbo.FactSales'.
Επαληθεύστε την έξοδο του σεναρίου
Εκτελέστε τη διοχέτευση μία φορά και επιθεωρήστε την έξοδο δραστηριότητας δέσμης ενεργειών . Βλέπετε ένα αντικείμενο JSON παρόμοιο με:
{
"resultSetCount": 1,
"resultSets": [
{
"rowCount": 1,
"rows": [
{
"PotentialAnomalyType": 3,
"PotentialAnomalyDescription": "Too many small files...",
"FileCount": 2688,
"...": "..."
}
]
}
]
}
Σημαντικό
Το πραγματικό αποτέλεσμα μπορεί να διαφέρει ανάλογα με την κατάσταση του πίνακά σας. Το κλειδί είναι ότι επιστρέφει τις στήλες που εκτίθενται από sys.sp_get_table_health_metrics.
Βήμα 4: Προσθέστε τη δραστηριότητα Συνθήκη Εάν
Η δραστηριότητα Συνθήκη Εάν διαβάζεται PotentialAnomalyType απευθείας από την έξοδο δραστηριότητας Δέσμη ενεργειών και λαμβάνει μια απόφαση με βάση το αποτέλεσμά της. Ακολουθήστε τα παρακάτω βήματα:
Από την καρτέλα Δραστηριότητες , επιλέξτε Εάν Συνθήκη για να προσθέσετε μια δραστηριότητα στον καμβά.
Ονομάστε το Check Anomaly.
Σχεδιάστε ένα βέλος επιτυχίας (πράσινο) από το Έλεγχος εύρυθμης λειτουργίας πίνακα για να ελέγξετε την ανωμαλία.
Στην καρτέλα Δραστηριότητες της δραστηριότητας Συνθήκη Εάν , ορίστε την Παράσταση σε:
@greater(int(activity('Check Table Health').output.resultSets[0].rows[0]['PotentialAnomalyType']), 0)
Αυτή η παράσταση διαβάζει την πρώτη γραμμή που επιστρέφεται από sys.sp_get_table_health_metricsτο , μετατρέπει PotentialAnomalyType σε έναν ακέραιο και αποτιμάται όταν true η τιμή είναι μεγαλύτερη από το μηδέν, γεγονός που υποδεικνύει μια ανωμαλία που εντοπίστηκε στον πίνακα προορισμού.
Βήμα 5: Προσθήκη της δραστηριότητας Σημειωματάριο (κλάδος True)
Με επιλεγμένη τη δραστηριότητα Εάν η συνθήκη , επιλέξτε Επεξεργασία (εικονίδιο μολυβιού) δίπλα στην επιλογή Αληθές. Ο καμβάς μεταβαίνει σε έναν δευτερεύοντα καμβά με εμβέλεια στον κλάδο True .
Σύρετε μια δραστηριότητα σημειωματαρίου στον δευτερεύοντα καμβά True.
Ονομάστε το Run OPTIMIZE.
Στην καρτέλα Ρυθμίσεις:
Σημειωματάριο: Επιλέξτε το σημειωματάριο Βελτιστοποίηση πίνακα που δημιουργήσατε στο Βήμα 1.
Αναπτύξτε τις Βασικές παραμέτρους και, στη συνέχεια, προσθέστε τρεις γραμμές:
Ονομασία Τύπος Τιμή lakehouse_nameString @pipeline().parameters.lakehouse_nameschema_nameString @pipeline().parameters.schema_nametable_nameString @pipeline().parameters.table_name
Οι τρεις τιμές στήλης ονόματος πρέπει να ταιριάζουν ακριβώς με τα ονόματα των μεταβλητών στο κελί παραμέτρων του σημειωματαρίου.
Σημείωση
Μπορείτε να αφήσετε κενές τις Ψευδείς δραστηριότητες . Η δραστηριότητα Συνθήκη If αντιμετωπίζει μια κενή διακλάδωση False ως no-op και αναφέρει τη διοχέτευση ως επιτυχημένη.
Η ολοκληρωμένη διοχέτευση θα πρέπει να μοιάζει με την ακόλουθη:
Βήμα 6: Επικύρωση και εκτέλεση
Επιλέξτε Επικύρωση στη γραμμή εργαλείων διοχέτευσης για να ελέγξετε για σφάλματα ρύθμισης παραμέτρων.
Επιλέξτε Εκτέλεση για να εκτελέσετε τη διοχέτευση με μη αυτόματο τρόπο.
Παρακολουθήστε το τρέξιμο και επιβεβαιώστε:
-
Ελέγξτε την εύρυθμη λειτουργία του πίνακα: επιθεωρήστε την έξοδο από αυτήν τη δραστηριότητα όταν εκτελείται. Θα πρέπει να δείτε την έξοδο από την
sys.sp_get_table_health_metricsαποθηκευμένη διαδικασία σε μορφή JSON. -
Έλεγχος ανωμαλίας: αξιολογεί σωστά διαβάζοντας
PotentialAnomalyTypeαπευθείας από την έξοδο του σεναρίου. -
Εκτελέστε το OPTIMIZE (μόνο εάν
PotentialAnomalyType > 0): εάν η δραστηριότητα Έλεγχος ανωμαλίας αξιολογηθεί ως True, ελέγξτε την είσοδο της δραστηριότητας Εκτέλεση OPTIMIZE για να επαληθεύσετε ότι χρησιμοποιεί τις σωστές παραμέτρους (όνομα Lakehouse, σχήμα και όνομα πίνακα) και ελέγξτε την έξοδο για να ελέγξετε τα μηνύματα από τηOPTIMIZEλειτουργία.
-
Ελέγξτε την εύρυθμη λειτουργία του πίνακα: επιθεωρήστε την έξοδο από αυτήν τη δραστηριότητα όταν εκτελείται. Θα πρέπει να δείτε την έξοδο από την
Εκκαθάριση των πόρων
Εάν δημιουργήσατε πόρους μόνο για αυτό το πρόγραμμα εκμάθησης και δεν τους χρειάζεστε πλέον, διαγράψτε τα ακόλουθα στοιχεία από τον χώρο εργασίας σας:
- Η διοχέτευση ελέγχου και βελτιστοποίησης πίνακα .
- Το σημειωματάριο "Βελτιστοποίηση πίνακα".