Suunnittelun skaalautuvat laskelmat

Valmis

Mallisi on jäsennelty. Suunnittele nyt laskelmat, jotka pitävät sen suorituskykyisenä ja ylläpidettävinä, kun datasi ja tiimisi kasvavat. Pienessä mittakaavassa malli, jossa on päällekkäiset mittaukset ja epäjohdonmukaiset nimet, toimii silti, vaikka se ei olisikaan ihanteellista. Mittakaavassa se hajoaa. Malli, jossa on satoja mittareita, tarvitsee rakenteellisia suunnittelupäätöksiä, jotka estävät päällekkäiset logiikat, lyhentävät kyselyaikaa suurilla aineistoilla ja mahdollistavat uusien tiimin jäsenten mallin ymmärtämisen ja laajentamisen ilman virheitä.

Tämä yksikkö kattaa kolme mallia: laskentaryhmät mittausten leviämisen vähentämiseksi, DAX-luettavuuskurin tiimin ylläpidon varmistamiseksi sekä aggregaatiot kyselyjen suorituskyvystä suurissa faktatauluissa.

Laskentaryhmät

Laskentaryhmät ovat malliobjekteja, jotka soveltavat samaa laskentamallia useille mittareille. Sen sijaan, että loisit erilliset mittaukset jokaiselle variaatiolle, määrittelet kuvion kerran ja sovellat sitä dynaamisesti.

Ongelman laskentaryhmät ratkaisevat

Kuvitellaan organisaatiota, jolla on 50 perusmittaria (kuten kokonaismyynti, kokonaiskustannus, voitto ja myydyt yksiköt). Jokainen mittari tarvitsee vuoden alusta, neljänneksestä tähän päivään ja kuukauden alusta -laskelmat. Ilman laskentaryhmiä se on 50 × 3 = 150 lisämittaria. Lisää yhteen aiempien vuosien vertailut, niin sinulla on 250+ mittaria ylläpidettäväksi.

Laskentaryhmissä luot yhden ryhmän, jossa on laskenta-alemmat jokaiselle aikaälykuviolle. Nämä kohdat koskevat automaattisesti mitä tahansa mittaria mallissa.

Miten laskentaryhmät toimivat

Laskentaryhmä sisältää laskentaalkioita, joista kukin määrittelee DAX-lausekkeen, joka muokkaa nykyistä mittaria käyttäen SELECTEDMEASURE(). Tässä on aikatiedustelulaskentaryhmä:

// Year-to-Date
CALCULATE(
    SELECTEDMEASURE(),
    DATESYTD('Date'[Date])
)
// Quarter-to-Date
CALCULATE(
    SELECTEDMEASURE(),
    DATESQTD('Date'[Date])
)
// Month-to-Date
CALCULATE(
    SELECTEDMEASURE(),
    DATESMTD('Date'[Date])
)

Kun käyttäjä lisää laskentaryhmän visuaaliin, hän voi vaihtaa vuoden alusta, QTD:n ja MTD:n välillä mille tahansa mittarille (kuten kokonaismyynti, voitto tai myydyt yksiköt) ilman erillisiä mittareita kullekin yhdistelmälle.

Dynaamiset muotoilumerkkijonot

Dynaamiset formaattimerkkijonot muuttavat näyttömuotoa laskentaalkion kontekstin mukaan. Esimerkiksi prosenttilaskelma tulisi näyttää prosenttiosuutena, kun taas valuuttalaskelmat tulisi näkyä valuuttana, vaikka sitä sovellettaisiin samaan perusmittaan.

// In the format string expression for a YoY % calculation item:
"0.0%"

Dynaamiset muotomerkkijonot vähentävät erillisten muotoiltujen mittareiden tarvetta ja pitävät muotoilun johdonmukaisena koko mallin ajan.

Vinkki

Lue lisää siitä, miten laskentaryhmiä luodaan Power BI.

Milloin laskentaryhmiä kannattaa käyttää

Käytä laskentaryhmiä, kun sinulla on kolme tai useampi mittari, jotka vaativat saman laskentamallin. Yleisiä käyttötapauksia ovat ajanälykkyys (YTD, QTD, MTD), valuutan muunnos ja varianssilaskelmat (todellinen vs. budjetti).

DAX-luettavuuskurinalaisuus

Suuressa mittakaavassa, kun tiimi ylläpitää 200+ mittaria, luettavuus on suunnittelupäätös, ei henkilökohtainen mieltymys. Johdonmukainen ja luettava DAX vähentää huoltovirheitä ja helpottaa uusien tiimin jäsenten mallin ymmärtämistä.

Muuttujat

Muuttujat tallentavat välituloksia, parantavat luettavuutta ja estävät moottoria arvioimasta samaa lauseketta useaan kertaan:

Profit Margin =
VAR TotalRevenue = SUM(Sales[Revenue])
VAR TotalCost = SUM(Sales[Cost])
VAR ProfitAmount = TotalRevenue - TotalCost
RETURN
    DIVIDE(ProfitAmount, TotalRevenue)

Ilman muuttujia sama SUM(Sales[Revenue]) lauseke saattaisi esiintyä kolme kertaa kompleksisessa mittaa. Muuttujat arvioivat lausekkeen kerran ja käyttävät tulosta uudelleen.

