Kopīgot, izmantojot


ForAll funkcija

Attiecas uz: Audekla programmas Copilot Studio Desktop plūsmas Modeļa vadītas programmas Power Platform CLI Dataverse funkcijas Power Pages

Aprēķina vērtības un veic darbības visiem ierakstiemtabulā.

Apraksts

Funkcija ForAll novērtē formulu visiem tabulas ierakstiem. Formula var aprēķināt vērtību un/vai veikt darbības, piemēram, pārveidot datus vai strādāt ar savienojumu. Izmantojiet With funkciju, lai novērtētu formulu vienam ierakstam.

Izmantojiet funkciju Sequence ar funkciju, ForAll lai atkārtotu, pamatojoties uz skaitu.

Formulā ir pieejami pašlaik apstrādātie ieraksta lauki. Izmantojiet operatoru ThisRecord vai vienkārši norādiet uz laukiem pēc nosaukuma, kā to darītu ar jebkuru citu vērtību. Operatoru As var izmantot arī, lai apstrādājamajam ierakstam piešķirtu nosaukumu, kas var palīdzēt padarīt formulu saprotamāku, bet ligzdotos ierakstus — pieejamus. Papildinformāciju skatiet tālāk sniegtajos piemēros un sadaļā Darbs ar ierakstu tvērumu.

Atgrieztā vērtība

Katras formulas novērtējuma rezultāts tiek atgriezts tabulā, tādā pašā secībā kā ievades tabula.

Ja formulas rezultāts ir viena vērtība, iegūtā tabula ir vienas kolonnas tabula. Ja formulas rezultāts ir ieraksts, iegūtā tabula ietvers ierakstus ar tādām pašām kolonnām kā rezultātu ieraksts.

Ja formulas rezultāts ir tukša vērtība, tad šī ievades ieraksta rezultātu tabulā nav ieraksta. Šajā gadījumā rezultātu tabulā ir mazāk ierakstu nekā avota tabulā.

Darbības veikšana

Formula var ietvert funkcijas, kas veic darbības, piemēram, modificējot datu avota ierakstus ar funkcijām Patch un Collect. Šī formula var arī izsaukt metodes savienojumiem. Vienā ierakstā var veikt vairākas darbības, izmantojot ; operatoru. Nevar modificēt tabulu, kas ir funkcijas priekšmets ForAll .

Rakstot formulu, paturiet prātā, ka ierakstus var apstrādāt jebkurā secībā un, ja iespējams, paralēli. Tabulas pirmais ieraksts var tikt apstrādāts pēc pēdējā ieraksta.

Esiet uzmanīgi, lai izvairītos no atkarību sakārtošanas. Šī iemesla dēļ funkcijā nevar izmantot funkcijas ForAllUpdateContext, Clear un ClearCollect, jo tās var viegli izmantot, lai turētu mainīgos, kas būtu jutīgi pret šo efektu. Varat izmantot Collect, taču secība, kurā ieraksti tiek pievienoti, netiek definēta.

Vairākas funkcijas, kas modificē datu avotus, tostarp Collect, Remove un Update, atgriež mainīto datu avotu kā atgriezto vērtību. Šīs atgrieztās vērtības var būt lielas un patērēt ievērojamus resursus, ja tās tiek atgrieztas katram tabulas ierakstam ForAll . Varat arī konstatēt, ka šīs atgrieztās vērtības nav tādas, kādas jūs gaidāt, jo ForAll var darboties paralēli un var atdalīt šo funkciju blakusparādības no to rezultāta iegūšanas. Ja atgrieztā vērtība no ForAll netiek izmantota, kā tas bieži notiek ar datu modificēšanas funkcijām, atgrieztā vērtība netiks izveidota un nav problēmu ar resursiem vai pasūtījumiem. Taču, ja izmantojat rezultātu un ForAll kādu no funkcijām, kas atgriež datu avotu, rūpīgi pārdomājiet, kā strukturēt rezultātu, un vispirms izmēģiniet to mazās datu kopās.

Alternatīvas

Daudzas Power Apps funkcijas vienlaikus var apstrādāt vairāk nekā vienu vērtību, izmantojot vienas kolonnas tabulu. Piemēram, funkcija Len var apstrādāt teksta vērtību tabulu, atgriežot garumu tabulu tādā pašā veidā, kā ForAll to varētu darīt. Tas daudzos gadījumos var novērst nepieciešamību to izmantot ForAll , var būt efektīvāks un vieglāk lasāms.

Vēl viens apsvērums ir tas, ka tas nav deleģējams, ForAll bet citas funkcijas var būt, piemēram, filtrs.

