Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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. W takim przypadku 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. Zapytanie jest niedelegowalne , 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 2000 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 operatora bez możliwości delegowania, takiego jak „distinct”, otrzymasz tylko pierwsze 500 lub 2000 rekordów. Dlatego otrzymujesz nieprawidłowe wyniki.
Zapytania Power Fx można tworzyć przy użyciu tabel z możliwością delegowania dla źródła danych. Używaj tylko funkcji zapytań, które można delegować. Jest to jedyny sposób na zapewnienie prawidłowej wydajności aplikacji i upewnienie się, że użytkownicy uzyskują wszystkie potrzebne 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 (mniej niż 500 rekordów), możesz użyć dowolnego źródła danych i formuły, ponieważ aplikacja przetwarza dane lokalnie, jeśli formuła nie jest delegowana.
Uwaga
Ostrzeżenia dotyczące delegowania ułatwiają zarządzanie aplikacją tak, aby zwracała prawidłowe wyniki. Jeśli w źródle danych znajduje się więcej niż 500 rekordów, a funkcja nie jest delegowana, usługa Power Fx oznacza formułę niebieskim podkreśleniem.
Źródła danych z możliwością delegowania
Delegowanie działa tylko z niektórymi tabelarycznymi źródłami danych. Jeśli źródło danych obsługuje delegowanie, jego dokumentacja łącznika objaśnia tę obsługę. Te popularne tabelaryczne źródła danych obsługują delegowanie:
- Funkcje i operacje Power Apps z możliwością delegowania dla Microsoft Dataverse
- Funkcje i operacje Power Apps z możliwością delegowania dla SharePoint
- Funkcje i operacje Power Apps z możliwością delegowania dla SQL Server
- Funkcje i operacje Power Apps z możliwością delegowania 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. Te dane są już w pamięci, więc używasz pełnego języka usługi Power Apps.
Funkcje z możliwością delegowania
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
Filter, Search, First i LookUp to funkcje, które można delegować.
W ramach funkcji Filter i LookUp używaj następujących elementów z kolumnami tabeli do wybierania odpowiednich rekordów:
- And (z &&), Or (z ||), Not (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 kontekstowe.
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 elementów godnych uwagi:
- If
- *, /, Mod
- Operacje rzutowanie kolumn: Tekst, Wartość
- Concatenate (z &)
- ExactIn
- Funkcja manipulowania ciągami: Lower, Upper, Left, Mid, Len, ...
- Sygnały: Location, Acceleration, Compass, ...
- Nietrwałe: Rand,...
- Kolekcje
Delegowanie i kolekcje
W przypadku używania funkcji With, UpdateContextlub Sette funkcje tworzą kolekcje wewnętrznie. Kolekcje są statyczną listą rekordów przechowywanych w pamięci i nie mogą uczestniczyć w delegacji. 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. W przypadku scenariuszy offline obsługiwany jest tylko jeden poziom rozwinięcia 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'
)
To wyrażenie nie działa jednak:
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
Sort i SortByColumns to funkcje, które można delegować.
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 usuńIf i UpdateIf mają ograniczenia delegowania. Tylko ograniczona liczba źródeł danych obsługuje delegowanie dla tych funkcji. Aby uzyskać więcej informacji, zobacz Lista delegowania.
Funkcje bez możliwości delegowania
Wszystkie inne funkcje nie mogą delegować. Funkcje godne uwagi obejmują:
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. Istnieje jednak kompromis: wszystkie dane są najpierw dostarczane do urządzenia, co może oznaczać uzyskanie dużej ilości danych za pośrednictwem sieci. 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 nakłada ograniczenie na ilość danych, które mogą być przetwarzane lokalnie. Domyślnie jest to 500 rekordów. Ten limit umożliwia całkowite korzystanie z małych zestawów danych i pracę z dużymi zestawami danych przez wyświetlanie wyników częściowych.
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 żądany rekord to rekord 501 lub 500 001, filtr nie znajdzie ani nie zwróci go.
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 jesteś ostrożny, użytkownik może myśleć, że częściowa odpowiedź jest kompletną odpowiedzią.
Zmienianie limitu
Domyślna liczba rekordów to 500, ale możesz zmienić tę liczbę dla aplikacji:
- Wybierz Ustawienia.
- W obszarze Ogólne zmień ustawienie limitu wierszy danych z 1 na 2000.
W niektórych przypadkach 2000, 1000 lub 1500 rekordów wystarczy w danym scenariuszu. 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 upewnić się, że aplikacja jest skalowana do 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ć. Łatwiej jest wiedzieć, co to jest i nie jest delegowane.
Ostrzeżenia dotyczące delegowania są wyświetlane tylko w formułach, które używają delegowalnych źródeł danych. 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 źródeł danych z możliwością delegowania 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 funkcji z możliwością delegowania, 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.