Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Interpretacja delegowania
Power Apps najlepiej współpracuje z wewnętrznym źródłem danych, gdy zapytanie Power Fx jest w pełni tłumaczone na równoważne zapytanie uruchamiane w źródle danych. Power Apps wysyła zapytanie zrozumiałe dla źródła danych, źródło danych uruchamia zapytanie i Power Apps pobiera wyniki. Na przykład źródło danych filtruje dane i zwraca tylko te wiersze, które spełniają kryteria filtrowania. Gdy to zadziała, zapytanie jest delegowane do źródła danych.
Jednak zapytania Power Fx nie zawsze mogą być tłumaczone na równoważne zapytania w każdym źródle danych. Na przykład Dataverse obsługuje więcej funkcji zapytań niż program Excel. Dataverse obsługuje operator zapytania „in” (członkostwo), ale program Excel tego nie robi. Zapytania nie można delegować, jeśli używa funkcji, której źródło danych nie obsługuje. Jeśli dowolna część wyrażenia zapytania nie podlega delegowaniu, Power Apps nie deleguje żadnej części zapytania.
Gdy zapytanie nie podlega delegowaniu, Power Apps pobiera pierwsze 500 rekordów ze źródła danych, a następnie uruchamia akcje w zapytaniu. Ten limit można zwiększyć do 2 000 rekordów. Zmiana limituPower Apps ogranicza rozmiar wyniku do 500 rekordów, aby aplikacja działała dobrze. Większe zestawy wyników mogą powodować problemy z wydajnością aplikacji i Power Apps.
Jednak to ograniczenie może stanowić problem, ponieważ zapytanie może zwrócić niepoprawne wyniki, jeśli źródło danych ma więcej niż 500 lub 2000 rekordów. Jeśli na przykład źródło danych ma 10 milionów rekordów, a zapytanie musi działać na ostatniej części danych, takiej jak nazwiska rozpoczynające się od litery "Z", a zapytanie używa niedelegowalnego operatora, takiego jak distinct, otrzymasz tylko pierwsze 500 lub 2000 rekordów. Oznacza to, że otrzymujesz nieprawidłowe wyniki.
Zapytania Power Fx można tworzyć przy użyciu tabel delegowalnych dla źródła danych. Używaj tylko funkcji zapytań, które można delegować. Jest to jedyny sposób na utrzymanie dobrej wydajności aplikacji oraz upewnienia się, że użytkownicy mają wszystkie potrzebne im informacje.
Zwracaj uwagę na ostrzeżenia dotyczące delegowania, pokazujące miejsca, w których delegowanie nie jest możliwe. Jeśli pracujesz z małymi zestawami danych (do 500 rekordów), możesz użyć dowolnego źródła danych i dowolnych formuł, ponieważ aplikacja przetwarza dane lokalnie, jeśli okaże się, że nie można delegować formuły.
Notatka
Ostrzeżenia dotyczące delegowania ułatwiają zarządzanie aplikacją tak, aby zwracała prawidłowe wyniki. Jeśli dane w źródle danych przekraczają 500 rekordów i nie można delegować funkcji, Power Fx oznacza formułę niebieskim podkreśleniem.
Delegowalne źródła danych
Delegowanie działa tylko w przypadku niektórych tabelarycznych źródeł danych. Jeśli źródło danych obsługuje delegowanie, jego dokumentacja łącznika objaśnia tę obsługę. Na przykład te popularne tabelaryczne źródła danych obsługują delegację:
- Delegowane funkcje i operacje Power Apps dla Microsoft Dataverse
- Delegowane funkcje i operacje Power Apps dla SharePoint
- Delegowane funkcje i operacje Power Apps dla SQL Server
- Delegowane funkcje i operacje Power Apps dla Salesforce
Importowane skoroszyty (przy użyciu źródła danych Dodawanie statycznych danych do aplikacji ), kolekcje i tabele przechowywane w zmiennych kontekstu programu Excel nie potrzebują delegowania. Wszystkie te dane są już w pamięci, dlatego można zastosować pełny język usługi Power Apps.
Delegowalne funkcje
Używaj tylko formuł, które można delegować. W tym artykule wymieniono elementy formuły, które można delegować. Każde źródło danych jest inne i nie wszystkie obsługują wszystkie te elementy. Sprawdź ostrzeżenia dotyczące delegowania wyświetlane w przypadku formuły.
Funkcje filtrowania
Można delegować funkcje Filter, Search, First i LookUp.
W ramach funkcji Filter i LookUp używaj następujących elementów z kolumnami tabeli do wybierania odpowiednich rekordów:
- And (łącznie z &&), Or (łącznie z ||), Not (łącznie z !)
-
In> [!NOTE]
In jest delegowane tylko dla kolumn podstawowych źródło danych. Na przykład jeśli źródło danych to tabela Konta,
Filter(Accounts, Name in ["name1", "name2"])
deleguje do źródła danych do oceny. Ale elementFilter(Accounts, PrimaryContact.Fullname in ["name1", "name2"])
nie jest delegowany, ponieważ kolumna Imię i nazwisko znajduje się w innej tabeli (PrimaryContact) niż Konta. Wyrażenie jest obliczane lokalnie. - =, <>, >=, <=, >, <
- +, -
- TrimEnds
- IsBlank
- StartsWith, EndsWith
- Stałe wartości, które są takie same we wszystkich rekordach, takie jak właściwości kontrolki oraz zmienne globalne i zmienne kontekstu.
Można też użyć części formuł, które dają wartość stałą dla wszystkich rekordów. Na przykład Left( Language(), 2 ), Date( 2019, 3, 31 ) oraz Today() nie zależą od żadnej kolumny rekordu i dlatego zwracają tę samą wartość dla wszystkich rekordów. Te wartości są wysyłane do źródła danych jako stała i nie blokują delegowania.
Poprzednia lista nie zawiera następujących istotnych elementów.
- If
- *, /, Mod
- Stosowane operacje kolumny Text, Value
- Concatenate (łącznie z &)
- ExactIn
- Funkcja manipulowania ciągami: Lower, Upper, Left, Mid, Len, ...
- Sygnały: Location, Acceleration, Compass, ...
- Nietrwałe: Rand,...
- Kolekcje
Delegowanie i kolekcje
Kiedy używasz With
, UpdateContext
lub Set
, są tworzone kolekcje wewnętrzne. Kolekcje są statyczną listą rekordów w pamięci i nie uczestniczą w delegowaniu. Nie zostanie wyświetlone ostrzeżenie dotyczące delegowania.
Limity zapytań
Wyszukiwanie i rozwijanie poziomów
Power Apps umożliwia korzystanie z maksymalnie dwóch poziomów wyszukiwania. Wyrażenie zapytania Power Fx może zawierać maksymalnie dwie funkcje wyszukiwania w celu utrzymania wydajności. Gdy wyrażenie zapytania zawiera wyszukiwanie, Power Apps najpierw wysyła zapytanie do tabeli bazowej, a następnie uruchamia drugie zapytanie w celu rozszerzenia pierwszej tabeli o informacje wyszukiwania. Jeden dodatkowy poziom poza tym jest obsługiwany jako maksymalny. Jednak w scenariuszach offline obsługiwany jest tylko jeden poziom rozwijania wyszukiwania.
Rozwiń lub połącz maksymalnie 20 encji w jednym zapytaniu. Jeśli chcesz połączyć więcej niż 20 tabel w jednym zapytaniu, spróbuj utworzyć widok na serwerze danych, jeśli to możliwe.
Ocena wyrażenia - właściwość obiektu musi znajdować się po lewej stronie (LHS) operatora równości
Umieść właściwość elementu do porównania po lewej stronie równania (LHS). Na przykład w poniższym wyrażeniu właściwość encji 'Business unit ID'.Name jest na LHS i wyrażenie działa:
Filter(
Budgets,
'Business unit ID'.Name = LookUp(
Users,
'Primary Email' = User().Email,
'Business Unit'
).Name,
DataCardValue37.Selected.'Date Range String'='Date Range String'
)
Ale to wyrażenie nie działa:
Filter(
Budgets,
LookUp(
Users,
'Primary Email' = User().Email,
'Business Unit'
).Name = 'Business unit ID'.Name,
'Date Range String'=DataCardValue37.Selected.'Date Range String'
)
Funkcje sortowania
Można delegować funkcje Sort i SortByColumns.
W funkcji Sort formuła może zawierać tylko nazwę jednej kolumny i nie zawiera innych operatorów ani funkcji.
Funkcje agregujące
Niektóre funkcje agregujące mogą być delegowane na podstawie obsługi zaplecza. Można delegować funkcje Sum, Average, Min i Max. Można również delegować funkcje zliczania, takie jak CountRows i Count. Jednak RemoveIf i UpdateIf mają ograniczenia delegowania. Tylko ograniczona liczba źródeł danych obsługuje delegowanie dla tych funkcji. Aby uzyskać więcej informacji, zobacz Lista delegacji.
Funkcje bez możliwości delegowania
Żadnych innych funkcji nie można delegować. Dotyczy to na przykład następujących istotnych funkcji:
Limity bez możliwości delegowania
Formuły, których nie można delegować, są przetwarzane lokalnie. Przetwarzanie lokalne umożliwia użycie pełnego języka formuł Power Apps. Ale wymaga to kompromisu: wszystkie dane należy najpierw pobrać na urządzenie, co może oznaczać pobieranie dużej ilości danych przez sieć. Ten proces może zająć trochę czasu i sprawić, że aplikacja będzie wydawać się powolna lub nie odpowiadać.
Aby tego uniknąć, usługa Power Apps ogranicza ilość danych, które mogą być przetwarzane lokalnie do domyślnie 500 rekordów. Ten limit umożliwia całkowite użycie małych zestawów danych i uściślenie użycia dużych zestawów danych przez wyświetlanie częściowych wyników.
Zachowaj ostrożność podczas korzystania z tej funkcji, ponieważ może ona zmylić użytkowników. Jeśli na przykład używasz funkcji Filter z formułą wyboru, która nie może być delegowana, zastosowaną do źródła danych z milionem rekordów, skanowanie obejmie tylko 500 pierwszych rekordów. Jeśli wybranym rekordem jest rekord nr 501 lub 500 001, funkcja Filter go nie rozpatrzy ani nie zwróci.
Funkcje agregujące również mogą być mylące Na przykład, jeśli użyjesz funkcji Average dla kolumny w tym samym źródle danych zawierającym milion rekordów, nie będzie można delegować funkcji Average, ponieważ wyrażenie nie jest delegowane (zobacz wcześniejszą uwagę). Tylko pierwsze 500 rekordów jest uśrednianych. Jeśli nie będziesz ostrożny, użytkownik może pomyśleć, że częściowa odpowiedź jest kompletna.
Zmienianie limitu
Domyślna liczba rekordów to 500, ale możesz zmienić ten limit w całej aplikacji:
- Wybierz Ustawienia.
- W obszarze Ogólne zmień ustawienie limitu wierszy danych z 1 na 2000.
W niektórych przypadkach dla danego scenariusza wystarczy 2 000 (lub 1 000 lub 1 500) rekordów. Możesz zwiększyć tę liczbę zgodnie ze swoimi potrzebami, ale jeśli to zrobisz, wydajność aplikacji może się pogorszyć, zwłaszcza w przypadku szerokich tabel z wieloma kolumnami. Nadal najlepiej jest delegować jak najwięcej.
Aby zagwarantować możliwość skalowania aplikacji dla dużych zestawów danych, ustaw tę wartość na 1. Wszystkie elementy nie do delegowania będą wówczas zwracać tylko jeden rekord, co jest łatwe do wykrycia podczas testowania aplikacji. Pomoże to uniknąć niespodzianek podczas przenoszenia aplikacji utworzonej na potrzeby weryfikacji koncepcji do środowiska produkcyjnego.
Ostrzeżenia dotyczące delegowania
Power Apps wyświetla ostrzeżenie (żółty trójkąt) podczas tworzenia formuły, której nie można delegować. Ułatwia to ustalenie, co jest, a co nie jest delegowane.
Ostrzeżenia dotyczące delegowania są pokazywane tylko dla formuł, które używają źródeł danych z możliwością delegowania. Jeśli nie widzisz ostrzeżenia, ale uważasz, że formuła nie została delegowana, sprawdź typ źródła danych na liście delegowalnych źródeł danych we wcześniejszej części tego artykułu.
Przykłady
W tym przykładzie generujesz automatycznie aplikację trzyekranową na podstawie tabeli programu SQL Server o nazwie [dbo].[Fruit]. Aby dowiedzieć się, jak wygenerować aplikację, zastosuj podobne zasady z artykułu o usłudze Dataverse do programu SQL Server.
Właściwość Elementy galerii używa formuły z funkcjami SortByColumns i Search, które można delegować.
W polu wyszukiwania wprowadź „Apple”.
W górnej części ekranu na chwilę pojawią się poruszające się kropki, oznaczające, że aplikacja komunikuje się z programem SQL Server w celu przetworzenia żądania wyszukiwania. Zostaną wyświetlone wszystkie rekordy pasujące do kryteriów wyszukiwania, nawet jeśli źródło danych ma miliony rekordów.
Wyszukiwanie zwraca rekordy „Apples” i „Pineapple”, ponieważ funkcja Wyszukiwanie wyszukuje wartości w dowolnym miejscu w kolumnie tekstowej. Aby znaleźć tylko rekordy zawierające wyszukiwany ciąg na początku nazwy owocu, możesz użyć innej delegowalnej funkcji, Filtr, z dokładniejszymi kryteriami wyszukiwania. Dla uproszczenia usuń wywołanie funkcji SortByColumns.
Nowe wyniki zawierają rekord „Apples”, ale nie „Pineapple”. Żółty trójkąt jest wyświetlany obok galerii i na miniaturze ekranu, jeśli na lewym pasku nawigacyjnym są wyświetlane miniatury. Pod częścią formuły pojawi się niebieska, falista linia. Każdy z tych elementów oznacza ostrzeżenie. Gdy umieścisz wskaźnik myszy na żółtym trójkącie obok galerii, zobaczysz następujący komunikat:
SQL Server jest źródłem danych z możliwością delegowania, a Filter jest funkcją z możliwością delegowania. Ale funkcji Mid i Len nie można delegować do żadnego źródła danych.
Ale to działa, prawda? W pewnym sensie. Dlatego jest wyświetlane ostrzeżenie, a nie czerwona falista linia.
- Jeśli tabela ma mniej niż 500 rekordów, to ta formuła działa doskonale. Wszystkie rekordy są pobierane na urządzenie i funkcja Filter jest stosowana lokalnie.
- Jeśli jednak tabela ma ponad 500 rekordów, formuła nie zwraca rekordu nr 501 ani kolejnych, niezależnie od tego, czy spełniają one kryteria.