Nimeämiskäytännöt

Johdonmukainen nimeäminen on ratkaisevan tärkeää, kun mallissasi on satoja mittareita, joita ylläpitää useampi henkilö. Luo käytännöt seuraaville ohjeille:

  • Mittaamisen nimet: Käytä selkeitä, kuvaavia nimiä, kuten "Kokonaismyynti" tai "Vuoden liikevaihdon kasvu". Vältä lyhenteitä, jotka vain alkuperäinen kirjoittaja ymmärtää.
  • Muuttujien nimet: Käytä kuvailevia nimiä, jotka selittävät väliarvon (esim TotalRevenue . ei tai xtemp).
  • Laskentaryhmäalkiot: Nimeä alkiot sen mukaan, mitä ne tekevät, ei sen mukaan, miten ne toimivat (esim. "Year-to-Date" eikä "DATESYTD Wrapper").

Kuvaileva nimeäminen on myös tärkeää tekoälyn käytölle. Kun Copilot tai dataagentti kysyy mallistasi, se käyttää mittareiden nimiä ja kuvauksia määrittääkseen, mitkä laskelmat sisällytetään. Mittari nimeltä "YoY Revenue Growth" tuottaa parempia tekoälytuloksia kuin "Calc7_v2".

Vinkki

Copilot Power BI:ssä voi auttaa DAX-kaavojen kirjoittamisessa ja selittämisessä. Kun työskentelet monimutkaisten mittareiden parissa, käytä Copilot-ohjelmaa ehdottaaksesi parannuksia tai selittääksesi olemassa olevaa logiikkaa.

Iteraattorit vs. aggregaatiofunktiot

Iteraattorifunktiot (SUMX, AVERAGEX, MAXX) arvioivat rivi riviltä -lausekkeen taulukon yli. Aggregaatiofunktiot (SUM, AVERAGE, MAX) toimivat yhdellä sarakkeella. Suurissa datamäärissä valinnalla on merkitystä:

  • Käytä aggregaatiofunktioita, kun tiivistät yhden sarakkeen. Ne ovat nopeampia, koska moottori voi käyttää valmiita tietorakenteita.
  • Käytä iteraattoreita, kun laskenta vaatii rivitason lausekkeen (esim. Quantity × UnitPrice per rivi).

Huomautus

Iteraattorit käsittelevät jokaisen rivin, mikä voi vaikuttaa suorituskykyyn suurissa faktatauluissa.

Tietofunktiot puolustusmalleille

Informaatio toimii kuten ISBLANK, HASONEVALUE, ja ISINSCOPE luovat puolustuskuvioita mittareille, joita useat raportit käyttävät eri suodatinkonteksteissa:

Sales per Customer =
IF(
    HASONEVALUE(Customer[CustomerID]),
    DIVIDE(SUM(Sales[Amount]), 1),
    DIVIDE(SUM(Sales[Amount]), DISTINCTCOUNT(Sales[CustomerID]))
)

Nämä kuviot estävät odottamattomia tuloksia, kun mittareita käytetään tilanteissa, joita alkuperäinen kirjoittaja ei osannut odottaa.

Aggregaatiot

Aggregaatiot ovat yhteenvetotaulukoita, jotka tallentavat ennalta lasketut summat suuremmalla rakeisuudella kuin yksityiskohtainen data. Kyselyt osuvat näihin taulukoihin ensin, mikä parantaa suorituskykyä suurilla faktatauluilla. Kun kysely vastaa aggregaatiotaulua, moottori palauttaa tulokset pienemmästä yhteenvetotaulukosta sen sijaan, että skannaisi miljoonia yksityiskohtarivejä.

Aggregaatiot suunnitteluratkaisuna

Päätös siitä, milloin lisätä aggregaatioita ja millä tarkkuudella on suunnittelupäätös. Suorituskyvyn seuranta ja viritys ovat eri toiminnallisia asioita, mutta rakenteelliset valinnat tehdään mallin suunnittelussa.

Tarkastellaan aggregaatioita, kun:

  • Faktataulut ylittävät miljoonia rivejä, ja yleisesti käytetyt kyselyt tiivistävät tiedot suuremmassa rakeessa (kuten kuukausittaiset summat alueittain).
  • Käyttäjät kokevat hitaita kyselyvasteaikoja yhteenvetotason visuaaleissa.
  • Useimmat raporttien vuorovaikutukset eivät vaadi rivitason yksityiskohtia.

Miten aggregointikäyttäytyminen vaihtelee tallennustilan mukaan

Tuontitilassa aggregaatiot tallennetaan erillisinä piilotettuina tauluina. Moottori reitittää automaattisesti vastaavat kyselyt aggregointitauluun.

Direct Lake -tilassa Delta-taulukot voivat toimia aggregaatiolähteinä. Koska Direct Lake lukee sarakkeenmuotoisia Parquet-tiedostoja, moottori pystyy monissa tilanteissa käsittelemään suurempia datamääriä ilman aggregaatioita. Lisää aggregaatiot vain, kun kyselykuviot vahvistavat tarpeen.