Deleģēšana

Ja tiek izmantots arī datu avots, šo funkciju nevar deleģēt. Tiks izgūta tikai pirmā datu avota daļa, un pēc tam tiks izmantota funkcija. Rezultātā var nebūt iekļauts viss saturs. Lai atgādinātu par šo ierobežojumu un ieteiktu pārslēgties uz deleģējamu alternatīvu (ja tas ir iespējams), autorēšanas laikā var tikt parādīts brīdinājums. Papildinformāciju skatiet sadaļā Pārskats par deleģēšanu.

Sintakse

ForAll(Tabula, formula)

  • Tabula - Obligāts. Tabula, ar kuru ir jārīkojas.
  • Formula - Nepieciešams. Formula, kas tiek novērtēta attiecībā uz visiem Tabulas ierakstiem.

Piemēri

Aprēķini

Nākamajos piemēros izmantots datu avotsKvadāti:

Kvadrātu piemērs.

Lai izveidotu šo datu avotu kā kolekciju, iestatiet vadīklas Poga rekvizītu OnSelect uz šo formulu, atveriet režīmu Priekšskatījums, un pēc tam atlasiet pogu:

ClearCollect( Squares, [ "1", "4", "9" ] )

Formula Apraksts Rezultāts
ForAll( Kvadrāti, Sqrt ( Vērtība ) )

Sqrt( Kvadrāti )
Visiem ievades tabulas ierakstiem tiek aprēķināta kolonnas Vērtība kvadrātsakne. Funkciju Sqrt var izmantot arī ar vienas kolonnas tabulu, ļaujot veikt šo piemēru, neizmantojot ForAll. Piemērs: Sqrt.
ForAll( Kvadrāti, Jauda( Vērtība, 3 ) ) Visiem ievades tabulas ierakstiem tiek pacelta kolonnas Vērtība uz trešo pakāpi. Funkcija Power neatbalsta vienas kolonnas tabulas. Tāpēc ForAll šajā gadījumā jāizmanto. Power piemērs.

Savienojuma izmantošana

Piemēros tālāk tiek lietots Izteiksmjudatu avots:

Izteiksmju piemērs.

Lai izveidotu šo datu avotu kā kolekciju, iestatiet vadīklas Poga rekvizītu OnSelect uz šo formulu, atveriet režīmu Priekšskatījums, un pēc tam atlasiet pogu:

ClearCollect( Expressions, [ "Hello", "Good morning", "Thank you", "Goodbye" ] )

Šajā piemērā tiek izmantots arī Microsoft Translator savienojums. Lai pievienotu šo savienojumu savai programmai, skatiet rakstu, kā pārvaldīt savienojumus.

Formula Apraksts Rezultāts
ForAll(Izteiksmes, MicrosoftTranslator.Translate(Vērtība, "es")) Visiem ierakstiem tabulā Izteiksmes tulkojiet kolonnas Vērtība saturu spāņu valodā (saīsinājumā "es"). Piemērs ar vērtību
ForAll(Izteiksmes, MicrosoftTranslator.Translate(Vērtība, "fr")) Visiem ierakstiem tabulā Izteiksmes tulkojiet kolonnas Vērtība saturu franču valodā (saīsinājumā "fr"). Piemērs ar vērtību

Tabulas kopēšana

Dažreiz jums ir nepieciešams filtrēt, veidot, kārtot un manipulēt ar datiem. Power Apps nodrošina daudzas funkcijas, kā to izdarīt, piemēram, Filter, AddColumns un Sort. Power Apps katru tabulu uzskata par vērtību, ļaujot tai plūst cauri formulām un to viegli patērēt.

Dažreiz ir nepieciešams izveidot šī rezultāta kopiju, izmantošanai vēlāk, vai pārvietot informāciju no viena datu avota uz citu. Power Apps nodrošina Collect funkciju datu kopēšanai.

Bet pirms šīs kopijas izgatavošanas rūpīgi padomājiet, vai tas ir nepieciešams. Daudzas situācijas var atrisināt, filtrējot un pēc pieprasījuma veidojot pamata datu avotu, izmantojot formulu. Daži kopēšanas trūkumi:

  • Vienas informācijas divas kopijas nozīmē, ka viena no tām var netikt sinhronizēta.
  • Kopēšana var patērēt lielu daļu datora atmiņas, tīkla joslas platuma un/vai laika.
  • Lielākajai daļai datu avotu kopēšanu nevar deleģēt, ierobežojot pārvietojamo datu apjomu.

