Muistiinpano
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
Seuraa näitä suosituksia saadaksesi Execute DAX Queries REST API:n parhaan hyödyn tuotantokuormissa.
Valitse oikea päätepiste
Muistio
Execute DAX Queries API on saatavilla vain semanttisille malleille, jotka sijaitsevat Power BI-kapasiteetilla (Premium, Fabric tai Embedded). Semanttisia malleja ilman kapasiteetin määrittelyä ei tueta.
Power BI tarjoaa kaksi REST-rajapintaa DAX-kyselyiden suorittamiseen. Valitse se, joka vastaa asiakkaasi kykyjä:
-
Suorita DAX-kyselyt (nuoli) — Käytä aina kun asiakassovelluksesi voi käyttää binäärisiä Arrow IPC -virtoja. Arrow tarjoaa pienempiä hyötykuormia, häviötöntä tyyppitarkkuutta ja nollakopioiden deserialisoinnin pylväsmäisiin kehyksiin kuten pandas, Polars ja Apache Spark. Tämä API tukee myös kehittyneitä parametreja kuten
queryTimeoutjaresultsetRowcountLimit. Vaatii Premium- tai Fabric-kapasiteetin. - Suorita kyselyt (JSON) — Käytä, kun kuluttajasi on low-code/no-code -alusta, Power Automate flow tai mikä tahansa työkalu, joka pystyy jäsentämään vain JSON:n. Tämä API toimii Pro-, PPU- ja Premium/Fabric-kapasiteeteilla, mutta sen kova raja on 100 000 riviä ja 1 000 000 arvoa per kysely.
Yleissääntönä, jos tulosjoukkosi ylittää muutaman sadan rivin, syöttää analytiikkaputkeen tai vaatii tarkkaa tyyppitarkkuutta, käytä Execute DAX Queries API:ta Arrow-toiminnolla.
Optimoi DAX-kyselyt Arrow-päätepisteelle
Tehokas DAX vähentää sekä kyselyjen suoritusaikaa että vasteen hyötykuorman kokoa:
- Palauta vain tarvitsemasi sarakkeet. Käytä
SELECTCOLUMNStai käytä eksplisiittisiä sarakelistoja kokonaisia taulukoita palauttamisen sijaan. Jokainen ylimääräinen sarake lisää skeemaa ja tietueen erän kokoa. - Suosi
SUMMARIZECOLUMNSmieluumminADDCOLUMNS.FILTERSUMMARIZECOLUMNStuottaa tehokkaampia kyselysuunnitelmia VertiPaq-moottorissa. - Käytä
TOPNrivien rajoittamiseen. Kun tarvitset vain parhaat tulokset,TOPNse työntää rajan moottoriin sen sijaan, että siirtäisi kaikki rivit ja suodattaisi asiakaspuolen. - Vältä monimutkaisia laskettuja sarakkeita kyselyissä. Mittaukset ja aggregaatiot ovat hyviä, mutta rivitason laskelmat suurilla tauluilla voivat hidastaa suoritusta merkittävästi.
- Yhdistä useita
EVALUATElauseita yhdeksi pyynnöksi. Execute DAX Queries API tukee useitaEVALUATElauseita yhdenquerymerkkijonon sisällä, joista kukin palauttaa oman tulosjoukon. Tämä välttää erillisten HTTP-edestakaisten matkojen ylikuormituksen.
Hallinnoi tunnistautumista tehokkaasti
- Välimuisti ja käytä tokeneita uudelleen. Käytä MSAL:n sisäänrakennettua token-välimuistia välttääksesi Microsoft Entra ID:n kutsumisen jokaiseen pyyntöön. Luottamuksellisissa asiakasvirroissa MSAL välimuistittaa tokenit automaattisesti, kun käytät samaa
ConfidentialClientApplicationinstanssia uudelleen. - Käytä luottamuksellisia asiakastunnuksia palveluissa. Valvomattomissa keskitasoisissa palveluissa käytä asiakastunnuksia (asiakassalaisuus tai sertifikaatti) delegoitujen käyttäjätunnusten sijaan. Tämä välttää riippuvuuden kirjautuneesta käyttäjäsessiosta.
- Suosi hallittuja identiteettejä Azure:ssa. Kun palvelusi toimii Azure:ssa (App Service, Functions, AKS), käytä hallittua identiteettiä poistaaksesi tunnistetietojen hallinnan kokonaan.
- Käsittele tokenin vanheneminen tyylikkäästi. Access-tokenit vanhenevat tyypillisesti tunnin kuluttua. Tarkista vastaukset
401 Unauthorizedja päivitä token ennen uudelleenyrittämistä.
Käsittele virheitä ja uusintayrityksiä
Execute DAX Queries API voi palauttaa virheitä kahdella tavalla:
HTTP-tason virheet — Tavalliset HTTP-tilakoodit, joissa on JSON-virhekappale. Yleiset koodit:
Tilakoodi Merkitys Toiminto 400Huono pyyntö (virheellinen DAX, puuttuvat parametrit) Korjaa pyyntö — älä yritä uudelleen. 401Luvaton (vanhentunut tai virheellinen token) Päivitä token ja yritä kerran. 403Kielletty (riittämättömät oikeudet) Varmista, että kutsujalla on Build- ja Read -oikeudet semanttisessa mallissa. 429Liian monta pyyntöä (rajoitettu) Odota otsikon kestoa Retry-Afterja yritä uudelleen.500/502/503Väliaikaiset palvelinvirheet Yritä uudelleen eksponentiaalisella peruutuksella. Virtatason virheet — HTTP 200, jossa virherivijoukko on upotettu Arrow-vastaukseen. Tarkista Arrow-skeeman metatiedot
IsError=trueja lueFaultCodeFaultStringmetatietojen arvot sekä virherivit saadaksesi yksityiskohtaiset sijaintitiedot.
Väliaikaisissa virheissä toteuta eksponentiaalinen takaisku, jossa käytetään jitteriä. Aloita yhdestä sekunnista, tuplaa jokaisella uusintayrityksellä ja rajoita 30 sekuntiin. Rajoita uusintayritykset kolmeen tai neljään yritykseen.
Ohjaustulosjoukon koko
Suuret tulosjoukot kuluttavat muistia sekä palvelun kapasiteetilta että kutsuvalta asiakkaalta. Jokainen pyyntö on sidottu kapasiteetin muistirajaan.
Jotta tulosjoukot pysyisivät hallittavina:
- Asetetaan
resultsetRowcountLimitpyyntörunkoon. Tämä asettaa palvelinpuolen rivin rajoituksen tulosjoukkoa kohden. Jos tiedät, että kuluttajasi tarvitsee vain 10 000 riviä, aseta raja selkeästi. - Käytä
TOPNDAX-kyselyssäsi.TOPNrajoittaa rivejä moottoritasolla, mikä on tehokkaampaa kuin asiakaspuolen katkaiseminen. - Käsittele kirjauserät asteittain. Nuolivastteet jaetaan ennätyseriksi, joissa on jopa 100 000 riviä. Python:ssa iteroi erissä
reader.read_next_batch()sen sijaan, että kutsuisitreader.read_all()suurilla tuloksilla, jotta muistin käyttö pysyy tasaisena.
Varmista keskitasoinen palvelusi
Jos rakennat keskitasoisen palvelun, joka välittää DAX-kyselyt alavirran kuluttajille:
- Vahvista soittajan henkilöllisyys. Tunnista saapuvat pyynnöt Microsoft Entra ID:llä tai muulla identiteettipalveluntarjoajalla ennen kyselyjen välittämistä Power BI:lle. Älä koskaan paljasta Execute DAX Queries -päätepistettä avoimena välityspalvelimena.
- Ota käyttöön pienin käyttöoikeus. Myönnä palvelupäähenkilölle vain ne oikeudet, joita se tarvitsee (rakentaa ja lue tietyillä semanttisilla malleilla). Älä käytä workspacen ylläpitäjä- tai vuokralaisylläpitäjän rooleja API-yhteyksiin.
- Älä upota tunnuksia koodiin. Tallenna asiakassalaisuudet Azure Key Vault -sovellukseen tai käytä hallittuja identiteettejä. Kierrätä salaisuuksia säännöllisesti.
- Puhdista DAX-syöte. Jos keskitasoinen pelaajasi hyväksyy DAX-kyselytekstin soittajilta, validoi syöte estääksesi odottamattomien toimintojen injektion.
- Käytä parametria
effectiveUsernamevaroen. Tämä parametri koskee Row-Level turvallisuutta tietyn käyttäjän puolesta. Varmista, että soittava henkilöllisyys on valtuutettu esiintymään nimettynä käyttäjänä.
Seuranta ja lokiin kirjaaminen
Seuraa API:n käytön terveyttä ja suorituskykyä:
- Lokikyselyn metatiedot — Kirjaa kyselyn teksti, vastauksen koko, HTTP-tila ja kesto jokaiselle pyynnölle. Tämä auttaa tunnistamaan hitaita kyselyjä ja odottamattomia virhepiikkejä.
-
Seuraa rajoitusnopeuksia — Seuraa
429vastauksia prosenttiosuutena kaikista pyynnöistä. Nouseva trendi viittaa siihen, että sinun täytyy vähentää pyyntöjen määrää tai jakaa kuormaa ajassa. - Mittaa deserialisointiaika — Arrow-vastauksissa kirjaa aika, joka kuluu tietueerien lukemiseen ja materialisointiin, erikseen HTTP:n edestakaisesta ajasta. Tämä auttaa erottamaan verkon viiveen asiakaspuolen käsittelystä.
- Käytä Application Insightsia tai vastaavaa — Jos keskitasosi toimii Azure, ota Application Insights käyttöön riippuvuuksien seuranta, vikahälytykset ja päästä päähän hajautetun jäljityksen.
- Seuraa token-välimuistin osumaprosentteja — Alhaiset välimuistin osumisprosentit tarkoittavat toistuvia token-hankintakutsuja, jotka lisäävät viivettä ja ovat merkki MSAL-välimuistin väärinasettelusta.