ForAll Функцију

Односи се на: Цанвас апликације Цопилот Студио Десктоп тече Апликације засноване на моделу Повер Платформ ЦЛИ Датаверсе функције Повер Пагес

Израчунава вредности и обавља радње за све записе у табели.

Опис

Функција ForAll процењује формулу за све записе у табели. Формула може израчунати вредност и/или извршити радње, попут мењања података или рада са везом. Користите функцију With да израчунате формулу за један запис.

Користите функцију Секвенца са функцијом ForAll да бисте поновили на основу бројања.

Поља записа који се тренутно обрађује су доступна у формули. Користите оператор ThisRecord или једноставно референцирајте поља по називу као и било коју другу вредност. Оператор As такође може да се користи за именовање записа који се обрађује што може да помогне вашој формули да лакше разуме и учини угнежђене записе доступнима. Више информација потражите у примерима у наставку и чланку о раду са опсегом записа.

Враћена вредност

Резултат сваког оцењивања формуле враћа се у табелу, истим редоследом као и табела уноса.

Ако је резултат формуле једна вредност, добијена табела је табела са једном колоном. Ако је резултат формуле запис, резултирајућа табела садржи записе са истим колонама као и запис резултата.

Ако је резултат формуле празна вредност, онда нема записа у табели резултата за тај улазни запис. У овом случају, има мање записа у табели резултата од изворне табеле.

Предузимање радње

Формула може укључивати функције које предузимају радњу, попут мењања записа извора података помоћу функција Patch и Collect. Формула такође може позвати методе на везама. Вишеструке радње се могу извести по запису користећи ; оператера. Не можете модификовати табелу која је предмет ForAll функције.

Када пишете формулу, имајте на уму да се записи могу обрађивати било којим редоследом и, када је то могуће, паралелно. Први запис табеле може се обрадити након последњег записа.

Пазите да не избегавате наручивање зависности. Из тог разлога, не можете користити функције УпдатеЦонтеxт , Цлеар и ЦлеарЦоллецт унутар ForAll функције, јер се лако могу користити за држање варијабли које би биле подложне овом ефекту. Можете користити Collect, али редослед додавања записа није дефинисан.

Неколико функција које мењају изворе података, укључујући Collect, Remove и Update, враћају измењени извор података као своју враћену вредност. Ове повратне вредности могу бити велике и троше значајне ресурсе ако се врате за сваки запис табеле ForAll . Такође можете открити да ове повратне вредности нису оно што очекујете, јер ForAll могу да раде паралелно и могу одвојити нежељене ефекте ових функција од добијања њиховог резултата. Ако се повратна вредност из ForAll не користи, што је често случај са функцијама за модификацију података, онда повратна вредност неће бити креирана и нема проблема са ресурсима или редоследом. Али ако користите резултат и ForAll једну од функција које враћају извор података, пажљиво размислите о томе како структурирате резултат и испробајте га прво на малим скуповима података.

Алтернативе

Многе функције у Повер Аппс-у могу обрадити више од једне вредности истовремено користећи табелу са једном колоном. На пример, Лен функција може да обради табелу текстуалних вредности, враћајући табелу дужина, на исти начин, који ForAll би могао. Ово може елиминисати потребу за употребом ForAll у многим случајевима, може бити ефикаснији и лакши за читање.

Још једно разматрање је да ForAll се не може делегирати, док друге функције могу бити, као што је Филтер .

Делегирање

Када ову функцију користите уз извор података, не можете је делегирати. Само први део извора података ће бити преузет, а затим примењена функција. Резултат можда не представља комплетну слику. Упозорење може да се приказује у тренутку креирања као подсетник на ово ограничење и да вам предложи прелазак на алтернативне опције које је могуће делегирати, где је то могуће. Више информација потражите у прегледу делегирања.

Синтакса

ForAll( Табела , формула )

  • Табела - Обавезно. Табела на коју треба реаговати.
  • Формула - Обавезно. Формула за оцену свих записа табеле.

Примери

Израчунавања

Следећи примери користе Squaresизвор података:

Пример квадрата.

Да бисте креирали овај извор података као колекцију, подесите својство OnSelect контроле Дугме на ову формулу, отворите режим прегледа, а затим изаберите дугме:

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

Формула Опис Резултат
ForAll( Квадрати, Скрт( Вредност ) )

