Κοινοποίηση μέσω


Αναφορές μεταβλητών σε μια ροή δεδομένων

Σημείωμα

Αυτό το άρθρο εστιάζει σε μια αρχιτεκτονική λύσης από αρχιτεκτονικές λύσεων CI/CD και ALM (Application Lifecycle Management) για το Dataflow Gen2 που βασίζεται στην ενοποίηση των βιβλιοθηκών μεταβλητών και ισχύει μόνο για το Dataflow Gen2 με υποστήριξη CI/CD.

Οι βιβλιοθήκες μεταβλητών Fabric στο Dataflow Gen2 επιτρέπουν την κεντρική, επαναχρησιμοποιήσιμη διαχείριση ρύθμισης παραμέτρων σε όλα τα περιβάλλοντα. Με την αναφορά μεταβλητών απευθείας στις δέσμες ενεργειών ροής δεδομένων σας, μπορείτε να προσαρμόσετε δυναμικά τη συμπεριφορά χωρίς τιμές εσωτερικής κωδικοποίησης, κάτι που είναι ιδανικό για ροές εργασιών CI/CD. Αυτή η ενοποίηση απλοποιεί την ανάπτυξη σε όλα τα στάδια, επιτρέποντας την εισαγωγή τιμών για συγκεκριμένους χώρους εργασίας (όπως Lakehouse ή αναγνωριστικά χώρου εργασίας) κατά τον χρόνο εκτέλεσης, καθιστώντας τις ροές δεδομένων σας πιο προσαρμόσιμες και διατηρήσιμες.

Αυτό το εκπαιδευτικό βοήθημα σάς καθοδηγεί σε ένα παράδειγμα λύσης που χρησιμοποιεί αναφορές μεταβλητών σε μια ροή δεδομένων και σας δείχνει πώς μπορείτε να κάνετε τα εξής:

  • Ορισμός μεταβλητών: Χρήση των βιβλιοθηκών μεταβλητών Fabric και των διακριτών τύπων δεδομένων τους
  • Προέλευση βάσει μεταβλητών: Χρήση ενός Lakehouse με το δείγμα συνόλου δεδομένων WideWorldImpoters ως προέλευση
  • Λογική βάσει μεταβλητών: Χρήση των γραφικών στοιχείων εισόδου που είναι διαθέσιμα σε όλη την εμπειρία ροής δεδομένων
  • Προορισμός βάσει μεταβλητών: Χρήση αποθήκης ως προορισμού

Διάγραμμα μιας αρχιτεκτονικής λύσης που χρησιμοποιεί αναφορές μεταβλητών στο Dataflow Gen2.

Σημείωμα

Οι έννοιες που παρουσιάζονται σε αυτό το άρθρο είναι καθολικές για το Dataflow Gen2 και ισχύουν για άλλες προελεύσεις και προορισμούς πέρα από αυτούς που εμφανίζονται εδώ.

Το σενάριο

Στιγμιότυπο οθόνης του ερωτήματος με το όνομα dimension_city για το σενάριο μέσα στο Dataflow Gen2.

Η ροή δεδομένων που χρησιμοποιείται σε αυτό το σενάριο είναι απλή, αλλά οι βασικές αρχές που περιγράφονται ισχύουν για όλους τους τύπους ροών δεδομένων. Συνδέεται με τον πίνακα με το όνομα dimension_city από το δείγμα συνόλου δεδομένων Wide World Importers που είναι αποθηκευμένο σε ένα Lakehouse. Φιλτράρει τις γραμμές όπου η στήλη SalesTerritory ισούται με Νοτιοανατολικά και φορτώνει το αποτέλεσμα σε έναν νέο πίνακα που ονομάζεται Πόλη σε μια αποθήκη. Όλα τα στοιχεία—το Lakehouse, η Αποθήκη και η Ροή δεδομένων—βρίσκονται στον ίδιο χώρο εργασίας. Για να κάνετε τη ροή δεδομένων δυναμική, χρησιμοποιείτε μεταβλητές για να καθοδηγήσετε τον πίνακα προέλευσης, την τιμή φίλτρου και τον πίνακα προορισμού. Αυτές οι αλλαγές επιτρέπουν στη ροή δεδομένων να εκτελείται με τιμές αποθηκευμένες σε βιβλιοθήκες μεταβλητών Fabric αντί για ενσωματωμένες στον κώδικα.

