Pastaba.
Prieigai prie šio puslapio reikalingas įgaliojimas. Galite bandyti prisijungti arba pakeisti katalogus.
Prieigai prie šio puslapio reikalingas įgaliojimas. Galite bandyti pakeisti katalogus.
Taikoma: "Canvas apps
Copilot Studio Desktop
" srautus
modeliu pagrįstos programos
"Power Platform" CLI
"Dataverse" funkcijos
"Power Pages"
Apskaičiuoja reikšmes ir atlieka veiksmus su visais įrašaislentelėje.
Aprašo
Funkcija ForAll įvertina visų lentelės įrašų formulę. Formulė gali apskaičiuoti reikšmę ir (arba) atlikti veiksmus, pvz., modifikuoti duomenis arba dirbti su ryšiu. Norėdami įvertinti formulę vienam įrašui, naudokite funkciją With.
Naudokite funkciją Sequence su ForAll funkcija, kad galėtumėte pakartoti pagal skaičių.
Formulėje pasiekiami šiuo metu apdorojamo įrašo laukai. Naudokite operatorių ThisRecord arba tiesiog laukus, kaip ir bet kurią kitą reikšmę, nurodykite pagal pavadinimus. Operatorių As taip pat galima naudoti norint pavadinti apdorojamą įrašą. Tai gali padėti lengviau suprasti formulę ir įdėtuosius įrašus pritaikyti neįgaliesiems. Norėdami gauti daugiau informacijos, žr. tolesnius pavyzdžius ir įrašą apie darbą su įrašų aprėptimi.
Pateikiama reikšmė
Kiekvieno formulės įvertinimo rezultatas pateikiamas lentelėje ta pačia tvarka, kaip ir įvesties lentelės.
Jei formulės rezultatas yra viena reikšmė, gauta lentelė yra vieno stulpelio lentelė. Jei formulės rezultatas yra įrašas, gautoje lentelėje bus įrašai su tais pačiais stulpeliais kaip ir rezultato įrašas.
Jei formulės rezultatas yra tuščia reikšmė, to įvesties įrašo rezultatų lentelėje nėra įrašo. Šiuo atveju rezultatų lentelėje yra mažiau įrašų nei šaltinio lentelėje.
Veiksmų atlikimas
Formulėje gali būti funkcijų, kurios atlieka veiksmus, pvz., modifikuoja duomenų šaltinio įrašus naudodamos funkcijas Patch ir Collect. Formulė taip pat gali iškviesti metodus ryšiams. Naudojant operatorių ;, su įrašu galima atlikti keletą veiksmų. Negalite modifikuoti lentelės, kuri yra funkcijos tema ForAll .
Rašant formulę reikia nepamiršti, kad įrašai gali būti apdorojami bet kokia tvarka ir, kai įmanoma, lygiagrečiai. Pirmasis lentelės įrašas gali būti apdorojamas po paskutiniojo įrašo.
Pasirūpinkite, kad būtų išvengta priklausomybių tvarkos nustatymo. Dėl šios priežasties funkcijoje negalite naudoti funkcijų ForAllUpdateContext, Clear ir ClearCollect, nes jas galima lengvai naudoti kintamiesiems, kurie gali būti jautrūs šiam poveikiui. Collect naudoti galite, tačiau įrašų įtraukimo tvarka yra neapibrėžta.
Kelios funkcijos, modifikuojančios duomenų šaltinius, įskaitant Collect, Remove ir Update, kaip pateikiamą reikšmę pateikia pakeistą duomenų šaltinį. Šios grąžinamos reikšmės gali būti didelės ir, jei pateikiamos kiekvienam lentelės įrašui ForAll , naudoja daug išteklių. Taip pat galite pastebėti, kad šios grąžinamos reikšmės nėra tai, ko tikitės, nes ForAll gali veikti lygiagrečiai ir atskirti šių funkcijų šalutinį poveikį nuo jų rezultatų gavimo. Jei grąžinama reikšmė iš ForAll nenaudojama, o taip dažnai būna duomenų modifikavimo funkcijų atveju, grąžinama reikšmė nebus sukurta ir nebus jokių išteklių ar užsakymo problemų. Tačiau jei naudojate vienos iš funkcijų, kurios pateikia duomenų šaltinį, rezultatą ForAll , atidžiai pagalvokite, kaip susisteminsite rezultatą, ir pirmiausia išbandykite jį mažuose duomenų rinkiniuose.
Alternatyvos
Daugelis "Power Apps" funkcijų vienu metu gali apdoroti daugiau nei vieną reikšmę, naudodama vieno stulpelio lentelę. Pavyzdžiui, funkcija Len gali apdoroti tekstinių reikšmių lentelę, tokiu pačiu būdu ForAll grąžindama ilgių lentelę. Tai gali pašalinti poreikį naudoti ForAll daugeliu atvejų, gali būti efektyvesnis ir lengviau skaityti.
Kitas svarstymas yra tai, kad ForAll nėra persekioja, o kitos funkcijos gali būti, pvz., filtras.
Perdavimas
Kai ši funkcija naudojama su duomenų šaltiniu, jos perduoti negalima. Bus gauta tik pirmoji duomenų šaltinio dalis, o tada bus taikoma funkcija. Rezultatas gali apimti ne visą informaciją. Kuriant gali pasirodyti įspėjimas, priminsiantis šį apribojimą ir pasiūlysiantis, kur įmanoma, pereiti prie perduodamųjų alternatyvų. Norėdami gauti daugiau informacijos, žr. perdavimo apžvalgą.
Sintaksė
ForAll(Lentelė, formulė)
- Lentelė - būtina. Lentelė, su kuria reikia atlikti veiksmus.
- Formulė - būtina. Formulė, kurią reikia įvertinti visuose lentelės įrašuose.
Pavyzdžiai
Skaičiavimai
Toliau pateiktuose pavyzdžiuose naudojamas duomenų šaltinisKėlimas kvadratu:
Norėdami sukurti šį duomenų šaltinį kaip rinkinį, nustatykite, kad ypatybės OnSelect, priklausančios valdikliui Mygtukas, reikšmė būtų ši formulė, atidarykite peržiūros režimu ir pasirinkite mygtuką:
ClearCollect( Squares, [ "1", "4", "9" ] )
| Formulė | Aprašo | Rezultatas |
|---|---|---|
|
ForAll( Kvadratai, Sqrt( reikšmė ) ) Sqrt( kvadratai ) |
Apskaičiuoja visų įvesties lentelės įrašų stulpelio Reikšmė kvadratinę šaknį. Funkciją Sqrt taip pat galima naudoti su vieno stulpelio lentele, kad būtų galima atlikti šį pavyzdį nenaudojant ForAll. |
|
| ForAll( Kvadratai, Galia( Reikšmė, 3 ) ) | Trečiuoju laipsniu pakelia visų įvesties lentelės įrašų stulpelį Reikšmė. Maitinimo funkcija nepalaiko vieno stulpelio lentelių. ForAll Todėl šiuo atveju reikia naudoti. |
|
Ryšio naudojimas
Toliau pateiktuose pavyzdžiuose naudojamas Frazėsduomenų šaltinis:
Norėdami sukurti šį duomenų šaltinį kaip rinkinį, nustatykite, kad ypatybės OnSelect, priklausančios valdikliui Mygtukas, reikšmė būtų ši formulė, atidarykite peržiūros režimu ir pasirinkite mygtuką:
ClearCollect( Expressions, [ "Hello", "Good morning", "Thank you", "Goodbye" ] )
Šiame pavyzdyje taip pat naudojamas „Microsoft Translator“ ryšys. Norėdami įtraukti šį ryšį į programą, žr. straipsnį apie ryšių valdymą.
| Formulė | Aprašo | Rezultatas |
|---|---|---|
| ForAll(Reiškiniai, MicrosoftTranslator.Translate(Reikšmė, "es")) | Visų lentelės Frazės įrašų stulpelio Value turinys išverčiamas į ispanų kalbą (sutrumpintai – „es“). |
|
| ForAll(Reiškiniai, MicrosoftTranslator.Translate(Reikšmė, "fr")) | Visų lentelės Frazės įrašų stulpelio Value turinys išverčiamas į prancūzų kalbą (sutrumpintai – „fr“). |
|
Lentelės kopijavimas
Kartais reikia filtruoti, formuoti, rikiuoti ir valdyti duomenis. „Power Apps“ siūlo daugelį tai padaryti leidžiančių funkcijų, pvz., Filter, AddColumns ir Sort. "Power Apps" kiekvieną lentelę laiko reikšme, kad ji galėtų tekėti formulėse ir būti lengvai naudojama.
Kartais galite norėti padaryti šio rezultato kopiją, kad galėtumėte panaudoti vėliau, arba galite norėti perkelti informaciją iš vieno duomenų šaltinio į kitą. „Power Apps“ duomenims kopijuoti suteikia funkciją Collect.
Tačiau prieš kopijuodami gerai pagalvokite, ar jos reikia. Daugelyje situacijų gali pakakti atitinkamą duomenų šaltinį filtruoti ir suformuoti pagal poreikį pritaikius formulę. Toliau pateikt kai kurie neigiami kopijos kūrimo aspektai.
- Dvi tos pačios informacijos kopijos reiškia, kad viena iš jų gali būti nesinchronizuota.
- Kopijuojant gali būti sunaudota daug kompiuterio atminties, tinklo pralaidumo ir (arba) laiko.
- Daugumos duomenų šaltinių kopijuoti negalima, apribojant, kiek duomenų galima perkelti.
Toliau pateiktuose pavyzdžiuose naudojamas Produktaiduomenų šaltinis:
Norėdami sukurti šį duomenų šaltinį kaip rinkinį, nustatykite, kad ypatybės OnSelect, priklausančios valdikliui Mygtukas, reikšmė būtų ši formulė, atidarykite peržiūros režimu ir pasirinkite mygtuką:
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 }
)
)
Mūsų tikslas yra naudoti išvestinę lentelę, kurioje yra tik tokios prekės, kurių prašoma daugiau nei yra, ir kurias reikia užsakyti:
Šią užduotį galime atlikti keliais skirtingais būdais, kuriuos naudojant gaunamas tas pats rezultatas (kiekvienas iš jų turi savo privalumų ir trūkumų).
Lentelės formavimas pareikalavus
Nekurkite kopijos! Šią formulę galime naudoti visur, kur reikia:
// 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"
)
Funkcijos Filter ir AddColumns sukuria įrašų aprėptį, kad būtų galima atlikti lyginimo ir atėmimo operacijas, naudojant, atitinkamai, kiekvieno įrašo laukus Prašomas kiekis bei Turimas kiekis.
Šiame pavyzdyje funkciją Filter galima perduoti. Tai svarbu, nes ji gali rasti visus produktus, atitinkančius kriterijus, net jei iš milijonų įrašų lentelės tokių įrašų yra tik keli. Šiuo metu ShowColumns ir AddColumns perduoti negalima, todėl faktinis produktų, kuriuos reikia užsakyti, skaičius yra ribotas. Jei žinote, kad šio rezultato dydis visada yra santykinai mažas, šis metodas yra gerai.
Kadangi nekopijuojame, nėra papildomos informacijos kopijos, kurią būtų galima valdyti arba atitaikyti.
ForAll pagal poreikį
Kitas būdas yra naudoti ForAll funkciją lentelės formavimo funkcijoms pakeisti:
ForAll( Products,
If( 'Quantity Requested' > 'Quantity Available',
{
Product: Product,
'Quantity To Order': 'Quantity Requested' - 'Quantity Available'
}
)
)
Šią formulę kai kuriems asmenims gali būti paprasčiau rskaityti ir rašyti.
Nėra dalies, kurią ForAll galima perseiti. Vertinama tik pirmoji lentelės Produktai dalis, kuri gali būti problema, jei ši lentelė yra didelė. Kadangi ankstesniame pavyzdyje Filter buvo galima perduoti, ji gali geriau veikti su dideliais duomenų rinkiniais.
Rezultato surinkimas
Kai kuriose situacijose gali reikėti duomenų kopijos. Gali reikėti informaciją iš vieno duomenų šaltinio perkelti į kitą. Šiame pavyzdyje užsakymai sukuriami naudojant lentelę NewOrder, esančią tiekėjo sistemoje. Didelės spartos vartotojų sąveikai galite norėti talpykloje saugoti vietinę lentelės kopiją, kad nebūtų serverio gaišties.
Naudojame tokią pačią lentelių formą, kaip ankstesniuose dviejuose pavyzdžiuose, tačiau rezultatą fiksuojame rinkinyje:
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 " ir "Collect " negalima perduoti. Todėl duomenų, kuriuos galima perkelti šiuo būdu, kiekis yra ribotas.
Rinkti per ForAll
Galiausiai, galime atlikti "Collect " tiesiai per ForAll:
Clear( NewOrder );
ForAll( Products,
If( 'Quantity Requested' > 'Quantity Available',
Collect( NewOrder,
{
Product: Product,
'Quantity To Order': 'Quantity Requested' - 'Quantity Available'
}
)
)
)
ForAll Šiuo metu funkcijos perduoti negalima. Jei lentelė Produktai yra didelė, ForAll peržiūri tik pirmą įrašų rinkinį ir galime praleisti kai kuriuos produktus, kuriuos reikia užsakyti. Tačiau lentelėms, kurios, kaip žinome, lieka mažos, šis metodas yra puikus.
Atkreipkite dėmesį, kad neužfiksuosime ." rezultato ForAll. Funkcija Collect iškviečia visus įrašus NewOrder, kuris galėtų papildyti daug duomenų, jei juos užfiksuotume, pateikia NewOrder duomenų šaltinį.
Lentelės susiejimas komponente
Žr. Lentelių susiejimas.