Megosztás:


ForAll függvény

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:

Példa a négyzetekre.

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ó. Példa Sqrt függvényre.
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. Példa a teljesítményre.

Kapcsolat használata

Az alábbi példák a Kifejezésekadatforrást használják:

Példa a kifejezésekre.

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”). Példa „es” értékkel.
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”). Példa „fr” értékkel.

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:

Példa a termékek adatforrására.

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:

Példa a derivált táblázatra.

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.