Делите путем


Ограничења упита: ограничења за делегирање и упите

Разумевање делегирање

Power Apps најбоље функционише са задњом < ДИЦТ__извор података > дата соурце </ДИЦТ__извор података > Power Fx упит може у потпуности да се преведе у еквивалентни упит који се може покренути на < ДИЦТ__извор података > дата соурце</ДИЦТ__извор података >. Power Apps шаље упит који < ДИЦТ__извор података > дата соурце </ДИЦТ__извор података > разуме, упит се извршава на < ДИЦТ__извор података > дата соурце </ДИЦТ__извор података >, а резултати упита се враћају Power Apps. На пример, < ДИЦТ__извор података > дата соурце </ДИЦТ__извор података > може да изврши посао филтрирања података на < ДИЦТ__извор података > дата соурце </ДИЦТ__извор података > и да врати само редове који задовољавају критеријуме филтера. Када ово исправно функционише, кажемо да је упит делегиран < ДИЦТ__извор података > дата соурце </ДИЦТ__извор података > да би се урадио посао упита.

Међутим, упити Power Fx се не могу увек превести у еквивалентне упите на свим изворима података. На пример, подржава Dataverse више функција упита него Еxцел. Dataverse подржава оператор упита "ин" (чланство), а Еxцел не. Кажемо да упит не може да се избрише ако упит користи функцију коју < ДИЦТ__извор података > дата соурце </ДИЦТ__извор података > не подржава. Уопштено, ако било који део израза упита није делегиран, ми не делегирамо ниједан део упита.

Када упит не може да се избрише, добијате Power Apps само првих 500 записа из < ДИЦТ__извор података > дата соурце </ДИЦТ__извор података > а затим извршавате радње у упиту. Ово ограничење се може посути на 2.000 записа Промена ограничења ограничава Power Apps величину резултата на 500 записа да би се очувале добре перформансе Power Apps. Кроз експериментисање смо открили да резултат поставља веће од ових величина уводи проблеме са перформансама за вашу апликацију Power Apps и уопште.

Међутим, ово ограничење може да представља проблем јер упит може да врати нетачне резултате ако подаци на < ДИЦТ__извор података > дата соурце </ДИЦТ__извор података > премашују 500/2000 записа. На пример, узмите у обзир пример < ДИЦТ__извор података > дата соурце </ДИЦТ__извор података > рачунар има 10 милиона записа и да упит мора да ради на последњем делу података. (На пример, породична имена која почињу са 'З') Међутим, упит у њему има оператор који се не може делегивати (на пример, упечатљив.) У овом случају добијате само првих 500/2000 записа и имате нетачне резултате.

Креирајте Power Fx упите помоћу табела које се могу избрисати за < ДИЦТ__извор података > дата соурце </ДИЦТ__извор података >. Требало би да користите само функције упита које се могу делегирати. То је једини начин да ваша апликација ради добро и да осигура корисницима да могу да приступе свим потребним информацијама.

Обратите пажњу на упозорења о делегирању која идентификују места на којима делегирање није могуће. Ако радите са малим скуповима података (мање од 500 записа), можете да користите било који < ДИЦТ__извор података > дата соурце </ДИЦТ__извор података > и формулу јер апликација може да обрађује податке локално ако формула не може да се делегира.

Напомена

Упозорења о делегирању помажу вам да управљате својом апликацијом тако да има исправне резултате. Ако подаци у < ДИЦТ__извор података > дата соурце </ДИЦТ__извор података > премашују 500 записа, а функција не може да се делегира, Power Fx означиће формулу плавом линијом.

Извори података које је могуће делегирати

Делегирање је подржано само за одређене табеларне изворе података. Ако извор података подржава делегирање, документација за његов конектор истиче ту подршку. На пример, ови табеларни извори података су најпопуларнији и подржавају делегирање:

Увезене Excel радне свеске (које користе извор података Додавање статичких података у апликацију), колекције и табеле ускладиштене у променљивама контекста не захтевају делегирање. Сви ти подаци су већ у меморији и пуни Power Apps језик може да се примени.

Функције које се могу делегирати

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

Функције Филтерирања

Филтер,Претрага,Прва ... ... и Проналажење се могу делегирати.