Ορισμός μεταβλητών

Σημείωμα

Βεβαιωθείτε ότι έχετε ενεργοποιήσει τις βιβλιοθήκες μεταβλητών Fabric για τον οργανισμό ή την ομάδα ασφαλείας σας. Μάθετε περισσότερα σχετικά με το πώς μπορείτε να ξεκινήσετε με τις βιβλιοθήκες μεταβλητών.

Ως βέλτιστη πρακτική, συνιστάται πάντα να έχετε υπόψη σας ένα σχέδιο πριν δημιουργήσετε μια λύση και ποια στοιχεία από τη ροή δεδομένων σας προέρχονται δυναμικά από μια βιβλιοθήκη μεταβλητών. Παρόλο που μπορείτε να δημιουργήσετε πολλές βιβλιοθήκες μέσα σε έναν χώρο εργασίας, αυτό το παράδειγμα χρησιμοποιεί μία μόνο βιβλιοθήκη με το όνομα Η βιβλιοθήκη μου που περιέχει τις μεταβλητές που χρησιμοποιεί η ροή δεδομένων Gen2:

Όνομα μεταβλητής Δακτυλογραφώ Σκοπός
WorkspaceId Guid Χρησιμοποιείται για τις δέσμες ενεργειών προέλευσης δεδομένων και προορισμού στη ροή δεδομένων
LakehouseId Guid Καθορίζει το αναγνωριστικό του Lakehouse που χρησιμοποιείται ως προέλευση
Αναγνωριστικό αποθήκης Guid Καθορίζει το αναγνωριστικό της Αποθήκης που χρησιμοποιείται ως προορισμός
Έδαφος Συμβλοσειρά Ορίζει την τιμή που θα πρέπει να χρησιμοποιηθεί για την καθοδήγηση της λογικής φίλτρου στη ροή δεδομένων

Βεβαιωθείτε ότι έχετε ορίσει τις προεπιλεγμένες τιμές που αντιστοιχούν στο δικό σας περιβάλλον και, στη συνέχεια, αποθηκεύστε τη βιβλιοθήκη μεταβλητών.

Στιγμιότυπο οθόνης των βιβλιοθηκών μεταβλητών Fabric που μόλις δημιουργήσατε με μεταβλητές WorkspaceId, LakehouseId, WarehouseId και Territory.

Πηγή βάσει μεταβλητών

Όταν χρησιμοποιείτε οποιαδήποτε από τις συνδέσεις Fabric, όπως Lakehouse, Warehouse ή Fabric SQL, όλες ακολουθούν την ίδια δομή περιήγησης και χρησιμοποιούν την ίδια μορφή εισόδου. Σε αυτό το σενάριο, καμία από τις υποδοχές δεν απαιτεί μη αυτόματη εισαγωγή για τη δημιουργία σύνδεσης. Ωστόσο, κάθε μία εμφανίζει τον χώρο εργασίας και το στοιχείο με τα οποία συνδέεται μέσω των βημάτων περιήγησης στο ερώτημά σας. Για παράδειγμα, το πρώτο βήμα περιήγησης περιλαμβάνει το workspaceId με το οποίο συνδέεται το ερώτημα.

Στιγμιότυπο οθόνης του βήματος Περιήγηση 1 με την τιμή workspaceId στη γραμμή τύπων για το ερώτημα dimension_city.

