Κοινή χρήση μέσω


Προηγμένη επαυξητική ανανέωση και δεδομένα σε πραγματικό χρόνο με το τελικό σημείο XMLA

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

Διαμερίσματα

Τα διαμερίσματα πίνακα μοντέλου σημασιολογίας δεν είναι ορατά και δεν είναι δυνατή η διαχείρισμά τους χρησιμοποιώντας το Power BI Desktop ή το Υπηρεσία Power BI. Για μοντέλα σε έναν χώρο εργασίας που έχει εκχωρηθεί σε Premium εκχωρημένους πόρους, η διαχείριση των διαμερισμάτων μπορεί να γίνει μέσω του τελικού σημείου XMLA, χρησιμοποιώντας εργαλεία όπως το SQL Server Management Studio (SSMS), το πρόγραμμα επεξεργασίας σε μορφή πίνακα ανοιχτού κώδικα, με δέσμη ενεργειών γλώσσας δέσμης ενεργειών μοντέλου σε μορφή πίνακα (TMSL) και μέσω προγραμματισμού με το Μοντέλο αντικειμένου σε μορφή πίνακα (TOM).

Κατά την πρώτη δημοσίευση ενός μοντέλου στην Υπηρεσία Power BI, κάθε πίνακας στο νέο μοντέλο διαθέτει ένα διαμέρισμα. Για πίνακες χωρίς πολιτική επαυξητικής ανανέωσης, αυτό το ένα διαμέρισμα περιέχει όλες τις γραμμές δεδομένων για αυτόν τον πίνακα, εκτός εάν έχουν εφαρμοστεί φίλτρα. Για πίνακες με πολιτική επαυξητικής ανανέωσης, αυτό το αρχικό διαμέρισμα υπάρχει μόνο επειδή το Power BI δεν έχει εφαρμόσει ακόμα την πολιτική. Ρυθμίζετε τις παραμέτρους του αρχικού διαμερίσματος στο Power BI Desktop όταν ορίζετε το φίλτρο εύρους ημερομηνίας/ώρας για τον πίνακά σας με βάση τις RangeStart παραμέτρους και RangeEnd καθώς και οποιαδήποτε άλλα φίλτρα εφαρμόζονται σε πρόγραμμα επεξεργασίας Power Query. Αυτό το αρχικό διαμέρισμα περιέχει μόνο τις γραμμές δεδομένων που ικανοποιούν τα κριτήρια φίλτρου σας.

Όταν εκτελείτε την πρώτη λειτουργία ανανέωσης, πίνακες χωρίς πολιτική επαυξητικής ανανέωσης ανανεώνουν όλες τις γραμμές που περιέχονται στο προεπιλεγμένο μοναδικό διαμέρισμα αυτού του πίνακα. Για πίνακες με πολιτική επαυξητικής ανανέωσης, δημιουργούνται αυτόματα διαμερίσματα ανανέωσης και ιστορικού και οι γραμμές φορτώνονται σε αυτά σύμφωνα με την ημερομηνία/ώρα για κάθε γραμμή. Εάν η πολιτική επαυξητικής ανανέωσης περιλαμβάνει τη λήψη δεδομένων σε πραγματικό χρόνο, το Power BI προσθέτει επίσης ένα διαμέρισμα DirectQuery στον πίνακα.

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

Τα διαμερίσματα δημιουργούνται για και ονομάζονται κατά υποδιαίρεση περιόδου: Έτη, τρίμηνα, μήνες και ημέρες. Τα πιο πρόσφατα διαμερίσματα, τα διαμερίσματα ανανέωσης , περιέχουν γραμμές στην περίοδο ανανέωσης που καθορίζετε στην πολιτική. Τα ιστορικά διαμερίσματα περιέχουν γραμμές κατά πλήρη περίοδο έως την περίοδο ανανέωσης. Εάν είναι ενεργοποιημένο το στοιχείο σε πραγματικό χρόνο, ένα διαμέρισμα DirectQuery λαμβάνει τυχόν αλλαγές δεδομένων που πραγματοποιήθηκαν μετά την ημερομηνία λήξης της περιόδου ανανέωσης. Οι λεπτομέρειες για τα διαμερίσματα ανανέωσης και ιστορικού εξαρτώνται από τις περιόδους ανανέωσης και ιστορικού (κατάστημα) που επιλέγετε κατά τον ορισμό της πολιτικής.