Унутар функција Filter и LookUp, можете их користити са колонама табеле за одабир одговарајућих записа:

  • And (укључујући &&), Or (укључујући ||), Not (укључујући !)
  • In

    Напомена

    In се делегира само за колоне на основном извору података. На пример, ако је извор података табела Налози, тада се Filter(Accounts, Name in ["name1", "name2"]) делегира у извор података ради израчунавања. Међутим, Filter(Accounts, PrimaryContact.Fullname in ["name1", "name2"]) не делегира пошто се колона Име и презиме налази у другој табели (PrimaryContact) у односу на Accounts. Израз се израчунава локално.

  • =, <>, >=, <=, >, <
  • +, -
  • TrimEnds
  • IsBlank
  • StartsWith, EndsWith
  • Константне вредности које су исте у свим записима, као што су својства контрола и глобалне и променљиве контекста.

Такође можете користити делове своје формуле који као резултат дају константну вредност за све записе. На пример, Left( Language(), 2 ), Date( 2019, 3, 31 ) и Today() не зависе од било које колоне записа и стога враћају исту вредност за све записе. Ове вредности се могу послати у извор података као константа и неће блокирати делегирање.

Претходна листа не укључује ове значајне ставке:

Ограничења упита

Нивои проналажења

Power Apps подржава два нивоа проналажења. То значи да израз Power Fx упита може да има - највише - две функције за проналажење у њему. Ово ограничење је очување перформанси. Ако израз упита садржи проналажење, прво ће упит Power Apps добити основну табелу. Затим извршава други упит који проширује прву табелу помоћу информација о проналажењу. Подржавамо још један ниво изнад тога као максимум. Међутим, за ван мреже подржавамо само један ниво проналажења.

Евалуација израза - својство ентитета мора бити на левој страни 'ЛХС' оператора једнакости

Важно је поставити својство ентитета које треба упоредити у изразу на левој страни "ЛХС" једначине. Да илуструјем, у примеру испод својства ентитета ' ИД пословне јединице'. Име је вредност својства и мора се ставити на ЛХС израза да би био процењен. Следећи израз ће успети:

Filter(
        Budgets,
        'Business unit ID'.Name = LookUp(
            Users,
            'Primary Email' = User().Email,
            'Business Unit'
        ).Name,
        DataCardValue37.Selected.'Date Range String'='Date Range String'
    )

Међутим, овај израз неће:

 Filter(
        Budgets,
        LookUp(
            Users,
            'Primary Email' = User().Email,
            'Business Unit'
        ).Name = 'Business unit ID'.Name,
        'Date Range String'=DataCardValue37.Selected.'Date Range String'
    )

Функције сортирања

Sort и SortByColumns могу се делегирати.

У функцији Sort, формула може бити само назив једне колоне и не може укључити друге операторе или функције.

Агрегатне функције

Неке агрегатне функције могу бити делегиране у зависности од подршке на бек-енду. Sum, Average, Min и Max могу се делегирати. Такође се могу делегирати функције пописа као што су ЦоунтРоwс ... и Цоунт. Само ограничен број извора података подржава ове функције за делегирање у овом тренутку. Више информација потражите у чланку Листа делегација.

Подршка за делегирање РемовеИф и УпдатеИф је подразумевано искључена у експерименталном експерименту.

функције које се не делегишу

Све остале функције не подржавају делегирање, укључујући ове значајне функције:

ограничења која се не делегишу

Формуле које се не могу делегирати обрадиће се локално. Локална обрада омогућава да се користи пуна ширина Power Apps језика формуле. Али постоји цена: сви подаци се прво морају допремити на уређај, што би могло подразумевати преузимање велике количине података преко мреже. То може да потраје, што оставља утисак да је ваша апликација спора или је можда срушена.

Да бисте то избегли, Power Apps намеће ограничење за количину података који се могу локално обрадити: подразумева се 500 записа. Одабрали смо овај број да бисте и даље имали потпун приступ малим скуповима података и могли да побољшате употребу великих скупова података гледајући делимичне резултате.

Очигледно је да морате бити опрезни када користите овај објекат, јер може збунити кориснике. На пример, узмите у обзир функцију Filter са избором формуле која се не може делегирати, преко извора података који садржи милион записа. Пошто се Филтерирање обавља локално, скенира се само првих 500 записа. Ако се жељени запис налази на редном броју 501 или 500.001, он се не узима у обзир нити га функција filter враћа.