Ο στόχος είναι να αντικαταστήσετε τις ενσωματωμένες τιμές στη γραμμή τύπων με μεταβλητές. Συγκεκριμένα, θέλετε να χρησιμοποιήσετε τις μεταβλητές WorkspaceId και LakehouseId για να οδηγήσετε αυτήν τη λογική. Πρώτα, πρέπει να φέρετε αυτές τις μεταβλητές στη ροή δεδομένων Gen2. Μια προτεινόμενη προσέγγιση είναι να δημιουργήσετε ερωτήματα για κάθε ξεχωριστή μεταβλητή για να συγκεντρώσετε και να διαχειριστείτε εύκολα τυχόν μεταβλητές που σκοπεύετε να χρησιμοποιήσετε. Για να το κάνετε αυτό, δημιουργήστε ένα κενό ερώτημα μεταβαίνοντας στην καταχώρηση Λήψη δεδομένων στην κορδέλα και επιλέγοντας την επιλογή Κενό ερώτημα από το αναπτυσσόμενο μενού.

Στιγμιότυπο οθόνης της καταχώρησης στη Λήψη δεδομένων στην Κεντρική καρτέλα για να δημιουργήσετε ένα κενό ερώτημα.

Αυτή η επιλογή φέρνει ένα νέο παράθυρο διαλόγου όπου μπορείτε να δείτε το κενό ερώτημα που δημιουργείται. Μπορείτε να επιλέξετε OK για να φέρετε αυτό το νέο κενό ερώτημα.

Στιγμιότυπο οθόνης του κενού παραθύρου διαλόγου ερωτήματος.

Αφού δημιουργηθεί το ερώτημά σας και εμφανιστεί στη ροή δεδομένων, μετονομάστε το σε WorkspaceId και αντικαταστήστε τον τύπο στο βήμα Προέλευση ως εξής:

Variable.ValueOrDefault("$(/**/My Library/WorkspaceId)", "Your Workspace ID")

Αυτό το σενάριο είναι βασικά αυτό που μπορεί να καθορίσει ποια βιβλιοθήκη και μεταβλητή θα ανακτήσει. Το δεύτερο όρισμα της Variable.ValueOrDefault συνάρτησης καθορίζει ποια τιμή θα δοθεί όταν δεν είναι δυνατή η λήψη μιας μεταβλητής.

Σημείωμα

Βεβαιωθείτε ότι έχετε αντικαταστήσει τη συμβολοσειρά "Your Workspace ID", το δεύτερο όρισμα της συνάρτησης, με τη δική σας αντίστοιχη τιμή στο περιβάλλον σας και αποθηκεύστε το ερώτημα.

Επαναλάβετε αυτήν τη διαδικασία για τη μεταβλητή LakehouseId και δημιουργήστε ένα ερώτημα με το ίδιο όνομα με τη μεταβλητή, αλλά χρησιμοποιήστε τον ακόλουθο τύπο για το βήμα Προέλευση:

Variable.ValueOrDefault("$(/**/My Library/LakehouseId)", "Your Lakehouse ID")

Σημείωμα

Βεβαιωθείτε ότι έχετε αντικαταστήσει τη συμβολοσειρά "Your Lakehouse ID", το δεύτερο όρισμα της συνάρτησης, με τη δική σας αντίστοιχη τιμή στο περιβάλλον σας και αποθηκεύστε το ερώτημα.

Στιγμιότυπο οθόνης που εμφανίζει ένα ερώτημα που δημιουργήθηκε πρόσφατα με το όνομα LakehouseId και WorkspaceId.

Μόλις δημιουργηθούν και τα δύο ερωτήματα, μπορείτε να ενημερώσετε τη δέσμη ενεργειών ερωτήματος για να τα χρησιμοποιήσετε αντί για τιμές με ενσωματωμένο κώδικα. Αυτό περιλαμβάνει τη μη αυτόματη αντικατάσταση των αρχικών τιμών στη γραμμή τύπων με αναφορές στα ερωτήματα WorkspaceId και LakehouseId. Το αρχικό σενάριο ερωτήματος μοιάζει με αυτό:

let
  Source = Lakehouse.Contents([]),
  #"Navigation 1" = Source{[workspaceId = "8b325b2b-ad69-4103-93ae-d6880d9f87c6"]}[Data],
  #"Navigation 2" = #"Navigation 1"{[lakehouseId = "2455f240-7345-4c8b-8524-c1abbf107d07"]}[Data],
  #"Navigation 3" = #"Navigation 2"{[Id = "dimension_city", ItemKind = "Table"]}[Data],
  #"Filtered rows" = Table.SelectRows(#"Navigation 3", each ([SalesTerritory] = "Southeast")),
  #"Removed columns" = Table.RemoveColumns(#"Filtered rows", {"ValidFrom", "ValidTo", "LineageKey"})