Για παράδειγμα, εάν η σημερινή ημερομηνία είναι η 2η Φεβρουαρίου 2021 και ο πίνακας FactInternetSales στην προέλευση δεδομένων περιέχει γραμμές μέχρι σήμερα, εάν η πολιτική μας καθορίζει τη συμπερίληψη αλλαγών σε πραγματικό χρόνο, την ανανέωση γραμμών στην τελευταία περίοδο ανανέωσης της τελευταίας ημέρας και την αποθήκευση γραμμών κατά την προηγούμενη περίοδο ιστορικού τριών ετών. Στη συνέχεια, με την πρώτη λειτουργία ανανέωσης, δημιουργείται ένα διαμέρισμα DirectQuery για αλλαγές στο μέλλον, δημιουργείται ένα νέο διαμέρισμα εισαγωγής για τις σημερινές γραμμές, δημιουργείται ένα ιστορικό διαμέρισμα για χθες, μια ολόκληρη περίοδο ημέρας, 1 Φεβρουαρίου 2021. Δημιουργείται ένα ιστορικό διαμέρισμα για την προηγούμενη περίοδο ολόκληρου του μήνα (Ιανουάριος 2021), δημιουργείται ένα ιστορικό διαμέρισμα για την προηγούμενη περίοδο ολόκληρου του έτους (2020) και δημιουργούνται ιστορικά διαμερίσματα για το 2019 και το 2018 ολόκληρες περιόδους έτους. Δεν δημιουργούνται διαμερίσματα ολόκληρου του τριμήνου, επειδή δεν έχουμε ολοκληρώσει ακόμα το πρώτο πλήρες τρίμηνο του 2021.

Diagram shows the partition naming granularity described in the text.

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

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

Ένα μοντέλο διατηρεί πάντα διαμερίσματα για ολόκληρη την περίοδο ιστορικού χώρου αποθήκευσης, καθώς και διαμερίσματα ολόκληρης της περιόδου κατά την τρέχουσα περίοδο ανανέωσης. Στο παράδειγμα, διατηρούνται τρία ολόκληρα έτη ιστορικών δεδομένων σε διαμερίσματα για το 2018, το 2019, το 2020, καθώς και διαμερίσματα για την περίοδο 2021Q101 μήνα, την περίοδο 2021Q10201 ημέρας και την τρέχουσα περίοδο ανανέωσης ημέρας. Καθώς το παράδειγμα διατηρεί τα ιστορικά δεδομένα για τρία έτη, το διαμέρισμα του 2018 διατηρείται μέχρι την πρώτη ανανέωση την 1η Ιανουαρίου 2022.

Με την επαυξητική ανανέωση του Power BI και τα δεδομένα σε πραγματικό χρόνο, η υπηρεσία χειρίζεται τη διαχείριση διαμερίσματος για εσάς με βάση την πολιτική. Παρόλο που η υπηρεσία μπορεί να χειριστεί όλη τη διαχείριση διαμερίσματος για εσάς, χρησιμοποιώντας εργαλεία μέσω του τελικού σημείου XMLA, μπορείτε να ανανεώσετε επιλεκτικά τα διαμερίσματα ξεχωριστά, διαδοχικά ή παράλληλα.

Διαχείριση ανανέωσης με το SQL Server Management Studio

Το SQL Server Management Studio (SSMS) μπορεί να χρησιμοποιηθεί για την προβολή και διαχείριση διαμερισμάτων που έχουν δημιουργηθεί από την εφαρμογή πολιτικών επαυξητικής ανανέωσης. Με τη χρήση του SSMS μπορείτε, για παράδειγμα, να ανανεώσετε ένα συγκεκριμένο ιστορικό διαμέρισμα που δεν περιέχεται στην περίοδο επαυξητικής ανανέωσης για την εκτέλεση μιας ενημέρωσης προγενέστερης ημερομηνίας χωρίς να χρειάζεται να ανανεώσετε όλα τα ιστορικά δεδομένα. Το SSMS μπορεί επίσης να χρησιμοποιηθεί κατά την εκκίνηση για φόρτωση ιστορικών δεδομένων για μεγάλα μοντέλα, προσθέτοντας/ανανεώνοντας σταδιακά ιστορικά διαμερίσματα σε δέσμες.

Screenshot shows the Partitions window in SSMS.