Агрегатне функције такође могу изазвати збрку. Узмимо за пример функцију Average над колоном истог извора података са милион записа. Просек није могуће делегирати у овом случају јер израз није делегиран (погледајте ранију белешку), па се упросечава само првих 500 записа. Ако нисте пажљиви, корисник апликације би могао да делимични одговор погрешно схвати као потпуни одговор.

Промена ограничења

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

  1. Изаберите Подешавања.
  2. У менију Општи подаци промените подешавање Ограничење реда података од 1 до 2000.

У неким случајевима знате да ће 2.000 (или 1.000 или 1.500) задовољити потребе вашег сценарија. Уз пажњу, можете повећати овај број како би одговарао вашем сценарију. Како повећавате овај број, перформансе апликације могу се погоршати, посебно за широке табеле са много колона. Ипак, најбољи одговор је да делегирате онолико колико можете.

Смањите ову поставку на 1 да бисте се уверили да апликација може да се подеси на велике скупове података. Све што не може да се делегирати вратиће само један запис, што би требало лако да откријете приликом тестирања апликације. Ово вам може помоћи да избегнете изненађења када покушате да промовишете апликацију за проверу концепта у производњу.

Упозорења о делегирању

Да бисте лакше сазнали шта се делегира, а шта не, Power Apps обезбеђује упозорење (троугао жуте боје) када креирате формулу која садржи нешто што се не може делегирати.

Упозорења о делегирању се приказују само у формулама које раде са изворима података који могу да се делегирају. Ако не видите упозорење и верујете да формула није правилно делегирана, погледајте тип < ДИЦТ__извор података > дата соурце </ДИЦТ__извор података > у односу на листу избрисаних извора података раније у овом чланку.

Примери

За овај пример, аутоматски ћете генерисати апликацију са три екрана засновану на SQL Server табели под називом [dbo].[Fruit]. За информације о генерисање апликације можете да примените сличне принципе у чланку о сqл Dataverse серверу.

Апликација са три екрана.

Својство галерије Items је постављено на формулу која садржи функције SortByColumns и Search, од којих обе могу да се делегирају.

У поље за претрагу упишите "Apple".

Покретне тачке се на тренутак појављују близу врха екрана док апликација комуницира са платформом SQL Server ради обраде захтева за претрагом. Приказаће се сви записи који испуњавају критеријуме за претраживање, чак и ако извор података садржи милионе записа.

Контрола уноса текста за претрагу.

Резултати претраге укључују "Apples" и "Pineapple" зато што функција Search тражи свуда у колони текста. Ако сте желели да пронађете само записе који садрже термин за претрагу на почетку имена воћа, можете користити другу функцију коју можете да делегирате, Филтер, са сложенијим термином за претрагу. (Ради једноставности, уклоните позив SortByColumns.)

Уклоните позив SortByColumns.

Нови резултати укључују "Apples", али не "Pineapple". Међутим, поред галерије се приказује троугао жуте боје (и на сличици екрана ако се у левој траци за навигацију приказују сличице), а испод дела формуле појављује се плава, таласаста линија. Сваки од ових елемената указује на упозорење. Ако задржите показивач изнад жутог троугла поред галерије, појављује се следећа порука:

Задржите показивач над упозорења о делегирању.

SQL Server је извор података који може да се делегира, а Filter је функција која може да се делегира; међутим, функције Mid и Len не могу да се делегирају ни у једном извору података.

Али успело је, зар не? Па, могло би се рећи. И зато је ово упозорење, а не црвена, таласаста шкработина.

  • Ако табела садржи мање од 500 записа, формула је функционисала савршено. Сви записи су пренети на уређај и функција Filter је примењена локално.
  • Ако табела садржи више од 500 записа, формула неће вратити запис 501 или виши, чак и ако одговара критеријумима.

Такође погледајте

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

Напомена

Можете ли нам рећи о својим жељеним поставкама језика у документацији? Испуните кратку анкету. (имајте на уму да је ова анкета на енглеском језику)

Анкета ће трајати око седам минута. Не прикупљају се лични подаци (изјава о приватности).