Suunnittelun skaalautuvat laskelmat
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.
Vinkki
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 taixtemp). - 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 × UnitPriceper 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.
Vinkki
Lue lisää käyttäjän määrittelemistä aggregaatioista Power BI.