Παράκαμψη συμπεριφοράς επαυξητικής ανανέωσης

Με το SSMS, έχετε επίσης περισσότερο έλεγχο στον τρόπο κλήσης των ανανεώσεων χρησιμοποιώντας τη Γλώσσα δέσμης ενεργειών μοντέλου σε μορφή πίνακα και το Μοντέλο αντικειμένου σε μορφή πίνακα. Για παράδειγμα, στο SSMS, σε Εξερεύνηση αντικειμένων, κάντε δεξί κλικ σε έναν πίνακα και, στη συνέχεια, επιλέξτε το μενού Επεξεργασία πίνακα και, στη συνέχεια, επιλέξτε το κουμπί Δέσμη ενεργειών για να δημιουργήσετε μια εντολή ανανέωσης TMSL.

Screenshot shows the Script button in Process Table dialog.

Αυτές οι παράμετροι μπορούν να χρησιμοποιηθούν με την εντολή ανανέωσης TMSL για παράκαμψη της προεπιλεγμένης συμπεριφοράς επαυξητικής ανανέωσης:

  • applyRefreshPolicy. Εάν έχει οριστεί μια πολιτική επαυξητικής ανανέωσης σε έναν πίνακα, applyRefreshPolicy προσδιορίζεται εάν η πολιτική εφαρμόζεται ή όχι. Εάν η πολιτική δεν εφαρμοστεί, μια πλήρης λειτουργία αφήνει ορισμούς διαμερίσματος αμετάβλητους και όλα τα διαμερίσματα στον πίνακα ανανεώνονται πλήρως. Η προεπιλεγμένη τιμή είναι true.

  • effectiveDate. Εάν εφαρμόζεται μια πολιτική επαυξητικής ανανέωσης, πρέπει να γνωρίζει την τρέχουσα ημερομηνία για τον προσδιορισμό των περιοχών του κυλιόμενου παραθύρου για την επαυξητική ανανέωση και τις περιόδους ιστορικού. Η effectiveDate παράμετρος σάς επιτρέπει να παρακάμψετε την τρέχουσα ημερομηνία. Αυτή η παράμετρος είναι χρήσιμη για δοκιμές, επιδείξεις και επιχειρηματικά σενάρια όπου τα δεδομένα ανανεώνονται σταδιακά μέχρι μια ημερομηνία στο παρελθόν ή στο μέλλον, για παράδειγμα, προϋπολογισμούς στο μέλλον. Η προεπιλεγμένη τιμή είναι η τρέχουσα ημερομηνία.

{ 
  "refresh": {
    "type": "full",

    "applyRefreshPolicy": true,
    "effectiveDate": "12/31/2013",

    "objects": [
      {
        "database": "IR_AdventureWorks", 
        "table": "FactInternetSales" 
      }
    ]
  }
}

Για να μάθετε περισσότερα σχετικά με την αντικατάσταση της προεπιλεγμένης συμπεριφοράς επαυξητικής ανανέωσης με TMSL, ανατρέξτε στο θέμα Εντολή ανανέωσης.

Εξασφάλιση βέλτιστης απόδοσης