Скрт ( квадрати )
Израчунава квадратни корен од колоне Вредност за све записе табеле уноса. Функција Скрт се такође може користити са табелом са једном колоном, што омогућава извођење овог примера без употребе ForAll. Пример функције Sqrt.
ForAll( Квадрати, снага ( вредност, 3 ) Израчунава куб од колоне Вредност за све записе табеле уноса. Функција Повер не подржава табеле са једном колоном. Стога , ForAll мора се користити у овом случају. Пример функције Power.

Коришћење везе

Следећи примери користе Expressionsизвор података:

Пример израза.

Да бисте креирали овај извор података као колекцију, подесите својство OnSelect контроле Дугме на ову формулу, отворите режим прегледа, а затим изаберите дугме:

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

Овај пример такође користи везу Microsoft Translator. Да бисте додали ову везу у апликацију, погледајте чланак о томе како да управљате везама.

Формула Опис Резултат
ForAll(Изрази , МицрософтТранслатор.Транслате(Вредност, "ес")) За све записе у табели Изрази, преведите садржај колоне Вредност на шпански (скраћено „es“). Пример са вредношћу
ForAll(Изрази , МицрософтТранслатор.Транслате(Вредност, "фр")) За све записе у табели Изрази, преведите садржај колоне Вредност на шпански (скраћено „fr“). Пример са вредношћу

Копирање табеле

Понекад је потребно да филтрирате, обликујете, сортирате и манипулишете подацима. Power Apps пружа бројне функције за то, попут Filter, AddColumns и Sort. Повер Аппс третира сваку табелу као вредност, омогућавајући јој да тече кроз формуле и лако се троши.

А понекад желите да направите копију овог резултата за каснију употребу или желите да преместите информације са једног извора података у други. Power Apps пружа функцију Collect за копирање података.

Али пре него што направите ту копију, добро размислите да ли је то потребно. Многе ситуације се могу решити филтрирањем и обликовањем основног извора података на захтев помоћу формуле. Неки од недостатака прављења копије укључују:

  • Две копије истих података значе да једна од њих може испасти из синхронизације.
  • Израда копије може заузети велики део меморије рачунара, опсега мреже и/или времена.
  • За већину извора података, копирање се не може делегирати, ограничавајући колико података може бити премештено.

Следећи примери користе Productsизвор података:

Пример извора података о производима.

Да бисте креирали овај извор података као колекцију, подесите својство OnSelect контроле Дугме на ову формулу, отворите режим прегледа, а затим изаберите дугме:

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 }
    )
)

Наш циљ је да радимо са табелом извода која укључује само оне предмете где је тражено више него што је доступно и које је потребно да наручимо:

Пример деривата табеле.

Овај задатак можемо да обавимо на неколико различитих начина, који сви дају исти резултат, уз различите предности и недостатке.

Обликовање табеле на захтев

Немојте правити ту копију! Следећу формулу можемо користити где год нам је потребно:

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

Опсег записа је креиран од стране функција Filter и AddColumns за обављање операција поређења и одузимања, по том реду, са пољима „Захтевана количина“ и „Доступна количина“ сваког записа.

У овом примеру се функција Filter може делегирати. Ово је важно, јер се у табели од милион записа могу наћи сви производи који испуњавају критеријуме, чак и ако је то само неколико записа. У овом тренутку, СховЦолумнс и АддЦолумнс не могу бити делегирани, тако да је стварни број производа које треба наручити ограничен. Ако знате да је величина овог резултата увек релативно мала, овај приступ је у реду.

И зато што нисмо направили копију, нема додатне копије информација за управљање или застарео.

ForAll на захтев

Други приступ је да користите ForAll функцију за замену функција обликовања табеле:

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

Ова формула може неким људима бити једноставнија за читање и писање.

Ниједан део није ForAll преносив. Процењује се само први део табеле Производи , што би могло бити проблем ако је ова табела велика. Зато што је Filter било могуће делегирати у претходном примеру, то може боље да ради са великим скуповима података.

Прикупи резултат

У неким ситуацијама може бити потребна копија података. Можда ћете морати да преместите информације из једног извора података у други. У овом примеру, наруџбине се постављају путем табеле NewOrder у систему добављача. За брзе корисничке интеракције, можда ћете желети да кеширате локалну копију табеле тако да нема кашњења сервера.

Користимо исто обликовање табеле као претходна два примера, али резултат снимамо у колекцију:

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'
            }
        )
    )
)

ЦлеарЦоллецт и Цоллецт се не могу делегирати. Као резултат, количина података која се може премештати на овај начин је ограничена.

Сакупите у року ForAll

Коначно , можемо извршити Цоллецт директно у : ForAll

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

Опет , ForAll функција се не може делегирати у овом тренутку. Ако је наша табела производа велика, ForAll гледа само на први скуп записа и можда ћемо пропустити неке производе које треба наручити. Али за табеле за које знамо да остају мале, овај приступ је у реду.

Имајте на уму да не хватамо резултат . ForAll Позиви функције Цоллецт направљени из њега враћају извор података НевОрдер за све записе, што би могло додати бројним подацима ако бисмо га снимали.

Мапирање табеле у компоненти

Погледајте Мапирање табела.