in
  #"Removed columns"

Αφού ενημερώσετε τις αναφορές στα βήματα περιήγησης, το νέο ενημερωμένο σενάριο μπορεί να μοιάζει με αυτό:

let
  Source = Lakehouse.Contents([]),
  #"Navigation 1" = Source{[workspaceId = WorkspaceId]}[Data],
  #"Navigation 2" = #"Navigation 1"{[lakehouseId = LakehouseId]}[Data],
  #"Navigation 3" = #"Navigation 2"{[Id = "dimension_city", ItemKind = "Table"]}[Data],
  #"Filtered rows" = Table.SelectRows(#"Navigation 3", each ([SalesTerritory] = "Southeast")),
  #"Removed columns" = Table.RemoveColumns(#"Filtered rows", {"ValidFrom", "ValidTo", "LineageKey"})
in
  #"Removed columns"

Επίσης, παρατηρείτε ότι εξακολουθεί να αξιολογεί σωστά την προεπισκόπηση δεδομένων στο πρόγραμμα επεξεργασίας ροής δεδομένων με τις άμεσες αναφορές που δημιουργούνται στην προβολή διαγράμματος μεταξύ όλων των εμπλεκόμενων ερωτημάτων:

Στιγμιότυπο οθόνης με ερωτήματα WorkspaceId και LakehouseId που αναφέρονται στο ερώτημα dimension_city.

Λογική που βασίζεται σε μεταβλητές

Τώρα που η προέλευση χρησιμοποιεί μεταβλητές, μπορείτε να εστιάσετε στην τροποποίηση της λογικής μετασχηματισμού της ροής δεδομένων. Σε αυτό το σενάριο, το βήμα φίλτρου είναι το σημείο όπου εφαρμόζεται η λογική και η τιμή που φιλτράρεται, η οποία είναι προς το παρόν κωδικοποιημένη ως Νοτιοανατολική, θα πρέπει να αντικατασταθεί με ένα ερώτημα που αναφέρεται σε μια μεταβλητή. Για να το κάνετε αυτό, επαναλάβετε την ίδια διαδικασία δημιουργίας ενός νέου κενού ερωτήματος και επαναπροσδιορίζετε τον τύπο του βήματος προέλευσης για να διατηρήσετε τη μεταβλητή για την Territory και να αλλάξετε επίσης το όνομα του ερωτήματος στο όνομα της μεταβλητής. Χρησιμοποιήστε το ακόλουθο σενάριο:

Variable.ValueOrDefault("$(/**/My Library/Territory)", "Mideast")

Στιγμιότυπο οθόνης του ερωτήματος Territory που δημιουργήθηκε στη ροή δεδομένων.

Δεδομένου ότι το βήμα φίλτρου δημιουργήθηκε χρησιμοποιώντας τη διεπαφή χρήστη, μπορείτε να μεταβείτε στο βήμα Φιλτραρισμένες σειρές, να το επιλέξετε δύο φορές και να λάβετε το παράθυρο διαλόγου ρυθμίσεων για το βήμα φίλτρου. Αυτός ο διάλογος σας επιτρέπει να επιλέξετε, μέσω του μικροεργαλείου εισαγωγής, εάν θέλετε να χρησιμοποιήσετε ένα ερώτημα αντί για μια στατική τιμή:

Στιγμιότυπο οθόνης του μικροεργαλείου εισόδου στο παράθυρο διαλόγου

Αφού ορίσετε την επιλογή Επιλογή ερωτήματος, θα εμφανιστεί μια αναπτυσσόμενη λίστα που θα εμφανίζει όλα τα ερωτήματα από τα οποία μπορείτε να επιλέξετε. Από αυτήν τη λίστα, μπορείτε να επιλέξετε το ερώτημα Territory που μόλις δημιουργήσατε.