Με κάθε λειτουργία ανανέωσης, η Υπηρεσία Power BI μπορεί να στέλνει ερωτήματα προετοιμασίας στην προέλευση δεδομένων για κάθε διαμέρισμα επαυξητικής ανανέωσης. Ενδέχεται να μπορείτε να βελτιώσετε τις επιδόσεις επαυξητικής ανανέωσης μειώνοντας τον αριθμό των ερωτημάτων προετοιμασίας, εξασφαλίζοντας την ακόλουθη ρύθμιση παραμέτρων:

  • Ο πίνακας για τον οποίο ρυθμίζετε την επαυξητική ανανέωση πρέπει να λαμβάνει δεδομένα από μία μόνο προέλευση δεδομένων. Εάν ο πίνακας λαμβάνει δεδομένα από περισσότερες από μία προελεύσεις δεδομένων, ο αριθμός των ερωτημάτων που αποστέλλονται από την υπηρεσία για κάθε λειτουργία ανανέωσης πολλαπλασιάζεται με τον αριθμό των προελεύσεων δεδομένων, μειώνοντας ενδεχομένως τις επιδόσεις ανανέωσης. Βεβαιωθείτε ότι το ερώτημα για τον πίνακα επαυξητικής ανανέωσης αφορά μία μόνο προέλευση δεδομένων.
  • Για λύσεις που αφορούν τόσο την επαυξητική ανανέωση των διαμερισμάτων εισαγωγής όσο και τα δεδομένα σε πραγματικό χρόνο με το Direct Query, όλα τα διαμερίσματα πρέπει να υποβάλλουν ερωτήματα για δεδομένα από μία μόνο προέλευση δεδομένων.
  • Εάν το επιτρέπουν οι απαιτήσεις ασφαλείας σας, ορίστε τη ρύθμιση Επιπέδου προστασίας προσωπικών δεδομένων προέλευσης δεδομένων σε Εταιρικό ή Δημόσιο. Από προεπιλογή, το επίπεδο προστασίας προσωπικών δεδομένων είναι ιδιωτικό, ωστόσο, αυτό το επίπεδο μπορεί να αποτρέψει την ανταλλαγή δεδομένων με άλλες προελεύσεις cloud. Για να ορίσετε το επίπεδο προστασίας προσωπικών δεδομένων, επιλέξτε το μενού Περισσότερες επιλογές και, στη συνέχεια, επιλέξτε Ρυθμίσεις> Διαπιστευτικά>προέλευσης δεδομένων Επεξεργασία διαπιστευτηρίων Ρύθμιση επιπέδου προστασίας προσωπικών>δεδομένων για αυτήν την προέλευση δεδομένων. Εάν το επίπεδο προστασίας προσωπικών δεδομένων έχει οριστεί στο μοντέλο Power BI Desktop πριν από τη δημοσίευση στην υπηρεσία, δεν μεταφέρεται στην υπηρεσία κατά τη δημοσίευση. Πρέπει ακόμα να το ορίσετε στις ρυθμίσεις σημασιολογικού μοντέλου στην υπηρεσία. Για να μάθετε περισσότερα, ανατρέξτε στο θέμα Επίπεδα προστασίας προσωπικών δεδομένων.
  • Εάν χρησιμοποιείτε μια Πύλη δεδομένων εσωτερικής εγκατάστασης, βεβαιωθείτε ότι χρησιμοποιείτε την έκδοση 3000.77.3 ή νεότερη.

Αποτροπή χρονικών ορίου κατά την αρχική πλήρη ανανέωση

Μετά τη δημοσίευση στο Υπηρεσία Power BI, η αρχική λειτουργία πλήρους ανανέωσης για το μοντέλο δημιουργεί διαμερίσματα για τον πίνακα επαυξητικής ανανέωσης, φορτώνει και επεξεργάζεται ιστορικά δεδομένα για ολόκληρη την περίοδο που ορίζεται στην πολιτική επαυξητικής ανανέωσης. Για ορισμένα μοντέλα που φορτώνουν και επεξεργάζονται μεγάλους όγκους δεδομένων, το χρονικό διάστημα που χρειάζεται η αρχική λειτουργία ανανέωσης μπορεί να υπερβεί το χρονικό όριο ανανέωσης που επιβάλλεται από την υπηρεσία ή ένα χρονικό όριο ερωτήματος που επιβάλλεται από την προέλευση δεδομένων.

Η εκκίνηση της αρχικής λειτουργίας ανανέωσης επιτρέπει στην υπηρεσία να δημιουργεί αντικείμενα διαμερίσματος για τον πίνακα επαυξητικής ανανέωσης, αλλά δεν φορτώνει και επεξεργάζεται ιστορικά δεδομένα σε οποιοδήποτε από τα διαμερίσματα. Στη συνέχεια, το SSMS χρησιμοποιείται για την επιλεκτική επεξεργασία διαμερισμάτων. Ανάλογα με την ποσότητα των δεδομένων που θα φορτωθούν για κάθε διαμέρισμα, μπορείτε να επεξεργαστείτε κάθε διαμέρισμα διαδοχικά ή σε μικρές δέσμες για να μειώσετε τη δυνατότητα για ένα ή περισσότερα από αυτά τα διαμερίσματα να προκαλέσει λήξη χρονικού ορίου. Οι ακόλουθες μέθοδοι λειτουργούν για οποιαδήποτε προέλευση δεδομένων.

Εφαρμογή πολιτικής ανανέωσης

