Užklausų apribojimai: delegavimo ir užklausų apribojimai
Delegavimo supratimas
Power Apps Geriausiai veikia su vidiniu duomenų šaltiniu, kai užklausą galima visiškai išversti Power Fx į lygiavertę užklausą, kurią galima vykdyti duomenų šaltinyje. Power Apps Siunčia užklausą, kurią supranta duomenų šaltinis, užklausa atliekama duomenų šaltinyje ir užklausos rezultatai grąžinami Power Apps. Pavyzdžiui, duomenų šaltinis gali filtruoti duomenų šaltinio duomenis ir pateikti tik tas eilutes, kurios atitinka filtravimo kriterijus. Kai tai veikia tinkamai, sakome, kad užklausa perduota duomenų šaltiniui, kad jis atliktų užklausos darbą.
Power Fx Tačiau užklausas ne visada galima išversti į lygiavertes užklausas visuose duomenų šaltiniuose. Pavyzdžiui, Dataverse palaiko daugiau užklausų funkcijų nei "Excel". Dataverse palaiko "in" (narystės) užklausos operatorių, o "Excel" – ne. Sakome, kad užklausa neperduodama , jei užklausoje naudojama funkcija, kurios duomenų šaltinis nepalaiko. Apskritai, jei kuri nors užklausos išraiškos dalis yra neperduodama, mes neperduodame jokios užklausos dalies.
Kai užklausa yra neperduodama, Power Apps iš duomenų šaltinio gauna tik pirmuosius 500 įrašų ir tada atlieka užklausos veiksmus. Šį apribojimą galima padidinti iki 2 000 įrašų Pakeitus limitą , rezultato dydis apribojamas iki 500 įrašų, kad būtų išsaugotas geras našumasPower Apps . Power Apps Eksperimentuodami nustatėme, kad dėl didesnių nei šie dydžiai rezultatų rinkinių kyla programos ir Power Apps apskritai našumo problemų.
Tačiau šis apribojimas gali būti problema, nes užklausa gali pateikti neteisingus rezultatus, jei duomenų šaltinio duomenys viršija 500/2000 įrašų. Pavyzdžiui, apsvarstykite pavyzdį, kai jūsų duomenų šaltinyje yra 10 milijonų įrašų ir jūsų užklausa turi veikti su paskutine duomenų dalimi. (Pavyzdžiui, pavardės, prasidedančios raide "Z") Tačiau jūsų užklausoje yra neperduodamas operatorius (pvz., atskiras.) Tokiu atveju gausite tik pirmuosius 500/2000 įrašų ir gausite neteisingus rezultatus.
Power Fx Kurkite užklausas naudodami duomenų šaltinio perduodamas lenteles. Turėtumėte naudoti tik tas užklausos funkcijas, kurias galima perduoti. Tai vienintelis būdas užtikrinti, kad programa veiktų gerai, ir užtikrinti, kad naudotojai galėtų pasiekti visą reikiamą informaciją.
Atkreipkite dėmesį į perdavimo įspėjimus, kuriuose nurodomos vietos, kur perdavimas neįmanomas. Jei dirbate su mažais duomenų rinkiniais (mažiau nei 500 įrašų), galite naudoti bet kurį duomenų šaltinį ir formulę, nes programa gali apdoroti duomenis vietoje, jei formulės negalima perduoti.
Pastaba.
Perdavimo įspėjimai padeda valdyti programą, kad ji pateiktų teisingus rezultatus. Jei jūsų duomenų šaltinio duomenys viršija 500 įrašų ir funkcijos perduoti negalima, Power Fx formulę pažymės mėlynu pabraukimu.
Perduotini duomenų šaltiniai
Perdavimas palaikomas tik kai kuriems lentelių duomenų šaltiniams. Jei duomenų šaltinis palaiko perdavimą, jo jungties dokumentacijoje aprašomas palaikymas. Pavyzdžiui, šie lentelių duomenų šaltiniai yra patys populiariausi ir jie palaiko perdavimą:
- Power Apps perduodamos funkcijos ir operacijos, skirtos Microsoft Dataverse
- Power Apps perduodamos funkcijos ir operacijos, skirtos SharePoint
- Power Apps deleguojamos funkcijos ir operacijos SQL serveriui
- Power Apps perleidžiamos "Salesforce" funkcijos ir operacijos
Importuotų "Excel" darbaknygių (naudojant statinių duomenų įtraukimą į programos duomenų šaltinį), rinkinių ir lentelių, saugomų konteksto kintamuosiuose, perduoti nereikia. Visi šie duomenys jau yra atmintyje ir galima pritaikyti visą „Power Apps“ kalbą.
Perduodamos funkcijos
Tolesnis veiksmas yra naudoti tik formules, kurias galima perduoti. Čia įtraukti formulės elementai, kuriuos galima perduoti. Tačiau kiekvienas duomenų šaltinis yra skirtingas ir ne visi iš jų palaiko visus šiuos elementus. Patikrinkite perdavimo įspėjimus konkrečioje formulėje.
Filtro funkcijos
Galima perduoti filtrą, paiešką, pirmąją ir peržvalgą .
Funkcijose Filtras ir Peržvalga galite jas naudoti su lentelės stulpeliais, kad pasirinktumėte atitinkamus įrašus:
- Ir (įskaitant &&), Arba (įskaitant ||), Ne (įskaitant !)
-
Į
Pastaba.
In deleguojamas tik pagrindinio duomenų šaltinio stulpeliams. Pavyzdžiui, jei duomenų šaltinis yra lentelė Klientai , tada
Filter(Accounts, Name in ["name1", "name2"])
deleguojama į duomenų šaltinį vertinimui. Tačiau nedeleguoja,Filter(Accounts, PrimaryContact.Fullname in ["name1", "name2"])
nes stulpelis Fullname yra kitoje lentelėje (PrimaryContact) nei Abonementai. Reiškinys įvertinamas vietoje. - =, <>, >=, <=, >, <
- +, -
- "TrimEnds"
- IsBlank
- PrasidedaIš,BaigiasiSu...
- Pastovios reikšmės, kurios yra vienodos visuose įrašuose, pvz., valdiklio ypatybės ir visuotiniai bei konteksto kintamieji.
Taip pat galite naudoti formulės dalis, įvertinančias pastovią visų įrašų reikšmę. Pavyzdžiui,Left ( Language(), 2 ), Date( 2019, 3, 31 )ir Today() nepriklauso nuo jokių įrašo stulpelių, todėl pateikia tą pačią reikšmę visiems įrašams. Šias reikšmes galima siųsti į duomenų šaltinį kaip pastovias ir neblokuoti perdavimo.
Ankstesniame sąraše nėra šių pastebimų elementų:
- Jeigu
- *, /, Mod
- Stulpelių liejimo operacijos Tekstas, Reikšmė
- Sujungti (įskaitant &)
- TikslusIn
- Eilučių manipuliavimo funkcijos: Apatinė,Viršutinė,Kairė,Vidurinė,Len............, ...
- Signalai: vieta, pagreitis, kompasas ..., ...
- Lakiosios medžiagos: Rand, ...
- Kolekcijos
Užklausų apribojimai
Peržvalgos lygiai
Power Apps palaiko du peržvalgos lygius. Tai reiškia, kad Power Fx užklausos išraiška gali turėti ne daugiau kaip dvi peržvalgos funkcijas. Šiuo apribojimu siekiama išsaugoti našumą. Jei užklausos išraiškoje yra peržvalga, Power Apps pirmiausia pateikiama užklausa pagrindinei lentelei gauti. Tada ji atlieka antrą užklausą, kuri išplečia pirmąją lentelę peržvalgos informacija. Mes palaikome dar vieną lygį, kuris yra maksimalus. Tačiau neprisijungus palaikome tik vieną peržvalgos išplėtimo lygį.
Išraiškos vertinimas - subjekto nuosavybė turi būti kairėje lygybės operatoriaus "LHS" pusėje
Svarbu lyginamo objekto ypatybę išdėstyti išraiškoje kairėje lygties pusėje "LHS". Pavyzdžiui, toliau pateiktame pavyzdyje objekto ypatybė "Verslo vieneto ID". Pavadinimas yra ypatybės reikšmė ir ji turi būti įtraukta į vertinamos išraiškos LHS. Toliau pateikta išraiška pavyksta:
Filter(
Budgets,
'Business unit ID'.Name = LookUp(
Users,
'Primary Email' = User().Email,
'Business Unit'
).Name,
DataCardValue37.Selected.'Date Range String'='Date Range String'
)
Tačiau šis reiškinys nebus:
Filter(
Budgets,
LookUp(
Users,
'Primary Email' = User().Email,
'Business Unit'
).Name = 'Business unit ID'.Name,
'Date Range String'=DataCardValue37.Selected.'Date Range String'
)
Rikiavimo funkcijos
Rūšiavimas ir SortByColumns gali būti deleguoti.
Dalyje Rikiuoti formulė gali būti tik vieno stulpelio pavadinimas ir negali apimti kitų operatorių ar funkcijų.
Agregavimo funkcijos
Tam tikros sudėtinės funkcijos gali būti perduotos remiantis vidiniu palaikymu. Tokios funkcijos kaip Suma, Vidurkis, Min. ir Maks. Skaičiavimo funkcijos, pvz., CountRows ir Count, taip pat gali būti deleguotos. Tačiau "RemoveIf" ir "UpdateIf" turi delegavimo apribojimų. Šiuo metu tik ribotas duomenų šaltinių skaičius palaiko šių funkcijų perdavimą. Daugiau informacijos rasite delegacijų sąraše.
neperleidžiamos funkcijos
Visos kitos funkcijos nepalaiko perdavimo, įskaitant šias žinomas funkcijas:
nenukrypstančios ribos
Formulės, kurios negali būti perduotos, bus apdorojamos vietoje. Vietinis apdorojimas leidžia naudoti visą formulės kalbos plotį Power Apps . Tačiau tai turi savo kainą: visi duomenys pirmiau turi būti pateikti į įrenginį – tai gali reikšti didelio duomenų kiekio nuskaitymą tinkle. Tai gali užtrukti ir atrodys, kad programa veikia lėtai arba užstrigo.
Siekiant to išvengti, „Power Apps“ nustato duomenų, kuriuos galima apdoroti vietoje, apribojimą: pagal numatytuosius nustatymus 500 įrašų. Pasirinkome šį skaičių, kad vis tiek turėtumėte visišką prieigą prie mažų duomenų rinkinių ir galėtumėte patikslinti didelių duomenų rinkinių naudojimą matydami dalinius rezultatus.
Akivaizdu, kad tai naudojant reikia atsargumo, nes vartotojams gali kilti painiavos. Pavyzdžiui, apsvarstykite filtro funkciją su pasirinkimo formule, kurios negalima perduoti, virš duomenų šaltinio, kuriame yra milijonas įrašų. Filtravimas atliekamas vietoje, todėl nuskaitoma tik 500 pirmųjų įrašų. Jei norimas įrašas yra 501 arba 500 001, filtras jo nelaiko ir negrąžina.
Agregavimo funkcijos taip pat gali sukelti painiavos. Paimkite Vidurkis per to paties milijono įrašų duomenų šaltinio stulpelį. Šiuo atveju vidurkio perduoti negalima, nes reiškinis neperduotas (žr. ankstesnę pastabą ),todėl tik pirmųjų 500 įrašų vidurkis apskaičiuojamas pagal vidurkį. Jei nesate atidūs, dalinį atsakymą programos vartotojas gali klaidingai suprasti kaip išsamų atsakymą.
Apribojimo keitimas
500 yra numatytasis įrašų skaičius, tačiau šį skaičių galite pakeisti visoje programoje:
- Paspauskite Parametrai.
- Dalyje Bendra pakeiskite duomenų eilutės limito parametrą iš 1 į 2000.
Kai kuriais atvejais žinote, kad 2 000 (arba 1 000 ar 1 500) patenkins jūsų scenarijaus poreikius. Atsargiai galite padidinti šį skaičių atsižvelgdami į savo scenarijų. Padidinus šį skaičių programos efektyvumas gali sumažėti, ypač naudojant plačias lenteles su daugybe stulpelių. Vis dar geriausias atsakymas yra perduoti tiek, kiek galite.
Jei norite užtikrinti, kad programą būtų galima pritaikyti dideliems duomenų rinkiniams, sumažinkite šį nustatymą iki 1. Viskas, kas negali būti perduota, pateikiama vienu įrašu, kurį turėtų būti lengva aptikti testuojant programą. Tai gali padėti išvengti netikėtumų, bandant programą, kurios koncepcija tikrinama, pateikti į gamybą.
Perdavimo įspėjimai
Kad būtų lengviau žinoti, kas yra perduodama ir kas nėra, „Power Apps“ pateikiamas įspėjimas (geltonas trikampis), kai kuriate formulę, kurioje yra kažkas, ko negalima perduoti.
Perdavimo įspėjimai pasirodo tik formulėse, kurios veikia su perduodamais duomenų šaltiniais. Jei nematote įspėjimo ir manote, kad formulė nėra tinkamai perduodama, patikrinkite duomenų šaltinio tipą pagal anksčiau šiame straipsnyje pateiktą deleguojamų duomenų šaltinių sąrašą.
Pavyzdžiai
Šiame pavyzdyje automatiškai sugeneruosite trijų ekranų programą pagal SQL serverio lentelę pavadinimu [dbo].[ Vaisiai]. Norėdami gauti informacijos apie tai, kaip generuoti programą, panašius principus galite taikyti straipsnyje apie Dataverse "SQL Server".
Galerijos ypatybė Elementai nustatyta į formulę, kurioje yra funkcijos SortByColumns ir Search , kurias abi galima perduoti.
Paieškos laukelyje įveskite "Apple".
Ekrano viršuje trumpai pasirodo judantys taškai, nes programa bando susisiekti su „SQL Server“ ir apdoroti ieškos užklausą. Rodomi visi ieškos kriterijus atitinkantys įrašai, net jei duomenų šaltinį sudaro milijonai įrašų.
Paieškos rezultatuose yra "Obuoliai" ir "Ananasai", nes paieškos funkcija visur atrodo teksto stulpelyje. Jei norite rasti tik tuos įrašus, kuriuose vaisiaus pavadinimo pradžioje yra paieškos terminas, galite naudoti kitą perduodamą funkciją " Filtras" su sudėtingesniu paieškos terminu. (Kad būtų paprasčiau, pašalinkite SortByColumns skambutis.)
Nauji rezultatai apima "Obuoliai" bet ne "Ananasai". Tačiau šalia galerijos (ir ekrano miniatiūroje, jei kairiojoje naršymo juostoje rodomos miniatiūros) po formulės dalimi atsiranda geltonas trikampis ir mėlyna vingiuota linija. Kiekvienas iš šių elementų rodo įspėjimą. Jei užvesite žymeklį virš geltono trikampio šalia galerijos, pasirodys šis pranešimas:
SQL serveris yra deleguojamas duomenų šaltinis, o filtras yra perduodama funkcija, tačiau Mid ir Len negalima perduoti jokiam duomenų šaltiniui.
Tačiau tai juk veikė? Šiek tiek. Todėl tai yra įspėjimas, o ne raudonas banguotas vingis.
- Jei lentelėje yra mažiau nei 500 įrašų, formulė veikė puikiai. Visi įrašai buvo perkelti į įrenginį, o filtras buvo pritaikytas vietoje.
- Jei lentelėje yra daugiau nei 500 įrašų, formulė nepateiks 501 arba didesnio įrašo, net jeigu jis atitiks kriterijus.
Taip pat žr.
Neperduodamų funkcijų naudojimo ir netinkamų duomenų eilučių apribojimų poveikis veiksmingumui
Našumo patarimai ir geriausia delegavimo naudojimo praktika