Piemēros tālāk tiek izmantots datu avotsProdukti:

Datu avota produktu piemēri.

Lai izveidotu šo datu avotu kā kolekciju, iestatiet vadīklas Poga rekvizītu OnSelect uz šo formulu, atveriet režīmu Priekšskatījums, un pēc tam atlasiet pogu:

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ūsu mērķis ir darbs ar atvasinātu tabulu, kurā ir tikai tie elementi, kuriem ir pieprasīts vairāk informācijas, nekā ir pieejams, un kuriem mums ir jāveic pasūtījums.

Piemērs ar atvasināto tabulu.

Šo uzdevumu var veikt dažos atšķirīgos veidos, kur visi nodrošina vienu un to pašu rezultātu, ar dažādiem ieguvumiem un trūkumiem.

Tabulu veidošana pēc pieprasījuma

Nekopējiet! Jebkur, kur nepieciešams, mēs varam izmantot šādu formulu:

// 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"
)

Ieraksta tvērumu izveido, izmantojot funkcijas Filter un AddColumns, lai salīdzināšanas un noņemšanas darbības veiktu attiecīgi ar katra ieraksta laukiem 'Pieprasītais daudzums' un 'Pieejamais daudzums'.

Šajā piemērā funkciju Filter var deleģēt. Tas ir svarīgi, jo tā var atrast visas preces, kas atbilst kritērijiem, pat, ja tie ir tikai daži ieraksti no miljoniem tabulu. Šobrīd ShowColumns un AddColumns nevar deleģēt, tāpēc faktiskais pasūtāmo produktu skaits ir ierobežots. Ja jūs zināt, ka šī rezultāta lielums vienmēr ir salīdzinoši mazs, šī pieeja ir labi.

Un, tā kā mēs neizveidojām kopiju, nav papildu informācijas kopijas, ko pārvaldīt vai novecot.

ForAll pēc pieprasījuma

Vēl viena pieeja ir izmantot funkciju, ForAll lai aizstātu tabulas veidošanas funkcijas:

ForAll( Products,
    If( 'Quantity Requested' > 'Quantity Available',
        {
            Product: Product,
            'Quantity To Order': 'Quantity Requested' - 'Quantity Available'
        }
    )
)

Šo formulu dažiem lietotājiem var būt vienkāršāk lasīt un rakstīt.

Neviena daļa ForAll nav deleģējama. Tiek novērtēta tikai tabulas Products pirmā daļa, kas var radīt problēmas, ja šī tabula ir liela. Tā kā funkciju Filtrēt iepriekšējā piemērā varēja deleģēt, tā varētu darboties labāk ar lielām datu kopām.

Rezultāta apkopošana

Dažos gadījumos var būt nepieciešama datu kopēšana. Iespējams, jums vajadzēs pārvietot informāciju no viena datu avota uz citu. Šajā piemērā pasūtījumi tiek veikti, izmantojot tabulu NewOrder pārdevēja sistēmā. Lai veiktu ātrdarbīgu lietotāju mijiedarbību, iespējams, vēlēsities kešatmiņā saglabāt tabulas lokālo kopiju, lai nebūtu servera latentuma.

Mēs izmantojam tādu pašu tabulu izveidi, kā divos iepriekšējos piemēros, taču mēs tveram rezultātu kolekcijā:

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 un Collect nevar deleģēt. Tādējādi datu daudzums, ko var pārvietot šādā veidā, ir ierobežots.

Savākt ForAll

Visbeidzot, mēs varam veikt savākšanu tieši :ForAll

Clear( NewOrder );
ForAll( Products,
    If( 'Quantity Requested' > 'Quantity Available',
        Collect( NewOrder,
            {
                Product: Product,
                'Quantity To Order': 'Quantity Requested' - 'Quantity Available'
            }
        )
    )
)

Atkal, ForAll funkciju šobrīd nevar deleģēt. Ja mūsu tabula Produkti ir liela, aplūko tikai pirmo ierakstu kopu, ForAll un mēs varam palaist garām dažus produktus, kas ir jāpasūta. Bet tabulām, par kurām mēs zinām, ka tās joprojām ir mazas, šī pieeja ir laba.

Ņemiet vērā, ka mēs neuztveram rezultātu .ForAll Funkcijas Collect izsaukumi, kas veikti no tās, atgriež NewOrder datu avotu visiem ierakstiem, kas varētu summēties ar daudziem datiem, ja mēs to tveram.

Tabulas kartēšana komponentā

Skatiet sadaļu Tabulu kartēšana.