Το εργαλείο Tabular Editor 2 ανοιχτού κώδικα παρέχει έναν εύκολο τρόπο για την εκκίνηση μιας αρχικής λειτουργίας ανανέωσης. Μετά τη δημοσίευση ενός μοντέλου με μια πολιτική επαυξητικής ανανέωσης που έχει οριστεί για αυτό από το Power BI Desktop στην υπηρεσία, συνδεθείτε στο μοντέλο χρησιμοποιώντας το τελικό σημείο XMLA σε λειτουργία ανάγνωσης/εγγραφής. Εκτελέστε την Εφαρμογή πολιτικής ανανέωσης στον πίνακα επαυξητικής ανανέωσης. Με εφαρμοσμένη μόνο την πολιτική, δημιουργούνται διαμερίσματα, αλλά δεν φορτώνονται δεδομένα σε αυτά. Στη συνέχεια, συνδεθείτε με το SSMS για να ανανεώσετε τα διαμερίσματα διαδοχικά ή σε δέσμες για φόρτωση και επεξεργασία των δεδομένων. Για περισσότερες πληροφορίες, ανατρέξτε στο θέμα Επαυξητική ανανέωση στην τεκμηρίωση του Προγράμματος επεξεργασίας σε μορφή πίνακα.

Screenshot show the Tabular Editor with Apply Refresh Policy selected.

Φίλτρο Power Query για κενά διαμερίσματα

Πριν από τη δημοσίευση του μοντέλου στην υπηρεσία, σε πρόγραμμα επεξεργασίας Power Query, προσθέστε ένα άλλο φίλτρο στη ProductKey στήλη που φιλτράρει οποιαδήποτε τιμή εκτός από 0, αποτελεσματικά ή φιλτράροντας όλα τα δεδομένα από τον πίνακα FactInternetSales.

Screenshot shows the Power Query Editor with code that filters out the product key.

Αφού επιλέξετε Κλείσιμο και εφαρμογή σε πρόγραμμα επεξεργασίας Power Query, ορίζοντας την πολιτική επαυξητικής ανανέωσης και αποθηκεύοντας το μοντέλο, το μοντέλο δημοσιεύεται στην υπηρεσία. Από την υπηρεσία, η αρχική λειτουργία ανανέωσης εκτελείται στο μοντέλο. Τα διαμερίσματα για τον πίνακα FactInternetSales δημιουργούνται σύμφωνα με την πολιτική, αλλά δεν φορτώνονται και επεξεργάζονται δεδομένα καθώς όλα τα δεδομένα φιλτράρονται.

Μετά την ολοκλήρωση της αρχικής λειτουργίας ανανέωσης, στο πρόγραμμα επεξεργασίας Power Query, καταργείται το άλλο φίλτρο στη ProductKey στήλη. Αφού επιλέξετε Κλείσιμο και εφαρμογή σε πρόγραμμα επεξεργασίας Power Query και αποθηκεύσετε το μοντέλο, το μοντέλο δεν θα δημοσιευτεί ξανά. Εάν το μοντέλο δημοσιευτεί ξανά, αντικαθιστά τις ρυθμίσεις πολιτικής επαυξητικής ανανέωσης και επιβάλλει πλήρη ανανέωση στο μοντέλο όταν εκτελείται μια επόμενη λειτουργία ανανέωσης από την υπηρεσία. Αντί για αυτό, εκτελέστε μια ανάπτυξη μόνο μετα-δεδομένων χρησιμοποιώντας το Κιτ εργαλείων Διαχείριση κύκλου ζωής εφαρμογών (ALM) που καταργεί το φίλτρο στη ProductKey στήλη από το μοντέλο. Το SSMS μπορεί τότε να χρησιμοποιηθεί για επιλεκτική επεξεργασία διαμερισμάτων. Όταν όλα τα διαμερίσματα έχουν υποστεί πλήρη επεξεργασία, το οποίο πρέπει να περιλαμβάνει έναν επανυπολογισμό διαδικασίας σε όλα τα διαμερίσματα, από το SSMS, επακόλουθες λειτουργίες ανανέωσης στο μοντέλο από την ανανέωση υπηρεσίας μόνο τα διαμερίσματα επαυξητικής ανανέωσης.

Φιλοδώρημα

Μην παραλείψετε να δείτε βίντεο, ιστολόγια και πολλά άλλα που παρέχονται από την κοινότητα ειδικών BI του Power BI.

