Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
A következőkre vonatkozik: Vászonalapú alkalmazások
Copilot Studio
Desktop folyamatok
Modellalapú alkalmazások
Power Platform CLI
Dataverse függvények
Power Pages
Értékeket számít és műveleteket végez egy tábla összes rekordján.
Ismertetés
A ForAll függvény kiértékeli a tábla összes rekordjának képletét. A képlet kiszámít egy értéket és/vagy műveleteket hajt végre, például adatokat módosít vagy egy kapcsolatot használ. A With függvény használatával kiértékelheti az egyetlen bejegyzéshez tartozó képletet.
A Számsorrend függvénnyel a ForAll szám alapján iterálhat.
Az aktuálisan feldolgozás alatt álló rekordmezők elérhetők a képletben. Használja a ThisRecord operátort, vagy egyszerűen hivatkozzon név szerint a mezőkre, ahogy más értéket is hivatkozna. Az As operátor a feldolgozás alatt álló rekord elnevezésére használatos, amellyel könnyebben érthető a képlet, és hozzáférhetőbbek a beágyazott rekordok. További információkért lásd az alábbi példákat és a rekord hatókörével való munkát.
Visszaküldés értéke
A függvény egy táblában adja vissza az egyes képletek értékelését, ugyanabban a sorrendben, ahogy a képletek a bemeneti táblában szerepeltek.
Ha a képlet eredménye egyetlen érték, az eredményként kapott tábla egy egyoszlopos tábla. Ha a képlet eredménye egy rekord, a visszaadott tábla rekordjai ugyanazokat az oszlopokat tartalmazzák, mint az eredményrekord.
Ha a képlet eredménye üres érték, akkor nincs rekord az eredménytáblában a bemeneti rekordhoz. Ebben az esetben kevesebb rekord található az eredménytáblában, mint a forrástáblában.
Műveletvégzés
A képlet olyan függvényeket is tartalmazhat, amelyek műveleteket végeznek, például módosítják egy adatforrás rekordjait a Patch és Collect függvénnyel. A képlet metódusokat is hívhat a kapcsolatokhoz. Rekordonként több művelet is elvégezhető a ; operátor használatával. Nem módosíthatja a függvény tárgyát képező táblát ForAll .
A képlet megírásakor vegye figyelembe, hogy a rekordok bármilyen sorrendben, és ha lehetséges, akár párhuzamosan is feldolgozhatók. A tábla első rekordja az utolsó rekord után is feldolgozható.
Ügyeljen arra, hogy ne írjon elő függőségeket. Ezért nem használhatja az UpdateContext, a Clear és a ClearCollect függvényt egy ForAll függvényen belül, mert könnyen használhatók olyan változók tárolására, amelyek érzékenyek erre a effektusra. A Collect függvény használható, de a rekordok hozzáadásának nincs meghatározott sorrendje.
Számos olyan függvény, amely módosítja az adatforrásokat (például a Collect, a Remove vagy az Update) a módosított adatforrást adja vissza értékként. Ezek a visszatérési értékek nagy méretűek lehetnek, és jelentős erőforrásokat használhatnak fel, ha a tábla minden rekordjára visszaadják.ForAll Azt is tapasztalhatja, hogy ezek a visszatérési értékek nem a várt értékek, mert ForAll párhuzamosan működnek, és elválaszthatják ezeknek a függvényeknek a mellékhatásait az eredményük megszerzésétől. Ha a visszatérési értéket ForAll nem használják, ami gyakran az adatmódosítási függvények esetében fordul elő, akkor a visszatérési érték nem jön létre, és nincsenek erőforrás- vagy rendelési problémák. Ha azonban egy adatforrást visszaadó függvény eredményét ForAll használja, alaposan gondolja át, hogyan strukturálja az eredményt, és próbálja ki először kis adathalmazokon.
Alternatív megoldások
A Power Apps számos függvénye egyszerre több értéket is feldolgozhat egy oszlopos tábla használatával. A Len függvény például képes feldolgozni egy szöveges értékeket tartalmazó táblázatot, és ugyanolyan módon visszaad egy hossztáblát.ForAll Ez sok esetben szükségtelenné teszi a használatot ForAll , hatékonyabb és könnyebben olvasható.
Egy másik szempont az, hogy ForAll nem delegálható, míg más függvények, például a Szűrő.
Meghatalmazás
Adatforrással való használat esetén ez a funkció nem delegálható. Csak az adatforrás első részét kéri le, és utána alkalmazza a funkciót. Előfordulhat, hogy az eredmény nem tükrözi a teljes képet. A szerkesztés során megjelenhet egy figyelmeztetés, amely emlékezteti erre a korlátozásra, és javasolja, hogy lehetőség szerint váltson delegálható alternatívára. További információkért lásd: a delegálás áttekintése.
Szintaxis
ForAll(Táblázat, képlet)
- Tábla - Kötelező. A tábla, amelyen műveleteket kíván végezni.
- Képlet - kötelező. A tábla összes rekordjára vonatkozóan kiértékelendő képlet.
Példák
Számítások
Az alábbi példák a Négyzetekadatforrást használják:
Az adatforrás gyűjteményként való létrehozásához állítsa be a képlet Button (Gomb) vezérlőelemének OnSelect tulajdonságát, nyissa meg az Előnézeti módot, majd válassza a következő gombot:
ClearCollect( Squares, [ "1", "4", "9" ] )
| Képlet | Ismertetés | Eredmény |
|---|---|---|
|
ForAll( Négyzetek, Sqrt( Érték ) ) Sqrt( Négyzetek ) |
A bemeneti tábla összes rekordjára vonatkozóan kiszámolja az Érték oszlop négyzetgyökét. A Sqrt függvény egyoszlopos táblával is használható, így a példa használata nélkül ForAllis végrehajtható. |
|
| ForAll( Négyzetek, Power( Érték, 3 ) ) | A bemeneti tábla összes rekordjára vonatkozóan a harmadik hatványra emeli a Value (Érték) oszlop értékeit. A Power függvény nem támogatja az egyoszlopos táblákat. ForAll Ezért ebben az esetben fel kell használni. |
|
Kapcsolat használata
Az alábbi példák a Kifejezésekadatforrást használják:
Az adatforrás gyűjteményként való létrehozásához állítsa be a képlet Button (Gomb) vezérlőelemének OnSelect tulajdonságát, nyissa meg az Előnézeti módot, majd válassza a következő gombot:
ClearCollect( Expressions, [ "Hello", "Good morning", "Thank you", "Goodbye" ] )
Ez a példa egy Microsoft Translator-kapcsolatot is használ. A kapcsolatnak az alkalmazáshoz való hozzáadásával kapcsolatban lásd a kapcsolatok kezelésére vonatkozó cikket.
| Képlet | Ismertetés | Eredmény |
|---|---|---|
| ForAll(Kifejezések, MicrosoftTranslator.Translate(Érték, "es")) | A Kifejezések tábla összes rekordjában lefordítja az Érték oszlop tartalmát spanyol nyelvre (amelynek rövidítése: „es”). |
|
| ForAll(Kifejezések, MicrosoftTranslator.Translate(Érték, "fr")) | A Kifejezések tábla összes rekordjában lefordítja az Érték oszlop tartalmát francia nyelvre (amelynek rövidítése: „fr”). |
|
Tábla másolása
Időnként szükség lehet az adatok szűrésére, alakítására, rendezésére vagy módosítására. Power Apps számos függvényt tartalmaz ennek végrehajtásához, például a Filter, az AddColumns és a Sort függvényt. A Power Apps minden táblát értékként kezel, lehetővé téve, hogy képleteken haladjon át, és könnyen felhasználható legyen.
Néha az eredményt későbbi használat céljából lemásolhatja, vagy áthelyezheti az adatokat az egyik adatforrásból a másikba. A Power Apps a Collect függvénnyel teszi lehetővé az adatok másolását.
De mielőtt ezt a másolatot készítené, gondolja át alaposan, hogy szükség van-e rá. Sok esetben az is elég, ha a rendelkezésre álló adatforrást egy képlettel megszűri vagy módosítja. A másolat készítése több szempontból lehet problémás:
- Ha ugyanazon adatokat két példányban tárolja, az ahhoz vezethet, hogy az egyik példány nem lesz szinkronban, nem lesz naprakész.
- A másolat elkészítése rengeteg memóriát, hálózati sávszélességet és időt igényelhet.
- A legtöbb adatforrás esetében a másolás nem delegálható, ami korlátozza, hogy mennyi adat helyezhető át.
Az alábbi példák a Termékekadatforrást használják:
Az adatforrás gyűjteményként való létrehozásához állítsa be a képlet Button (Gomb) vezérlőelemének OnSelect tulajdonságát, nyissa meg az Előnézeti módot, majd válassza a következő gombot:
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 }
)
)
A célunk az, hogy olyan származtatott táblán tudjunk dolgozni, amely csak azokat az elemeket tartalmazza, amelyből több lett kérve (Quantity Requested), mint amennyi rendelkezésre áll (Quantity Available), vagyis amelyekből rendelnünk kell:
Ezt a feladatot több módon is elvégezhetjük; mindegyik ugyanazt az eredményt adja, és mindegyiknek megvan az előnye és a hátránya.
Tábla alakítása igény szerint
Ne készítsen másolatot! A következő képlet bárhol használható:
// 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"
)
A Filter és az AddColumns függvény létrehoz egy rekordhatókört az összehasonlítási és kivonási műveletek elvégzéséhez, az egyes rekordok Quantity Requested (Kért mennyiség) és Quantity Available (Rendelkezésre álló mennyiség) mezői alapján.
Ebben a példában a Filter függvény delegálható. Ez azért fontos, mert ez a függvény megtalálja a feltételeknek megfelelő termékeket, még akkor is, ha csak néhány ilyen rekord van egy több millió rekordos táblában. Jelenleg a ShowColumns és az AddColumns nem delegálható, így a megrendelni kívánt termékek tényleges száma korlátozott. Ha tudja, hogy ennek az eredménynek a mérete mindig viszonylag kicsi, ez a megközelítés rendben van.
És mivel nem készítettünk másolatot, nincs további másolat az adatokról, amelyeket kezelhetnénk vagy elavultnak tekinthetnénk.
ForAll igény szerint
Egy másik módszer a függvény használata a ForAll táblázatformáló függvények helyére:
ForAll( Products,
If( 'Quantity Requested' > 'Quantity Available',
{
Product: Product,
'Quantity To Order': 'Quantity Requested' - 'Quantity Available'
}
)
)
Ez a képlet egyeseknek könnyebben olvasható és írható lehet.
Az egyik része ForAll sem delegálható. A Rendszer csak a Termékek tábla első részét értékeli ki, ami nagy méretű tábla esetén problémát okozhat. Mivel a Filter az előző példában delegálható volt, így jobban működhet a nagy adatkészletek esetében.
Az eredmény összegyűjtése
Bizonyos helyzetekben szükséges lehet az adatok másolatára. Előfordulhat, hogy egy adatforrásból egy másikba kell áthelyezni adatokat. Ebben a példában a rendelések a beszállító rendszerében lévő Új rendelés táblába vannak leadva. A nagy sebességű felhasználói interakciókhoz érdemes lehet gyorsítótárazni egy tábla helyi példányát, hogy ne legyen kiszolgálói késés.
Ugyanazt a táblaalakítást használjuk, mint az előző két példában, de az eredményt egy gyűjteménybe foglaljuk:
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'
}
)
)
)
A ClearCollect és a Collect nem delegálható. Ennélfogva az ily módon áthelyezhető adatok mennyisége korlátozott.
Gyűjtsön belül ForAll
Végül a Collectt közvetlenül a következőn ForAllbelül hajthatjuk végre:
Clear( NewOrder );
ForAll( Products,
If( 'Quantity Requested' > 'Quantity Available',
Collect( NewOrder,
{
Product: Product,
'Quantity To Order': 'Quantity Requested' - 'Quantity Available'
}
)
)
)
ForAll A függvény ezúttal nem delegálható. Ha a Termékek tábla nagy, csak az első rekordhalmazt tekintheti meg, és előfordulhat, ForAll hogy néhány megrendelni kívánt terméket kihagyunk. De a táblák, amelyekről tudjuk, hogy kicsik, ez a megközelítés rendben van.
Vegye figyelembe, hogy nem rögzítjük a ForAll. A benne végrehajtott Collect függvényhívások a NewOrder adatforrást adnak vissza az összes rekordhoz, ami számos adathoz adhat hozzá, ha rögzítjük őket.
Tábla leképezése összetevőben
További információ: Táblák leképezése.