Περιορισμοί ερωτημάτων: Όρια ανάθεσης και ερωτημάτων
Κατανόηση της ανάθεσης
Το Power Apps λειτουργεί καλύτερα με προέλευση δεδομένων υποστήριξης όταν ένα ερώτημα Power Fx μπορεί να μεταφραστεί πλήρως σε ισοδύναμο ερώτημα που μπορεί να εκτελεστεί στην προέλευση δεδομένων. Το Power Apps στέλνει ένα ερώτημα που κατανοεί η προέλευση δεδομένων, το ερώτημα εκτελείται στην προέλευση δεδομένων και τα αποτελέσματα του ερωτήματος επιστρέφονται στο Power Apps. Για παράδειγμα, η προέλευση δεδομένων μπορεί να κάνει την εργασία φιλτραρίσματος των δεδομένων στη προέλευση δεδομένων και να επιστρέφει μόνο τις γραμμές που πληρούν τα κριτήρια φίλτρου. Όταν λειτουργεί σωστά, λέμε ότι το ερώτημα έχει ανατεθεί στην προέλευση δεδομένων για να κάνει την εργασία του ερωτήματος.
Ωστόσο, τα ερωτήματα Power Fx δεν μπορούν πάντα να μεταφραστούν σε ισοδύναμα ερωτήματα σε όλες τις προελεύσεις δεδομένων. Για παράδειγμα, το Dataverse υποστηρίζει περισσότερες δυνατότητες ερωτημάτων από ό,τι το Excel. Το Dataverse υποστηρίζει τον τελεστή ερωτήματος 'in' (ιδιότητα μέλους) και το Excel όχι. Αναφέρουμε ότι το ερώτημα δεν έχει δυνατότητα ανάθεσης εάν ένα ερώτημα χρησιμοποιεί μια δυνατότητα την οποία δεν υποστηρίζει η προέλευση δεδομένων. Γενικά, εάν οποιοδήποτε τμήμα μιας παράστασης ερωτήματος δεν έχει δυνατότητα ανάθεσης, δεν αναθέτουμε κανένα μέρος του ερωτήματος.
Όταν ένα ερώτημα δεν έχει δυνατότητα ανάθεσης, το Power Apps λαμβάνει μόνο τις πρώτες 500 καρτέλες από την προέλευση δεδομένων και, στη συνέχεια, εκτελεί τις ενέργειες στο ερώτημα. Αυτό το όριο μπορεί να αυξηθεί σε 2.000 καρτέλες Η αλλαγή του ορίουPower Apps περιορίζει το μέγεθος του αποτελέσματος σε 500 καρτέλες για να διατηρηθούν οι καλές επιδόσεις του Power Apps. Διαπιστώσαμε μέσω πειραματισμού ότι σύνολα αποτελεσμάτων μεγαλύτερα από αυτά τα μεγέθη δημιουργούν προβλήματα επιδόσεων για την εφαρμογή σας και το Power Apps γενικότερα.
Ωστόσο, αυτός ο περιορισμός μπορεί να είναι ένα πρόβλημα, καθώς το ερώτημα ενδέχεται να επιστρέψει εσφαλμένα αποτελέσματα εάν τα δεδομένα στην προέλευση δεδομένων υπερβαίνει τις 500/2000 καρτέλες. Για παράδειγμα, εξετάστε το παράδειγμα όπου η προέλευση δεδομένων διαθέτει 10 εκατομμύρια καρτέλες και το ερώτημά σας πρέπει να λειτουργήσει στο τελευταίο μέρος των δεδομένων. (Για παράδειγμα, τα επώνυμα που ξεκινούν με 'Z') Ωστόσο, το ερώτημά σας διαθέτει έναν τελεστή χωρίς δυνατότητα ανάθεσης (για παράδειγμα, διακριτός.) Σε αυτήν την περίπτωση, θα λάβετε μόνο τις πρώτες 500/2000 καρτέλες και έχετε εσφαλμένα αποτελέσματα.
Δημιουργήστε τα ερωτήματά Power Fx σας χρησιμοποιώντας τους πίνακες με δυνατότητα ανάθεσης για την προέλευση δεδομένων. Θα πρέπει να χρησιμοποιείτε μόνο συναρτήσεις ερωτημάτων που μπορούν να ανατεθούν. Είναι ο μόνος τρόπος για να διατηρείτε την καλή λειτουργία της εφαρμογής σας και να βεβαιωθείτε ότι οι χρήστες έχουν πρόσβαση σε όλες τις πληροφορίες που χρειάζονται.
Λάβετε υπόψη τις προειδοποιήσεις ανάθεσης που καθορίζουν τα σημεία όπου δεν είναι δυνατή η ανάθεση. Εάν εργάζεστε με μικρά σύνολα δεδομένων (λιγότερες από 500 καρτέλες), μπορείτε να χρησιμοποιήσετε οποιαδήποτε προέλευση δεδομένων και οποιονδήποτε τύπο, καθώς η επεξεργασία μπορεί να πραγματοποιηθεί τοπικά από την εφαρμογή εάν δεν είναι δυνατή η ανάθεση του τύπου.
Σημείωμα
Οι προειδοποιήσεις ανάθεσης σας βοηθούν να διαχειρίζεστε την εφαρμογή σας, έτσι ώστε να έχει τα σωστά αποτελέσματα. Εάν τα δεδομένα στην προέλευση δεδομένων σας υπερβαίνει τις 500 καρτέλες και δεν είναι δυνατό να ανατεθεί μια συνάρτηση, το Power Fx θα επισημάνει τον τύπο με μια μπλε υπογράμμιση.
Προελεύσεις δεδομένων που μπορούν να ανατεθούν
Η ανάθεση υποστηρίζεται αποκλειστικά για ορισμένες προελεύσεις δεδομένων σε μορφή πίνακα. Εάν μια προέλευση δεδομένων υποστηρίζει την ανάθεση, η τεκμηρίωση σύνδεσης περιγράφει την εν λόγω υποστήριξη. Για παράδειγμα, αυτές οι προελεύσεις δεδομένων σε μορφή πίνακα είναι οι πιο δημοφιλείς και υποστηρίζουν την ανάθεση:
- Λειτουργίες Power Apps με δυνατότητα ανάθεσης και λειτουργίες για το Microsoft Dataverse
- Λειτουργίες Power Apps με δυνατότητα ανάθεσης και λειτουργίες για το SharePoint
- Λειτουργίες Power Apps με δυνατότητα ανάθεσης και λειτουργίες για τοSQL Server
- Λειτουργίες Power Apps με δυνατότητα ανάθεσης και λειτουργίες για το Salesforce
Τα εισαγόμενα βιβλία εργασίας του Excel (με χρήση της προέλευσης δεδομένων Προσθήκη στατικών δεδομένων στην εφαρμογή σας), οι συλλογές και οι πίνακες που είναι αποθηκευμένοι σε μεταβλητές περιβάλλοντος δεν απαιτούν ανάθεση. Όλα αυτά τα δεδομένα είναι ήδη στη μνήμη και μπορεί να εφαρμοστεί η πλήρης γλώσσα του Power Apps.
Συναρτήσεις με δυνατότητα ανάθεσης
Το επόμενο βήμα είναι να χρησιμοποιήσετε μόνο τους τύπους που μπορούν να ανατεθούν. Εδώ περιλαμβάνονται τα στοιχεία τύπων που μπορούν να ανατεθούν. Ωστόσο, κάθε προέλευση δεδομένων είναι διαφορετική και δεν υποστηρίζουν όλες όλα αυτά τα στοιχεία. Ελέγξτε για προειδοποιήσεις ανάθεσης στον συγκεκριμένο τύπο.
Συναρτήσεις φιλτραρίσματος
Οι συναρτήειςFilter, Search, First και LookUp μπορούν να ανατεθούν.
Με τις συναρτήσεις Filter και LookUp, μπορούν να χρησιμοποιηθούν οι ακόλουθες στήλες του πίνακα για επιλογή των κατάλληλων καρτελών:
- And (συμπεριλαμβανομένου του &&), Or (συμπεριλαμβανομένου του ||), Not (συμπεριλαμβανομένου του !)
- In
Σημείωμα
Το In έχει ανατεθεί μόνο για στήλες στη βασική προέλευση δεδομένων. Για παράδειγμα, εάν ο προέλευση δεδομένων είναι ο πίνακας Λογαριασμοί τότε το
Filter(Accounts, Name in ["name1", "name2"])
αναθέτει την προέλευση δεδομένων για αξιολόγηση. Ωστόσο, τοFilter(Accounts, PrimaryContact.Fullname in ["name1", "name2"])
δεν αναθέτει εφόσον η στήλη Ονοματεπώνυμο βρίσκεται σε διαφορετικό πίνακα (PrimaryContact) από το στοιχείο Λογαριασμοί. Η παράσταση αξιολογείται τοπικά. - =, <>, >=, <=, >, <
- +, -
- TrimEnds
- IsBlank
- StartsWith, EndsWith
- Τιμές σταθερών που είναι ίδιες σε όλες τις καρτέλες, όπως ιδιότητες στοιχείων ελέγχου και καθολικές μεταβλητές και μεταβλητές περιβάλλοντος.
Μπορείτε επίσης να χρησιμοποιήσετε τμήματα του τύπου σας που έχουν ως αποτέλεσμα μια τιμή σταθεράς για όλες τις καρτέλες. Για παράδειγμα, οι τύποι Left( Language(), 2 ), Date( 2019, 3, 31 ) και Today() δεν εξαρτώνται από τις στήλες της καρτέλας και επομένως επιστρέφουν την ίδια τιμή για όλες τις καρτέλες. Αυτές οι τιμές μπορούν να σταλούν στην προέλευση δεδομένων ως σταθερά και δεν θα αποκλείσουν την ανάθεση.
Η προηγούμενη λίστα δεν περιλαμβάνει αυτά τα σημαντικά στοιχεία:
- If
- *, /, Mod
- Λειτουργίες μετατροπής στήλης Κείμενο Τιμή
- Concatenate (συμπεριλαμβανομένου του &)
- ExactIn
- Συναρτήσεις χειρισμού συμβολοσειρών: Lower, Upper, Left, Mid, Len, ...
- Σήματα: Location, Acceleration, Compass, ...
- Αόριστες: Rand, ...
- Συλλογές
Περιορισμοί ερωτήματος
Επίπεδα αναζήτησης
Το Power Apps υποστηρίζει δύο επίπεδα αναζήτησης. Αυτό σημαίνει ότι μια παράσταση ερωτήματος Power Fx μπορεί να έχει - το πολύ - δύο συναρτήσεις αναζήτησης σε αυτήν. Αυτός ο περιορισμός είναι η διατήρηση των επιδόσεων. Εάν μια παράσταση ερωτήματος περιλαμβάνει μια αναζήτηση, το Power Apps πρώτα εκτελεί ένα ερώτημα για να πάρει τον βασικό πίνακα. Στη συνέχεια, εκτελεί ένα δεύτερο ερώτημα που επεκτείνει τον πρώτο πίνακα με τις πληροφορίες αναζήτησης. Υποστηρίζουμε ένα ακόμη επίπεδο πέραν του μέγιστου. Για εργασία χωρίς σύνδεση, ωστόσο, υποστηρίζουμε μόνο ένα επίπεδο ανάπτυξης αναζήτησης.
Αξιολόγηση έκφρασης - η ιδιότητα της οντότητας πρέπει να βρίσκεται στην αριστερή πλευρά "LHS" του τελεστή ισότητας
Είναι σημαντικό να τοποθετήσετε την ιδιότητα μιας οντότητας προς σύγκριση σε μια έκφραση στην αριστερή πλευρά "LHS" μιας εξίσωσης. Για επεξήγηση, στο παρακάτω παράδειγμα η ιδιότητα οντότητας Αναγνωριστικό επιχειρηματικής μονάδας.Όνομα είναι μια τιμή ιδιότητας και πρέπει να τοποθετηθεί στο LHS της προς αξιολόγηση έκφρασης. Η ακόλουθη παράσταση πετυχαίνει:
Filter(
Budgets,
'Business unit ID'.Name = LookUp(
Users,
'Primary Email' = User().Email,
'Business Unit'
).Name,
DataCardValue37.Selected.'Date Range String'='Date Range String'
)
Ωστόσο, αυτή η παράσταση όχι:
Filter(
Budgets,
LookUp(
Users,
'Primary Email' = User().Email,
'Business Unit'
).Name = 'Business unit ID'.Name,
'Date Range String'=DataCardValue37.Selected.'Date Range String'
)
Συναρτήσεις ταξινόμησης
Οι συναρτήσεις Sort και SortByColumns μπορούν να ανατεθούν.
Στο συνάρτηση Sort, ο τύπος μπορεί να είναι μόνο το όνομα μίας στήλης και δεν μπορεί να περιλαμβάνει άλλους τελεστές ή συναρτήσεις.
Συναρτήσεις συγκεντρωτικών αποτελεσμάτων
Ορισμένες συναρτήσεις συγκεντρωτικών τιμών μπορούν να ανατεθούν με βάση την υποστήριξη παρασκηνίου. Οι συναρτήσεις όπως Sum, Average, Min και Max μπορούν να ανατεθούν. Οι συναρτήσεις καταμέτρησης, όπως οι συναρτήσεις CountRows και Count μπορούν επίσης να ανατεθούν. Ωστόσο τα RemoveIf και UpdateIf έχουν περιορισμούς ανάθεσης. Προς το παρόν, μόνο ένας περιορισμένος αριθμός προελεύσεων δεδομένων υποστηρίζει την ανάθεση για αυτές τις συναρτήσεις. Για περισσότερες λεπτομέρειες, ανατρέξτε στη Λίστα ανάθεσης.
συναρτήσεις μη ανάθεσης
Όλες οι άλλες συναρτήσεις δεν υποστηρίζουν την ανάθεση, συμπεριλαμβανομένων των παρακάτω σημαντικών συναρτήσεων:
όρια μη ανάθεσης
Η επεξεργασία των τύπων που δεν είναι δυνατό να ανατεθούν θα γίνεται τοπικά. Η τοπική επεξεργασία επιτρέπει τη χρήση του πλήρους εύρους της γλώσσας τύπων του Power Apps. Ωστόσο, υπάρχει κάποιο κόστος: όλα τα δεδομένα πρέπει να μεταφερθούν στη συσκευή πρώτα, το οποίο μπορεί να περιλαμβάνει την ανάκτηση μεγάλου όγκου δεδομένων μέσω του δικτύου. Αυτό μπορεί να είναι χρονοβόρο, δίνοντας την εντύπωση ότι η εφαρμογή σας είναι αργή ή έχει πάψει να ανταποκρίνεται.
Για να αποφευχθεί κάτι τέτοιο, το Power Apps επιβάλλει ένα όριο όσον αφορά τον όγκο των δεδομένων που μπορούν να υποβληθούν σε επεξεργασία στον τοπικό υπολογιστή: 500 καρτέλες. Επιλέξαμε αυτόν τον αριθμό προκειμένου να εξακολουθήσετε να έχετε πλήρη πρόσβαση σε μικρά σύνολα δεδομένων και να έχετε τη δυνατότητα να περιορίσετε τη χρήση μεγάλων συνόλων δεδομένων, εξετάζοντας μερικά αποτελέσματα.
Προφανώς, πρέπει να λαμβάνεται φροντίδα κατά τη χρήση αυτής της λειτουργίας καθώς μπορεί να προκαλέσει σύγχυση στους χρήστες. Ας πάρουμε, για παράδειγμα, σκεφτείτε μια συνάρτηση Filter με έναν τύπο επιλογής που δεν είναι δυνατό να ανατεθεί, σε μια προέλευση δεδομένων που περιέχει ένα εκατομμύριο καρτέλες. Επειδή το φιλτράρισμα γίνεται τοπικά, σαρώνονται μόνο οι πρώτες 500 καρτέλες. Εάν η καρτέλα που θέλετε είναι η καρτέλα 501 ή η καρτέλα 500.001, δεν θα ληφθεί υπόψη και δεν θα επιστραφεί από τη συνάρτηση Filter.
Οι συναρτήσεις συγκεντρωτικών αποτελεσμάτων μπορούν επίσης να προκαλέσουν σύγχυση. Ας πάρουμε τη συνάρτηση Average σε μια στήλη της ίδιας προέλευσης δεδομένων με το ένα εκατομμύριο καρτέλες. Ο μέσος όρος δεν μπορεί να ανατεθεί σε αυτήν την περίπτωση, δεδομένου ότι η παράσταση δεν έχει ανατεθεί (βλ. την προηγούμενη σημείωση), επομένως μόνο οι πρώτες 500 καρτέλες σταθμίζονται για μέσο όρο. Πρέπει να δίνεται προσοχή ώστε μια μερική απάντηση να μην εκληφθεί εσφαλμένα ως πλήρης απάντηση από τον χρήστη της εφαρμογής σας.
Αλλαγή του ορίου
500 είναι ο προεπιλεγμένος αριθμός των καρτελών, αλλά μπορείτε να αλλάξετε αυτόν τον αριθμό για μια ολόκληρη εφαρμογή:
- Επιλέξτε Ρυθμίσεις.
- Στην περιοχή Γενικά, αλλάξτε τη ρύθμιση Όριο γραμμής δεδομένων από 1 σε 2000.
Σε ορισμένες περιπτώσεις, γνωρίζετε ότι η τιμή 2.000 (ή 1.000 ή 1.500) θα ικανοποιεί τις ανάγκες των σεναρίων σας. Με προσοχή, μπορείτε να αυξήσετε αυτόν τον αριθμό ώστε να ταιριάζει με το σενάριό σας. Καθώς αυξάνετε αυτόν τον αριθμό, οι επιδόσεις της εφαρμογής σας μπορεί να μειώνονται, ειδικά για μεγάλους πίνακες με πολλές στήλες. Ακόμη, η καλύτερη απάντηση είναι να αναθέτετε όσα περισσότερα μπορείτε.
Για να εξασφαλίσετε ότι η εφαρμογή σας μπορεί να κλιμακωθεί σε μεγάλα σύνολα δεδομένων, μειώστε αυτή τη ρύθμιση προς τα κάτω σε 1. Σε αυτή την περίπτωση, οτιδήποτε δεν μπορεί να ανατεθεί θα επιστρέφει μία μοναδική καρτέλα, η οποία θα πρέπει να είναι εύκολο να εντοπιστεί κατά τη δοκιμή της εφαρμογής σας. Αυτό μπορεί να σας βοηθήσει να αποφύγετε εκπλήξεις όταν προσπαθείτε να μεταφέρετε μια πρότυπη εφαρμογή στην παραγωγή.
Προειδοποιήσεις ανάθεσης
Για να είναι πιο εύκολο να γνωρίζετε τι ανατίθεται και τι δεν ανατίθεται, το Power Apps εμφανίζει προειδοποίηση (κίτρινο τρίγωνο) όταν δημιουργείτε έναν τύπο που περιέχει μια τιμή που δεν είναι δυνατό να ανατεθεί.
Προειδοποιήσεις ανάθεσης εμφανίζονται μόνο για τύπους που λειτουργούν σε προελεύσεις δεδομένων με δυνατότητα ανάθεσης. Εάν δεν βλέπετε μια προειδοποίηση και πιστεύετε ότι ο τύπος δεν ανατίθεται σωστά, ελέγξτε τον τύπο της προέλευσης δεδομένων σε σχέση με τη λίστα των προελεύσεων δεδομένων με δυνατότητα ανάθεσης παραπάνω σε αυτό το άρθρο.
Παραδείγματα
Για παράδειγμα, θα δημιουργήσετε αυτόματα μια εφαρμογή τριών οθονών που βασίζεται σε έναν πίνακα SQL Server που ονομάζεται [dbo].[Fruit]. Για πληροφορίες σχετικά με τον τρόπο δημιουργίας της εφαρμογής, μπορείτε να εφαρμόσετε παρόμοιες αρχές όπως στο άρθρο σχετικά με το Dataverse για SQL Server.
Η ιδιότητα Items της συλλογής ορίζεται σε έναν τύπο που περιέχει τις συναρτήσεις SortByColumns και Search, οι οποίες μπορούν να ανατεθούν.
Στο πλαίσιο αναζήτησης, πληκτρολογήστε "Apple".
Κοντά στο επάνω μέρος της οθόνης εμφανίζονται στιγμιαία κινούμενες τελείες, καθώς η εφαρμογή επικοινωνεί με τον SQL Server για να επεξεργαστεί την αίτηση αναζήτησης. Εμφανίζονται όλες οι καρτέλες που ικανοποιούν τα κριτήρια αναζήτησης, ακόμα και αν το αρχείο προέλευσης δεδομένων περιέχει εκατομμύρια καρτέλες.
Τα αποτελέσματα αναζήτησης περιλαμβάνουν "Apples" και "Pineapple" επειδή η συνάρτηση Αναζήτηση αναζητά οπουδήποτε σε μια στήλη κειμένου. Εάν θέλετε να βρείτε μόνο τις εγγραφές που περιέχουν τον όρο αναζήτησης στην αρχή του ονόματος του φρούτου, μπορείτε να χρησιμοποιήσετε μια άλλη συνάρτηση με δυνατότητα ανάθεσης, την Filter, με έναν πιο σύνθετο όρο αναζήτησης. (Για λόγους ευκολίας, καταργήστε την κλήση SortByColumns.)
Τα νέα αποτελέσματα περιλαμβάνουν "Apples" αλλά όχι "Pineapple". Ωστόσο, ένα κίτρινο τρίγωνο εμφανίζεται δίπλα στη συλλογή (και στη μικρογραφία οθόνης εάν η αριστερή γραμμή περιήγησης εμφανίζει μικρογραφίες) και θα εμφανιστεί μια μπλε, κυματιστή γραμμή κάτω από ένα τμήμα του τύπου. Κάθε ένα από αυτά τα στοιχεία υποδεικνύει μια προειδοποίηση. Εάν τοποθετήσετε τον δείκτη επάνω από το κίτρινο τρίγωνο δίπλα στη συλλογή, εμφανίζεται αυτό το μήνυμα:
Ο SQL Server είναι μια προέλευση δεδομένων με δυνατότητα ανάθεσης και η Filter είναι μια συνάρτηση με δυνατότητα ανάθεσης, ωστόσο, οι Mid και Len δεν είναι δυνατό να ανατεθούν σε οποιαδήποτε προέλευση δεδομένων.
Ωστόσο λειτούργησε, έτσι δεν είναι; Χμμ, περίπου. Και για αυτόν το λόγο βλέπετε μια προειδοποίηση και όχι μια κόκκινη, κυματιστή γραμμή.
- Εάν ο πίνακας περιέχει λιγότερες από 500 καρτέλες, ο τύπος λειτούργησε σωστά. Όλες οι καρτέλες μεταφέρθηκαν στη συσκευή και η συνάρτηση Filter εφαρμόστηκε τοπικά.
- Εάν ο πίνακας περιέχει περισσότερες από 500 καρτέλες, ο τύπος δεν θα επιστρέψει καρτέλες από την καρτέλα 501 και μετά, ακόμα και αν συμφωνούν με τα κριτήρια.
Δείτε επίσης
Αντίκτυπος της χρήσης συναρτήσεων χωρίς δυνατότητα ανάθεσης και ακατάλληλων ορίων γραμμών δεδομένων σε επιδόσεις
Συμβουλές και βέλτιστες πρακτικές για την απόδοση και για τη χρήση ανάθεσης