Märkus.
Juurdepääs sellele lehele nõuab autoriseerimist. Võite proovida sisse logida või kausta vahetada.
Juurdepääs sellele lehele nõuab autoriseerimist. Võite proovida kausta vahetada.
Kehtib järgmise kohta: Lõuendirakendused
Copilot Studio
töölauavood
Mudelipõhised rakendused
Power Platform CLI
Dataverse funktsioonid
Power Pages
Arvutab väärtused ja teostab toimingud kõikide kirjete kohta tabelis.
Kirjeldus
Funktsioon ForAll hindab tabeli kõigi kirjete valemit. Valem saab arvutada väärtuse ja/või teha toiminguid (nt andmete muutmine või ühendusega töötamine). Kasutage With funktsiooni, et hinnata ühe kirje valemit.
Funktsiooni Sequence kasutamine funktsiooniga ForAll loenduse põhjal itereerimiseks.
Praegu töödeldavad kirje väljad on valemis saadaval. Kasutage tehtemärki ThisRecord või lihtsalt viidake väljadele nime järgi, nagu iga muu väärtuse korral. Tehtemärki As saab kasutada ka töödeldava kirje nimetamiseks, mis aitab teil valemit paremini mõista ja muuta pesastatud kirjed juurdepääsetavaks. Lisateabe saamiseks vaadake alltoodud näiteid ja jaotist kirje ulatusega töötamine.
Tagastusväärtus
Iga valemi hindamise tulemus tagastatakse tabelisse, samas järjestuses nagu sisestustabelis.
Kui valemi tulem on üksikväärtus, on tulemiks üheveeruline tabel. Kui valemi tulemus on kirje, on sisaldab tulemuseks saadud tabel samade veergudega kirjeid kui tulemikirje.
Kui valemi tulem on tühi väärtus, siis selle sisendkirje tulemitabelis kirjet pole. Sel juhul on tulemitabelis vähem kirjeid kui lähtetabelis.
Tegevuste tegemine
Valem võib sisaldada funktsioone, mis teevad toiminguid, nagu andmeallika kirjete muutmine funktsioonidega Patch ja Collect. Valem võib ka kutsuda välja meetodid ühendustele. Operaatori ; abil saab teha mitu toimingut kirje kohta. Te ei saa muuta tabelit, mis on funktsiooni teemaks ForAll .
Valemi kirjutamisel pidage meeles, et kirjeid saab töödelda mis tahes järjekorras ja võimaluse korral samaaegselt. Tabeli esimest kirjet võib pärast viimast kirjet töödelda.
Hoolitsege, et vältida sõltuvuste tellimist. Seetõttu ei saa funktsioonis kasutada funktsioone ForAllUpdateContext, Clear ja ClearCollect, kuna neid saab hõlpsasti kasutada selle mõju suhtes vastuvõtlike muutujate hoidmiseks. Võite kasutada funktsiooni Collect, kuid kirjete lisamise järjestus on määratlemata.
Mitu funktsiooni, mis muudavad andmeallikaid, sh Collect, Remove ja Update, tagastavad muudetud andmeallika nende tagastusväärtusena. Need tagastusväärtused võivad olla suured ja tarbida märkimisväärseid ressursse, kui need tagastatakse iga tabelikirje ForAll kohta. Samuti võite avastada, et need tagastusväärtused pole ootuspärased, kuna ForAll need võivad toimida paralleelselt ja eraldada nende funktsioonide kõrvaltoimed nende tulemuste saamisest. Kui tagastusväärtust ForAll ei kasutata (enamasti on see andmete muutmise funktsioonide puhul nii), siis tagastusväärtust ei looda ja ressursi- ega tellimuseprobleeme pole. Kui kasutate andmeallikat tagastava ForAll funktsiooni tulemust, mõelge hoolikalt järele, kuidas tulemust struktureerite, ja proovige seda esmalt väikeste andmekogumite puhul.
Alternatiivid
Paljud Power Appsi funktsioonid saavad üheveerulise tabeli abil töödelda korraga rohkem kui ühte väärtust. Näiteks saab funktsioon Len töödelda tekstiväärtuste tabelit, tagastades samal viisil ForAll pikkuste tabeli. See võib paljudel juhtudel kasutuse ForAll vajaduse kõrvaldada, võib olla tõhusam ja seda on lihtsam lugeda.
Teine kaalutlus on see, et ForAll muid funktsioone (nt Filter) ei saa eemaldada.
Delegeerimine
Koos andmeallikaga kasutamisel ei saa seda funktsiooni delegeerida. Tuuakse ainult andmeallika esimene osa ja seejärel rakendatakse funktsioon. Tulem ei pruugi esindada täielikku lugu. Koostamise ajal võidakse kuvada hoiatus, mis tuletab teile seda piirangut meelde ja soovitab võimalusel lülituda delegeeritavatele alternatiividele. Lisateabe saamiseks vt delegeerimise ülevaadet.
Süntaks
ForAll(Tabel, valem)
- Tabel - nõutav. Tabel, mille järgi tuleb tegutseda.
- Valem - nõutav. Kõiki Tabeli kirjeid hindav valem.
Näited
Arvutused
Järgmistes näidetes on kasutatud Ruutudeandmeallikat:
Antud andmeallika kogumine loomiseks määrake juhtelemendi Nupp atribuut OnSelect sellele valemile, avage eelvaaterežiim ning valige järgmine nupp.
ClearCollect( Squares, [ "1", "4", "9" ] )
| Valem | Kirjeldus | Tulem |
|---|---|---|
|
ForAll( Squares, Sqrt( Value ) ) Sqrt( Ruudud ) |
Kõikide kirjete jaoks tabelis arvutatakse veerus Väärtus ruutjuur. Funktsiooni Sqrt saab kasutada ka üheveerulise tabeliga, mis võimaldab seda näidet täita ilma ForAll. |
|
| ForAll( Ruudud, Power( Väärtus, 3 ) ) | Kõikide kirjete jaoks tabelis tõuseb veerg Väärtus kolmanda astmeni. Funktsioon Power ei toeta üheveerulisi tabeleid. ForAll Seetõttu tuleb käesoleval juhul kasutada. |
|
Ühenduse kasutamine
Järgmistes näidetes on kasutatud Avaldisteandmeallikat:
Antud andmeallika kogumine loomiseks määrake juhtelemendi Nupp atribuut OnSelect sellele valemile, avage eelvaaterežiim ning valige järgmine nupp.
ClearCollect( Expressions, [ "Hello", "Good morning", "Thank you", "Goodbye" ] )
Selles näites kasutatakse ka Microsoft Translatori ühendust. Seose rakendusele lisamiseks lugege artiklit seoste haldamise kohta.
| Valem | Kirjeldus | Tulem |
|---|---|---|
| ForAll(Expressions, MicrosoftTranslator.Translate(Value, "es")) | Tõlkige kõigi avaldiste tabelis olevate kirjete jaoks veeru Väärtus sisu hispaania keelde (lühend "es"). |
|
| ForAll(Expressions, MicrosoftTranslator.Translate(Value, "fr")) | Tõlgi kõigi avaldiste tabelis olevate kirjete jaoks veeru Väärtus sisu prantsuse keelde (lühend "fr"). |
|
Tabeli kopeerimine
Mõnikord on vaja andmeid filtreerida, kujundada, sortida ja manipuleerida. Power Apps pakub selleks mitmesuguseid funktsioone, nagu näiteks Filter, AddColumns ja Sort. Power Apps käsitleb iga tabelit väärtusena, võimaldades sellel liikuda läbi valemite ja seda hõlpsalt tarbida.
Vahel võite soovida luua tulemusest koopia, et seda hiljem kasutada, või liigutada teavet ühest andmeallikast teise. Power Apps pakub funktsiooni Collect andmete kopeerimiseks.
Aga enne selle koopia tegemist mõelge hoolikalt, kas seda on vaja. Paljusid olukordi saab lahendada, filtreerides ja kujundades aluseks võetud andmeallika vajadusel valemiga. Mõned negatiivsed punktid, et koopiat teha, on järgmised.
- Sama teabe kaks koopiat tähendab seda, et üks võib sünkroonist väljuda.
- Koopia tegemine võib nõuda liiga palju arvutimälu, võrgu ribalaiust ja/või aega.
- Enamiku andmeallikate puhul ei saa kopeerimist delegeerida, piirates teisaldatavate andmete hulka.
Järgmistes näidetes on kasutatud Toodeteandmeallikat:
Antud andmeallika kogumine loomiseks määrake juhtelemendi Nupp atribuut OnSelect sellele valemile, avage eelvaaterežiim ning valige järgmine nupp.
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 }
)
)
Meie eesmärk on teha koostööd tuletisväärtpaberite tabeliga, mis hõlmab ainult neid üksusi, kus on rohkem taotlusi, kui on saadaval, ja mille jaoks meil on vaja tellimus esitada.
Me saame seda ülesannet teha paaril erineval viisil, mis kõik annavad sama tulemuse, millel on erinevad plussid ja miinused.
Tabeli kujundamine nõudmisel
Ärge tehke seda koopiat! Saame kasutada järgmist valemit kõikjal, kus vaja.
// 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"
)
Kirje ulatuse loovad funktsioonid Filter ja AddColumns, et teha võrdlus- ja lahutustehteid, vastavalt iga kirje väljadega Nõutud kogus ja Saadaval kogus.
Selles näites saab funktsiooni Filter delegeerida. See on oluline, sest see võib leida kõiki tooteid, mis vastavad kriteeriumidele, isegi kui see on vaid vähesed kirjed miljonist tabelis. Praegu ei saa käske ShowColumns ja AddColumns delegeerida, seega on tellitavate toodete tegelik arv piiratud. Kui teate, et selle tulemi suurus on alati suhteliselt väike, on selline lähenemine hea.
Ja kuna me ei teinud koopiat, pole teabest lisakoopiaid, mis haldaksid või aeguksid.
ForAll nõudmisel
Teine võimalus on kasutada ForAll funktsiooni tabelikujundusfunktsioonide asendamiseks.
ForAll( Products,
If( 'Quantity Requested' > 'Quantity Available',
{
Product: Product,
'Quantity To Order': 'Quantity Requested' - 'Quantity Available'
}
)
)
Mõnel inimesel võib see valem olla lihtsam lugeda ja kirjutada.
Ükski osa ForAll pole eemaldatav. Hinnatakse ainult tabeli "Tooted " esimest osa, mis võib osutuda probleemiks, kui see tabel on suur. Kuna Filter võib olla eelmises näites delegeeritud, võib see suurema hulga andmekogumite korral paremini töötada.
Tulemuste kogumine
Teatud olukordades võib olla vaja andmete koopiat. Või teil on vaja teavet teisaldada ühest andmeallikast teise. Selles näites esitatakse tellimused NewOrder tabeli kaudu vendori süsteemis. Kiireks kasutajasuhtluseks võite soovida salvestada tabeli kohaliku koopia vahemällu, et serveri latentsusaega poleks.
Me kasutame sama tabelit, mis on kujundatud kahe eelmise näitena, kuid toome tulemuse kollektsiooni.
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 ja Collect ei saa delegeerida. Selle tulemusena on andmete hulk, mida saab sel viisil teisaldada, piiratud.
Kogumisalus ForAll
Lõpuks saame kogumistoimingu sooritada otse järgmises jaotises:ForAll
Clear( NewOrder );
ForAll( Products,
If( 'Quantity Requested' > 'Quantity Available',
Collect( NewOrder,
{
Product: Product,
'Quantity To Order': 'Quantity Requested' - 'Quantity Available'
}
)
)
)
ForAll Funktsiooni ei saa praegu delegeerida. Kui tabel "Tooted " on suur, ForAll vaadake ainult esimest kirjekomplekti ja meil võib kahe silma vahele jääda mõni toode, mida on vaja tellida. Kuid meie teada jäävad tabelid väikseks, on selline lähenemine hea.
Võtke arvesse, et me ei jäädvusta i tulemit ForAll. Selle sees tehtud funktsioonikutsete kogumine tagastab kõigi kirjete jaoks andmeallika NewOrder , mis võib salvestamisel lisada kuni rohkelt andmeid.
Tabeli vastendamine komponendis
Vt jaotist Tabelite vastendamine.