Για να μάθετε περισσότερα σχετικά με την επεξεργασία πινάκων και διαμερισμάτων από το SSMS, ανατρέξτε στο θέμα Επεξεργασία βάσης δεδομένων, πίνακα ή διαμερισμάτων (Υπηρεσίες ανάλυσης). Για να μάθετε περισσότερα σχετικά με την επεξεργασία μοντέλων, πινάκων και διαμερισμάτων με χρήση του TMSL, ανατρέξτε στο θέμα Εντολή ανανέωσης (TMSL).

Προσαρμοσμένα ερωτήματα για την ανίχνευση αλλαγών δεδομένων

Οι TMSL και TOM μπορούν να χρησιμοποιηθούν για την παράκαμψη της συμπεριφοράς αλλαγών δεδομένων που ανιχνεύεται. Αυτή η μέθοδος δεν μπορεί να χρησιμοποιηθεί μόνο για να αποφύγετε τη διατήρηση της στήλης τελευταίας ενημέρωσης στο cache της μνήμης, αλλά μπορεί να ενεργοποιήσει σενάρια όπου ένας πίνακας ρύθμισης παραμέτρων ή οδηγιών προετοιμάζεται με διαδικασίες εξαγωγής, μετασχηματισμού και φόρτωσης (ETL) για επισήμανση μόνο των διαμερισμάτων που πρέπει να ανανεωθούν. Αυτή η μέθοδος μπορεί να δημιουργήσει μια πιο αποτελεσματική διαδικασία επαυξητικής ανανέωσης όπου ανανεώνονται μόνο οι απαιτούμενες περίοδοι, ανεξάρτητα από το πόσο καιρό πραγματοποιήθηκαν οι ενημερώσεις δεδομένων.

Το pollingExpression προορίζεται να είναι μια ελαφριά παράσταση M ή όνομα ενός άλλου ερωτήματος M. Πρέπει να επιστρέψει μια ανυσματική τιμή και θα εκτελείται για κάθε διαμέρισμα. Εάν η τιμή που επιστρέφεται διαφέρει από την τελευταία φορά που πραγματοποιήθηκε μια επαυξητική ανανέωση, το διαμέρισμα επισημαίνεται για πλήρη επεξεργασία.

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

"refreshPolicy": {
    "policyType": "basic",
    "rollingWindowGranularity": "month",
    "rollingWindowPeriods": 120,
    "incrementalGranularity": "month",
    "incrementalPeriods": 120,
    "pollingExpression": "<M expression or name of custom polling query>",
    "sourceExpression": [
    "let ..."
    ]
}

Φιλοδώρημα

Μην παραλείψετε να δείτε βίντεο, ιστολόγια και πολλά άλλα που παρέχονται από την κοινότητα ειδικών BI του Power BI.

Ανάπτυξη μόνο μετα-δεδομένων

Όταν δημοσιεύετε μια νέα έκδοση ενός αρχείου .pbix από το Power BI Desktop σε έναν χώρο εργασίας, εάν υπάρχει ήδη ένα μοντέλο με το ίδιο όνομα, σας ζητείται να αντικαταστήσετε το υπάρχον μοντέλο.

Screenshot shows the Replace model dialog.

Σε ορισμένες περιπτώσεις, μπορεί να μην θέλετε να αντικαταστήσετε το μοντέλο, ειδικά με επαυξητική ανανέωση. Το μοντέλο στο Power BI Desktop μπορεί να είναι πολύ μικρότερο από αυτό της Υπηρεσία Power BI. Εάν στο μοντέλο στην Υπηρεσία Power BI έχει εφαρμοστεί μια πολιτική επαυξητικής ανανέωσης, μπορεί να υπάρχουν πολλά έτη ιστορικών δεδομένων που θα χαθούν σε περίπτωση αντικατάστασης του μοντέλου. Η ανανέωση όλων των ιστορικών δεδομένων μπορεί να διαρκέσει ώρες και να οδηγήσει σε χρόνο εκτός λειτουργίας του συστήματος για τους χρήστες.

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

Για χώρους εργασίας που έχουν εκχωρηθεί σε Premium εκχωρημένους πόρους που έχουν ρυθμιστεί για ανάγνωση/εγγραφή τελικού σημείου XMLA, τα συμβατά εργαλεία ενεργοποιούν την ανάπτυξη μόνο μετα-δεδομένων. Για παράδειγμα, το Κιτ εργαλείων ALM είναι ένα εργαλείο diff σχήματος για μοντέλα Power BI και μπορεί να χρησιμοποιηθεί μόνο για την εκτέλεση ανάπτυξης μετα-δεδομένων.

