Užklausų apribojimai: delegavimo ir užklausų apribojimai

Delegavimo supratimas

Power Apps Geriausiai veikia su vidiniu duomenų šaltinis, kai Power Fx užklausą galima visiškai išversti į lygiavertę užklausą, kurią galima vykdyti duomenų šaltinis. Power Apps Siunčia duomenų šaltinis suprantamą užklausą, užklausa atliekama duomenų šaltinis ir užklausos rezultatai grąžinami Power Apps. Pavyzdžiui, duomenų šaltinis gali filtruoti duomenų šaltinis duomenis ir pateikti tik tas eilutes, kurios atitinka filtro kriterijus. Kai tai veikia tinkamai, sakome, kad užklausa perduota duomenų šaltinis atlikti 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ų šaltinis 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šų Power Apps , kad būtų išsaugotas geras našumas 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ų šaltinis duomenys viršija 500/2000 įrašų. Pavyzdžiui, apsvarstykite pavyzdį, kai jūsų duomenų šaltinis turi 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ų šaltinis 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 kokį duomenų šaltinis 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ų šaltinis 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 jungčių dokumentuose tai nurodoma. Pavyzdžiui, šie lentelių duomenų šaltiniai yra patys populiariausi ir jie palaiko perdavimą:

Importuotų „Excel“ darbaknygių (naudojant Į programą įtraukti statinius duomenis duomenų šaltinį), rinkinių ir lentelių, saugomų kontekstiniuose 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ą .... ... ...

Filtro ir Peržvalgos funkcijas galite naudoti su lentelės stulpeliais ir pasirinkti tinkamus įrašus:

  • Ir (įskaitant &&), Arba (įskaitant ||), Ne (įskaitant !)
  • Srityje

    Pastaba

    In veikia tik stulpeliuose pagrindiniame duomenų šaltinyje. Pavyzdžiui, jei duomenų šaltinis yra lentelė Klientai, tada Filter(Accounts, Name in ["name1", "name2"]) perduodama duomenų šaltiniui, kad būtų galima įvertinti. Tačiau Filter(Accounts, PrimaryContact.Fullname in ["name1", "name2"]) neperduodama, nes stulpelis Fullname yra kitoje lentelėje (PrimaryContact), o ne Klientai. Reiškinys įvertinamas vietoje.

  • =, <>, >=, <=, >, <
  • +, -
  • TrimEnds
  • IsBlank
  • StartsWith, EndsWith
  • Pastoviosios reikšmės, vienodos visuose įrašuose, pvz., valdiklių 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šų stulpelių, todėl visiems įrašams pateikia tokią pačią reikšmę. Šias reikšmes galima siųsti į duomenų šaltinį kaip pastovias ir neblokuoti perdavimo.

Ankstesniame sąraše nėra šių pastebimų elementų:

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

Rikiuoti ir SortByColumns galima perduoti.

Naudojant Rikiavimą formulė gali būti tik vieno stulpelio pavadinimas ir negali būti kitų operatorių arba funkcijų.

Agregavimo funkcijos

Kai kurios sudėtinės funkcijos gali būti perduotos atsižvelgiant į palaikymą užpakalinėje dalyje. Funkcijas Suma, Vidurkis, Min. ir Maks. galima perduoti. Skaičiavimo funkcijos, pvz., CountRows ir Count, taip pat gali būti deleguotos. Šiuo metu šias funkcijas deleguoti palaiko tik nedaugelis duomenų šaltinių. Daugiau informacijos rasite Delegacijų sąrašas.

"RemoveIf" ir "UpdateIf " perdavimo palaikymas yra eksperimentinis ir išjungtas pagal numatytuosius nustatymus.

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 parinkimo formule, kurios negalima perduoti naudojant duomenų šaltinį su milijonu įrašų. Filtravimas atliekamas vietoje, todėl nuskaitoma tik 500 pirmųjų įrašų. Jei pageidaujamas įrašas yra 501 arba 500 001, Filtras į jį neatsižvelgia ir nepateikia.

Agregavimo funkcijos taip pat gali sukelti painiavos. Naudokite Vidurkį tam milijono įrašų duomenų šaltinio stulpeliui. Vidurkis šiuo atveju negali būti perduodamas, nes išraiška nėra perduota ( žiūrėkite ankstesnę pastabą), tad apskaičiuojamas tik pirmų 500 įrašų vidurkis. 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:

  1. Paspauskite Parametrai.
  2. Dalyje Bendra pakeiskite duomenų eilutės apribojimo parametrą nuo 1 iki 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ų šaltinis tipą pagal anksčiau šiame straipsnyje pateiktą deleguojamų duomenų šaltinių sąrašą.

Pavyzdžiai

Šiame pavyzdyje automatiškai sugeneruosite trijų ekranų programą, pagrįstą „SQL Server“ lentele, pavadinta [dbo].[Fruit]. Norėdami gauti informacijos apie tai, kaip generuoti programą, panašius principus galite taikyti straipsnyje apie Dataverse "SQL Server".

Trijų ekranų programa.

Galerijos Elementų ypatybė nustatoma kaip formulė, kurioje yra SortByColumns ir Ieškos funkcijos, kurias galima perduoti.

Ieškos lauke įveskite „Obuol“.

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šų.

Ieškos teksto įvesties valdiklis.

Ieškos rezultatuose yra Obuoliai ir Ananasai, nes funkcija Ieškoti ieško visame teksto stulpelyje. Jei iš pradžių norite rasti tik įrašus, kuriuose yra paieškos terminas, galite naudoti kitą išvalomą funkciją Filtras su daugiau sudėtingesnių ieškos terminų. (Kad būtų paprasčiau, pašalinkite SortByColumns iškvietą.)

SortByColumns iškvietos šalinimas.

Naujuose rezultatuose bus Obuoliai, bet nebus Ananasas. 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:

Įspėjimas laikant žymeklį virš perdavimo.

„SQL Server“ yra perduodamas 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 perkelti į įrenginį ir Filtras 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 netinkamo duomenų eilučių limitų našumui poveikis
Našumo patarimai ir geriausia praktika perdavimo valdymui

Pastaba

Ar galite mums pranešti apie dokumentacijos kalbos nuostatas? Atlikite trumpą apklausą. (atkreipkite dėmesį, kad ši apklausa yra anglų kalba)

Apklausą atliksite per maždaug septynias minutes. Asmeniniai duomenys nėra renkami (privatumo nuostatos).