Napomena
Za pristup ovoj stranici potrebna je autorizacija. Možete se pokušati prijaviti ili promijeniti direktorije.
Za pristup ovoj stranici potrebna je autorizacija. Možete pokušati promijeniti direktorije.
Odnosi se na: Canvas apps
Copilot Studio
Desktop flows
Model-driven apps
Power Platform CLI
Dataverse functions
Power Pages
Izračunava vrijednosti i izvršava radnje za sve zapise u tablici.
Opis
Funkcija ForAll procjenjuje formulu za sve zapise u tablici. Formula može izračunati neku vrijednost i/ili izvoditi radnje, poput izmjene podataka ili rada s nekom vezom. Koristite funkciju With za procjenu formule za jedan zapis.
Pomoću funkcije Sequence i funkcije ForAll iterirajte ga na temelju broja.
Polja zapisa koja se trenutno obrađuju dostupna su unutar formule. Upotrijebite ThisRecord operator ili jednostavno spomenite polja imenom na isti način kao i bilo koju drugu vrijednost. Za imenovanje zapisa koji se obrađuje možete upotrijebiti i As operator, a to vam može pomoći učiniti formulu razumljivijom, a ugniježđene zapise pristupačnijima. Više informacija potražite u primjerima u nastavku i radu u djelokrugu zapisa.
Povratna vrijednost
Rezultat svakog procjenjivanja formule vraća se u tablicu istim redoslijedom kao ulazna tablica.
Ako je rezultat formule jedna vrijednost, rezultirajuća je tablica tablica s jednim stupcem. Ako je rezultat formule zapis, rezultirajuća tablica sadrži zapise s istim stupcima kao i zapis rezultata.
Ako je rezultat formule prazna vrijednost , u tablici s rezultatima nema zapisa za taj ulazni zapis. U tom slučaju u tablici rezultata ima manje zapisa nego izvorna tablica.
Poduzimanje akcije
Formula može uključivati funkcije koje poduzimaju akciju, poput izmjene zapisa nekog izvora podataka funkcijama Patch i Collect. Formula također može pozivati metode na vezama. Za svaki zapis može se izvesti više radnji korištenjem operatora ;. Tablicu koja je predmet funkcije nije ForAll moguće izmijeniti.
Prilikom pisanja formule imajte na umu da se zapisi mogu obrađivati bilo kojim redoslijedom i, kad je to moguće, paralelno. Prvi zapis tablice može se obraditi nakon posljednjeg zapisa.
Pazite da izbjegnete ovisnosti redoslijeda. Zbog toga ne možete koristiti funkcije UpdateContext, Clear i ClearCollectForAll unutar funkcije jer se jednostavno mogu koristiti za čuvanje varijabli koje bi mogle biti osjetljive na taj učinak. Možete koristiti funkciju Collect, ali redoslijed dodavanja zapisa nije definiran.
Nekoliko funkcija koje mijenjaju izvore podataka, uključujući Collect, Remove i Update, kao povratnu vrijednost vraćaju izmijenjeni izvor podataka. Te vraćene vrijednosti mogu biti velike i troše znatne resurse ako se vraćaju za svaki zapis tablice ForAll . Možda ćete primijetiti i ForAll da te povratne vrijednosti nisu ono što očekujete jer mogu raditi paralelno i mogu razdvojiti nuspojave tih funkcija od dobivanja njihovih rezultata. Ako se povratna vrijednost ForAll iz ne koristi, što je često slučaj s funkcijama izmjene podataka, povratna vrijednost neće se stvoriti i nema resursa ili narudžbe. No ako koristite rezultat funkcije a ForAll i jednu od funkcija koje vraća izvor podataka, pažljivo razmislite o strukturi rezultata i najprije ga isprobajte u malim skupovima podataka.
Alternative
Mnoge funkcije u aplikaciji Power Apps mogu obraditi više vrijednosti od jedne po jedne vrijednosti pomoću tablice s jednim stupcem. Primjerice, funkcija Len može obraditi tablicu tekstnih vrijednosti i vratiti tablicu duljina, na isti način kao i ForAll to. To može eliminirati potrebu za korištenje u ForAll mnogim slučajevima, može biti učinkovitiji, te je lakše čitati.
Drugo je razmatranje ForAll to da nije moguće razgraničenih, a druge funkcije mogu biti, kao što je Filtar.
Delegacija
Kad se koristi uz izvor podataka, ta se funkcija ne može delegirati. Dohvatit će se samo prvi dio izvora podataka, a zatim će se primijeniti funkcija. Rezultat možda neće predstavljati potpunu priču. Upozorenje će se možda pojaviti u vrijeme stvaranja sadržaja da bi vas podsjetilo na to ograničenje i predložilo prebacivanje na rješenja koja je moguće delegirati kad god je to moguće. Dodatne informacije potražite u odjeljku Pregled delegiranja.
Sintaksa
ForAll(Tablica, formula)
- Tablica - Obavezno. Tablica na koju se djeluje.
- Formula - Obavezno. Formula koju treba procijeniti za sve zapise tablice.
Primjeri
Izračuni
Sljedeći primjeri koriste Squaresizvor podataka:
Da biste stvorili ovaj izvor podataka kao zbirku, postavite svojstvo OnSelect kontrole Button prema ovoj formuli, otvorite način pretpregleda, a zatim odaberite gumb:
ClearCollect( Squares, [ "1", "4", "9" ] )
| Formula | Opis | Rezultat |
|---|---|---|
|
ForAll( Kvadrati, Sqrt( Vrijednost ) ) Sqrt( kvadrati ) |
Za sve zapise ulazne tablice izračunava kvadratni korijen stupca Value. Funkcija Sqrt može se koristiti i s tablicom s jednim stupcem, što omogućuje izvođenje ovog primjera bez korištenja ForAll. |
|
| ForAll( Kvadrati, snaga( vrijednost, 3 ) | Za sve zapise ulazne tablice diže stupac Value na treću potenciju. Funkcija Power ne podržava tablice s jednim stupcem. Stoga se ForAll mora koristiti u ovom slučaju. |
|
Korištenje veze
Sljedeći primjeri koriste Expressionsizvor podataka:
Da biste stvorili ovaj izvor podataka kao zbirku, postavite svojstvo OnSelect kontrole Button prema ovoj formuli, otvorite način pretpregleda, a zatim odaberite gumb:
ClearCollect( Expressions, [ "Hello", "Good morning", "Thank you", "Goodbye" ] )
U ovom primjeru se također koristi veza Microsoft Translator. Da biste ovu vezu dodali svojoj aplikaciji, pogledajte članak o tome kako upravljati vezama.
| Formula | Opis | Rezultat |
|---|---|---|
| ForAll(Izrazi, MicrosoftTranslator.Translate(vrijednost, "es")) | Za sve zapise u tablici Expressions prevedite sadržaj stupca Value na španjolski (skraćeno „es”). |
|
| ForAll(Izrazi, MicrosoftTranslator.Translate(Vrijednost, "fr")) | Za sve zapise u tablici Expressions prevedite sadržaj stupca Value na francuski (skraćeno „fr”). |
|
Kopiranje tablice
Ponekad trebate filtrirati, oblikovati, sortirati i manipulirati podatcima. Servis Power Apps pruža brojne funkcije za to, kao što su Filter, AddColumns i Sort. Power Apps tretira svaku tablicu kao vrijednost, što omogućuje da teče kroz formule i da se jednostavno koristi.
A ponekad želite kopirati ovaj rezultat za kasniju upotrebu ili želite premjestiti podatke s jednog izvora podataka na drugi. Aplikacija Power Apps koristi funkciju Collect za kopiranje podataka.
No, prije nego što napravite taj primjerak, dobro razmislite ako je potrebno. Mnoge se situacije mogu riješiti filtriranjem i oblikovanjem temeljnog izvora podataka na zahtjev pomoću formule. Neki od nedostataka izrade kopije su sljedeći:
- Dvije kopije istih podataka znače da jedna od njih može ispasti iz sinkronizacije.
- Izrada kopije može potrošiti velik dio računalne memorije, mrežnog pojasa i/ili vremena.
- Za većinu izvora podataka nije moguće delegiranje kopiranja, što ograničava količinu podataka koje je moguće premjestiti.
Sljedeći primjeri koriste Productsizvor podataka:
Da biste stvorili ovaj izvor podataka kao zbirku, postavite svojstvo OnSelect kontrole Button prema ovoj formuli, otvorite način pretpregleda, a zatim odaberite gumb:
ClearCollect( Products,
Table(
{ Product: "Widget", 'Quantity Requested': 6, 'Quantity Available': 3 },
{ Product: "Gadget", 'Quantity Requested': 10, 'Quantity Available': 20 },
{ Product: "Gizmo", 'Quantity Requested': 4, 'Quantity Available': 11 },
{ Product: "Apparatus", 'Quantity Requested': 7, 'Quantity Available': 6 }
)
)
Naš je cilj raditi s izvedenom tablicom koja sadrži samo one stavke gdje je zatraženo više nego što je dostupno i za koje je potrebno naručiti:
Ovaj zadatak možemo obaviti na nekoliko različitih načina, a svi oni daju jednak rezultat, uz različite prednosti i nedostatke.
Oblikovanje tablice na zahtjev
Ne pravite tu kopiju! Sljedeću formulu možemo upotrijebiti bilo gdje:
// Table shaping on demand, no need for a copy of the result
ShowColumns(
AddColumns(
Filter( Products, 'Quantity Requested' > 'Quantity Available' ),
"Quantity To Order", 'Quantity Requested' - 'Quantity Available'
),
"Product",
"Quantity To Order"
)
Djelokrug zapisa stvara se funkcijama Filter i AddColumns koje izvode operacije usporedbe, odnosno oduzimanja, s poljima 'Quantity Requested' i 'Quantity Available' svakog zapisa.
U ovom se primjeru funkcija Filter može delegirati. Ovo je važno jer se mogu pronaći svi proizvodi koji zadovoljavaju kriterije, čak i ako je to samo nekoliko zapisa u tablici koja ih sadrži milijune. Trenutno nije moguće delegirani ShowColumns i AddColumns , pa je stvarni broj proizvoda koje je potrebno naručiti ograničen. Ako znate da je veličina ovog rezultata uvijek relativno mala, taj je pristup u redu.
A budući da nismo stvorili kopiju, nema dodatne kopije informacija za upravljanje ili zasiжenih podataka.
ForAll na zahtjev
Drugi je pristup korištenje funkcije ForAll za zamjenu funkcija za oblikovanje tablice:
ForAll( Products,
If( 'Quantity Requested' > 'Quantity Available',
{
Product: Product,
'Quantity To Order': 'Quantity Requested' - 'Quantity Available'
}
)
)
Ova će formula možda nekim ljudima biti jednostavnija za čitanje i pisanje.
Nijedan dio nije ForAll razgraničen. Procjenjuje se samo prvi dio tablice Proizvodi, što može biti problem ako je ta tablica velika. Budući da se funkcija Filter mogla delegirati u prethodnom primjeru, mogla bi bolje funkcionirati s velikim skupovima podataka.
Prikupljanje rezultata
U nekim situacijama može biti potrebna kopija podataka. Možda ćete trebati premjestiti podatke iz jednog izvora podataka u drugi. U ovom se primjeru narudžbe postavljaju putem tablice NewOrder na sustavu dobavljača. Za korisničke interakcije velike brzine preporučuje se da lokalno kopirate tablicu u predmemoriju da ne bi bilo kašnjenja poslužitelja.
Koristimo isti oblik tablice kao u prethodna dva primjera, ali rezultat bilježimo u zbirku:
ClearCollect( NewOrder,
ShowColumns(
AddColumns(
Filter( Products, 'Quantity Requested' > 'Quantity Available' ),
"Quantity To Order", 'Quantity Requested' - 'Quantity Available'
),
"Product",
"Quantity To Order"
)
)
ClearCollect( NewOrder,
ForAll( Products,
If( 'Quantity Requested' > 'Quantity Available',
{
Product: Product,
'Quantity To Order': 'Quantity Requested' - 'Quantity Available'
}
)
)
)
ClearCollect i Collect ne mogu se delegirati. Kao rezultat toga, količina podataka koja se može premjestiti na ovaj način ograničena je.
Prikupi unutar ForAll
Naposljetku, možemo izvesti Prikupljaj izravno u :ForAll
Clear( NewOrder );
ForAll( Products,
If( 'Quantity Requested' > 'Quantity Available',
Collect( NewOrder,
{
Product: Product,
'Quantity To Order': 'Quantity Requested' - 'Quantity Available'
}
)
)
)
Funkcija se ForAll u ovom trenutku ne može dodijeliti. Ako je tablica Proizvodi velika, ForAll pogledajte samo prvi skup zapisa i možda će nam nedostajati neki proizvodi koje je potrebno naručiti. No za tablice za koje znamo da su ostale male, taj je pristup u redu.
Imajte na umu da ne bilježimo rezultat .ForAll Pozivi funkcije Collect unutar njega prikazuju izvor podataka NewOrder za sve zapise, koji bi mogli zbrojili brojne podatke ako ga snimamo.
Mapiranje tablice u komponenti
Pogledajte Mapiranje tablica.