Στιγμιότυπο οθόνης του ερωτήματος Territory που έχει επιλεγεί μέσα στο widget εισόδου από το παράθυρο διαλόγου filter rows.

Αφού επιλέξετε OK, παρατηρήστε ότι η προβολή διαγράμματος δημιούργησε ήδη τη σύνδεση μεταξύ του ερωτήματος Territory και του ερωτήματος που χρησιμοποιείται. Όχι μόνο αυτό, αλλά η προεπισκόπηση δεδομένων σάς δείχνει τώρα πληροφορίες για την επικράτεια της Μέσης Ανατολής .

Στιγμιότυπο οθόνης της προβολής διαγράμματος, των ρυθμίσεων ερωτήματος και της προεπισκόπησης δεδομένων για το ερώτημα dimension_city που εμφανίζει δεδομένα για το Mideast SalesTerritory.

Προορισμός βάσει μεταβλητών

Σημείωμα

Συνιστάται να εξοικειωθείτε με την έννοια των προορισμών δεδομένων στο Dataflow Gen2 και τον τρόπο δημιουργίας της δέσμης ενεργειών συνδυασμού δεδομένων από το άρθρο σχετικά με τους προορισμούς δεδομένων και τις διαχειριζόμενες ρυθμίσεις

Το τελευταίο στοιχείο που πρέπει να τροποποιηθεί σε αυτό το σενάριο είναι ο προορισμός. Ενώ οι πληροφορίες σχετικά με το ποιος είναι ο προορισμός δεδομένων μπορούν να βρεθούν στο πρόγραμμα επεξεργασίας ροής δεδομένων, για να τροποποιήσετε αυτό το τμήμα της ροής δεδομένων πρέπει να χρησιμοποιήσετε το Git ή το REST API.

Στιγμιότυπο οθόνης του αναδυόμενου στοιχείου που περιέχει τις ρυθμίσεις προορισμού δεδομένων για το ερώτημα dimension_city.

Αυτό το εκπαιδευτικό βοήθημα μας δείχνει πώς να κάνουμε τις αλλαγές μέσω του Git. Για να μπορέσουμε να κάνουμε αλλαγές μέσω του git, βεβαιωθείτε ότι:

  • Δημιουργήστε ένα ερώτημα για τη μεταβλητή WarehouseId: ακολουθήστε την ίδια διαδικασία που περιγράφεται σε προηγούμενες ενότητες για να δημιουργήσετε ένα νέο κενό ερώτημα και να αντικαταστήσετε τον τύπο για το βήμα Προέλευση να είναι:
Variable.ValueOrDefault("$(/**/My Library/WarehouseId)", "Your Warehouse ID")

Σημείωμα

Βεβαιωθείτε ότι έχετε αντικαταστήσει τη συμβολοσειρά "Your Warehouse ID", το δεύτερο όρισμα της συνάρτησης, με τη δική σας αντίστοιχη τιμή στο περιβάλλον σας και αποθηκεύστε το ερώτημα.

Στιγμιότυπο οθόνης όλων των ερωτημάτων στη ροή δεδομένων, συμπεριλαμβανομένου του ερωτήματος WarehouseId που μόλις δημιουργήσατε.

Σημαντικό

Βεβαιωθείτε ότι όλα τα ερωτήματά σας που περιέχουν μια μεταβλητή έχουν απενεργοποιημένη την προεργασία. Στιγμιότυπο οθόνης της επιλογής προεργασίας για ένα ερώτημα στο μενού περιβάλλοντος.

  • Αποθήκευση της ροής δεδομένων: χρησιμοποιήστε το κουμπί Αποθήκευση στην αρχική καρτέλα της κορδέλας.

Στιγμιότυπο οθόνης του κουμπιού αποθήκευσης ροής δεδομένων.