Κάντε λήψη και εγκαταστήστε την τελευταία έκδοση του κιτ εργαλείων ALM από το αποθετήριο δεδομένων Git των Υπηρεσιών ανάλυσης. Οδηγίες βήμα προς βήμα για τη χρήση του Κιτ εργαλείων ALM δεν περιλαμβάνονται στην τεκμηρίωση της Microsoft. Συνδέσεις τεκμηρίωσης κιτ εργαλείων ALM και πληροφορίες σχετικά με την υποστήριξη διατίθενται στην κορδέλα Βοήθεια . Για να εκτελέσετε μια ανάπτυξη μόνο μετα-δεδομένων, εκτελέστε μια σύγκριση και επιλέξτε την παρουσία Power BI Desktop που εκτελείται ως προέλευση και το υπάρχον μοντέλο στο Υπηρεσία Power BI ως προορισμό. Εξετάστε τις διαφορές που εμφανίζονται και παραλείψτε την ενημέρωση του πίνακα με διαμερίσματα επαυξητικής ανανέωσης ή χρησιμοποιήστε το παράθυρο διαλόγου Επιλογές για να διατηρήσετε τα διαμερίσματα για ενημερώσεις πίνακα. Επικυρώστε την επιλογή για να εξασφαλίσετε την ακεραιότητα του μοντέλου προορισμού και, στη συνέχεια, ενημερώστε το.

Screenshot shows the ALM Toolkit window.

Προσθήκη πολιτικής επαυξητικής ανανέωσης και δεδομένων σε πραγματικό χρόνο μέσω προγραμματισμού

Μπορείτε επίσης να χρησιμοποιήσετε τις TMSL και TOM για να προσθέσετε μια πολιτική επαυξητικής ανανέωσης σε ένα υπάρχον μοντέλο μέσω του τελικού σημείου XMLA.

Σημείωμα

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

Η διαδικασία περιλαμβάνει τα παρακάτω βήματα:

  1. Βεβαιωθείτε ότι το μοντέλο προορισμού έχει το απαιτούμενο ελάχιστο επίπεδο συμβατότητας. Στο SSMS, κάντε δεξί κλικ στο [όνομα μοντέλου]>Επίπεδο συμβατότητας ιδιοτήτων.> Για να αυξήσετε το επίπεδο συμβατότητας, χρησιμοποιήστε μια δέσμη ενεργειών createOrReplace TMSL ή ελέγξτε το παρακάτω δείγμα κώδικα TOM για ένα παράδειγμα.

    a. Import policy - 1550
    b. Hybrid policy - 1565
    
  2. Προσθέστε τις RangeStart παραμέτρους και RangeEnd στις παραστάσεις μοντέλου. Εάν είναι απαραίτητο, προσθέστε επίσης μια συνάρτηση για να μετατρέψετε τιμές ημερομηνίας/ώρας σε κλειδιά ημερομηνιών.

  3. Καθορίστε ένα RefreshPolicy αντικείμενο με την επιθυμητή αρχειοθέτηση (κυλιόμενο παράθυρο) και περιόδους επαυξητικής ανανέωσης, καθώς και μια παράσταση προέλευσης που φιλτράρει τον πίνακα προορισμού με βάση τις RangeStart παραμέτρους και RangeEnd . Ορίστε τη λειτουργία πολιτικής ανανέωσης σε Εισαγωγή ή Υβριδικό , ανάλογα με τις απαιτήσεις δεδομένων σε πραγματικό χρόνο. Το υβριδικό προκαλεί την προσθήκη ενός διαμερίσματος DirectQuery στον πίνακα από το Power BI για τη λήψη των πιο πρόσφατων αλλαγών από την προέλευση δεδομένων που προέκυψαν μετά την τελευταία ώρα ανανέωσης.

  4. Προσθέστε την πολιτική ανανέωσης στον πίνακα και εκτελέστε μια πλήρη ανανέωση, έτσι ώστε το Power BI να χωρίζει τον πίνακα σύμφωνα με τις απαιτήσεις σας.