Μόλις αποθηκευτεί η ροή δεδομένων σας, βεβαιωθείτε ότι έχετε πραγματοποιήσει τις αλλαγές στο αποθετήριο Git και μεταβείτε στο αποθετήριο για να δείτε το αρχείο mashup.pq της ροής δεδομένων σας. Όταν εξετάζετε το αρχείο mashup.pq , αναζητήστε το ερώτημα με το οποίο συσχετίσατε τον προορισμό δεδομένων. Σε αυτό το σενάριο, το όνομα αυτού του ερωτήματος είναι dimension_city. Βλέπετε ένα χαρακτηριστικό καρτέλας πάνω από αυτό το όνομα ερωτήματος:

[DataDestinations = {[Definition = [Kind = "Reference", QueryName = "dimension_city_DataDestination", IsNewTarget = true], Settings = [Kind = "Manual", AllowCreation = true, ColumnSettings = [Mappings = {[SourceColumnName = "CityKey", DestinationColumnName = "CityKey"], [SourceColumnName = "WWICityID", DestinationColumnName = "WWICityID"], [SourceColumnName = "City", DestinationColumnName = "City"], [SourceColumnName = "StateProvince", DestinationColumnName = "StateProvince"], [SourceColumnName = "Country", DestinationColumnName = "Country"], [SourceColumnName = "Continent", DestinationColumnName = "Continent"], [SourceColumnName = "SalesTerritory", DestinationColumnName = "SalesTerritory"], [SourceColumnName = "Region", DestinationColumnName = "Region"], [SourceColumnName = "Subregion", DestinationColumnName = "Subregion"], [SourceColumnName = "Location", DestinationColumnName = "Location"], [SourceColumnName = "LatestRecordedPopulation", DestinationColumnName = "LatestRecordedPopulation"]}], DynamicSchema = false, UpdateMethod = [Kind = "Replace"], TypeSettings = [Kind = "Table"]]]}]
shared dimension_city = let

Αυτή η καρτέλα χαρακτηριστικού έχει ένα πεδίο με το όνομα QueryName, το οποίο περιέχει το όνομα του ερωτήματος που έχει όλη τη λογική προορισμού δεδομένων που σχετίζεται με αυτό το ερώτημα. Αυτό το ερώτημα έχει την εξής μορφή:

shared dimension_city_DataDestination = let
  Pattern = Fabric.Warehouse([HierarchicalNavigation = null, CreateNavigationProperties = false]),
  Navigation_1 = Pattern{[workspaceId = "8b325b2b-ad69-4103-93ae-d6880d9f87c6"]}[Data],
  Navigation_2 = Navigation_1{[warehouseId = "527ba9c1-4077-433f-a491-9ef370e9230a"]}[Data],
  TableNavigation = Navigation_2{[Item = "City", Schema = "dbo"]}?[Data]?
in
  TableNavigation

Παρατηρείτε ότι, παρόμοια με το σενάριο της πηγής για το Lakehouse, αυτό το σενάριο για τον προορισμό έχει ένα παρόμοιο μοτίβο όπου κωδικοποιεί το workspaceid που πρέπει να χρησιμοποιηθεί και επίσης το warehouseId. Αντικαταστήστε αυτές τις σταθερές τιμές με τα αναγνωριστικά των ερωτημάτων που δημιουργήσατε και το σενάριό σας θα έχει την εξής μορφή:

shared dimension_city_DataDestination = let
  Pattern = Fabric.Warehouse([HierarchicalNavigation = null, CreateNavigationProperties = false]),
  Navigation_1 = Pattern{[workspaceId = WorkspaceId]}[Data],
  Navigation_2 = Navigation_1{[warehouseId = WarehouseId]}[Data],
  TableNavigation = Navigation_2{[Item = "City", Schema = "dbo"]}?[Data]?
in
  TableNavigation

Τώρα μπορείτε να πραγματοποιήσετε αυτήν την αλλαγή και να ενημερώσετε τη ροή δεδομένων σας χρησιμοποιώντας τις αλλαγές από τη ροή δεδομένων σας μέσω της δυνατότητας ελέγχου προέλευσης στον χώρο εργασίας σας.

Τώρα μπορείτε να εκτελέσετε τη ροή δεδομένων σας, η οποία χρησιμοποιεί τιμές από βιβλιοθήκες μεταβλητών.