Το ακόλουθο δείγμα κώδικα δείχνει πώς μπορείτε να εκτελέσετε τα προηγούμενα βήματα χρησιμοποιώντας την TOM. Εάν θέλετε να χρησιμοποιήσετε αυτό το δείγμα ως έχει, πρέπει να έχετε ένα αντίγραφο για τη βάση δεδομένων AdventureWorksDW και να εισαγάγετε τον πίνακα FactInternetSales σε ένα μοντέλο. Το δείγμα κώδικα υποθέτει ότι οι RangeStart παράμετροι και RangeEnd και η DateKey συνάρτηση δεν υπάρχουν στο μοντέλο. Απλώς εισαγάγετε τον πίνακα FactInternetSales και δημοσιεύστε το μοντέλο σε έναν χώρο εργασίας στο Power BI Premium. Στη συνέχεια, ενημερώστε το workspaceUrl έτσι ώστε το δείγμα κώδικα να μπορεί να συνδεθεί στο μοντέλο σας. Ενημερώστε τις περισσότερες γραμμές κώδικα όπως απαιτείται.

using System;
using TOM = Microsoft.AnalysisServices.Tabular;
namespace Hybrid_Tables
{
    class Program
    {
        static string workspaceUrl = "<Enter your Workspace URL here>";
        static string databaseName = "AdventureWorks";
        static string tableName = "FactInternetSales";
        static void Main(string[] args)
        {
            using (var server = new TOM.Server())
            {
                // Connect to the dataset.
                server.Connect(workspaceUrl);
                TOM.Database database = server.Databases.FindByName(databaseName);
                if (database == null)
                {
                    throw new ApplicationException("Database cannot be found!");
                }
                if(database.CompatibilityLevel < 1565)
                {
                    database.CompatibilityLevel = 1565;
                    database.Update();
                }
                TOM.Model model = database.Model;
                // Add RangeStart, RangeEnd, and DateKey function.
                model.Expressions.Add(new TOM.NamedExpression {
                    Name = "RangeStart",
                    Kind = TOM.ExpressionKind.M,
                    Expression = "#datetime(2021, 12, 30, 0, 0, 0) meta [IsParameterQuery=true, Type=\"DateTime\", IsParameterQueryRequired=true]"
                });
                model.Expressions.Add(new TOM.NamedExpression
                {
                    Name = "RangeEnd",
                    Kind = TOM.ExpressionKind.M,
                    Expression = "#datetime(2021, 12, 31, 0, 0, 0) meta [IsParameterQuery=true, Type=\"DateTime\", IsParameterQueryRequired=true]"
                });
                model.Expressions.Add(new TOM.NamedExpression
                {
                    Name = "DateKey",
                    Kind = TOM.ExpressionKind.M,
                    Expression =
                        "let\n" +
                        "    Source = (x as datetime) => Date.Year(x)*10000 + Date.Month(x)*100 + Date.Day(x)\n" +
                        "in\n" +
                        "    Source"
                });
                // Apply a RefreshPolicy with Real-Time to the target table.
                TOM.Table salesTable = model.Tables[tableName];
                TOM.RefreshPolicy hybridPolicy = new TOM.BasicRefreshPolicy
                {
                    Mode = TOM.RefreshPolicyMode.Hybrid,
                    IncrementalPeriodsOffset = -1,
                    RollingWindowPeriods = 1,
                    RollingWindowGranularity = TOM.RefreshGranularityType.Year,
                    IncrementalPeriods = 1,
                    IncrementalGranularity = TOM.RefreshGranularityType.Day,
                    SourceExpression =
                        "let\n" +
                        "    Source = Sql.Database(\"demopm.database.windows.net\", \"AdventureWorksDW\"),\n" +
                        "    dbo_FactInternetSales = Source{[Schema=\"dbo\",Item=\"FactInternetSales\"]}[Data],\n" +
                        "    #\"Filtered Rows\" = Table.SelectRows(dbo_FactInternetSales, each [OrderDateKey] >= DateKey(RangeStart) and [OrderDateKey] < DateKey(RangeEnd))\n" +
                        "in\n" +
                        "    #\"Filtered Rows\""
                };
                salesTable.RefreshPolicy = hybridPolicy;
                model.RequestRefresh(TOM.RefreshType.Full);
                model.SaveChanges();
            }
            Console.WriteLine("{0}{1}", Environment.NewLine, "Press [Enter] to exit...");
            Console.ReadLine();
        }
    }
}