Koostavien iteraattorifunktioiden käyttäminen

Valmis

Jokaisella yksisarakkeisella yhteenvetofunktiolla on vastaava iteraattorifunktio. Seuraavissa osissa käsitellään kahta koostamisskenaariota, kun iteraattorifunktiot ovat hyödyllisiä: monimutkaista yhteenvetoa ja suuren rakeisen yhteenvedon yhteenvetoa.

Monitasoinen yhteenveto

Tässä osassa luot ensimmäisen mittarisi, joka käyttää iteraattorifunktiota. Lataa ja avaa ensin tiedosto Adventure Works DW 2020 M05.pbix. Lisää seuraavaksi seuraava mittarin määritys:

Revenue =
SUMX(
    Sales,
    Sales[Order Quantity] * Sales[Unit Price] * (1 - Sales[Unit Price Discount Pct])
)

Muotoile Revenue-mittari kahden desimaalin valuutaksi ja lisää se sitten taulukon visualisointiin, joka on raportin sivulla 1 .

Iteraattorifunktiota käytettäessä Revenue-mittarin kaava koostaa enemmän tietoja kuin yksittäisen sarakkeen arvot. Se tuottaa jokaista riviä varten tuoton määrän kolmen sarakkeen rivikontekstiarvojen avulla.

Lisää nyt toinen mittari:

Discount =
SUMX(
    Sales,
    Sales[Order Quantity]
    * (
        RELATED('Product'[List Price]) - Sales[Unit Price]
    )
)

Muotoile measure-mittari kahden desimaalin valuutaksi ja lisää se sitten taulukon visualisointiin.

Huomaa, että kaava käyttää -funktiota RELATED . Muista, että rivikonteksti ei ulotu taulukon ulkopuolelle. Jos kaavan on viitattava muiden taulukoiden sarakkeisiin ja taulukoiden välillä on mallisuhteita, käytä RELATED yhden puolen suhteen funktiota tai RELATEDTABLE monen puolen suhteen funktiota.

Suuren rakeisuuden yhteenveto

Seuraava esimerkki liittyy keskimääräisen tuoton raportointivaatimukseen. Lisää seuraava mittari:

Revenue Avg =
AVERAGEX(
    Sales,
    Sales[Order Quantity] * Sales[Unit Price] * (1 - Sales[Unit Price Discount Pct])
)

Muotoile Revenue Avg -mittari kahden desimaalin valuutaksi ja lisää se sitten taulukon visualisointiin.

Ajattele, että keskiarvo tarkoittaa arvojen summaa jaettuna arvojen määrällä. Tästä herää kuitenkin kysymys: Mitä arvojen määrä edustaa? Tässä tapauksessa arvojen määrä on niiden lausekkeiden määrä, joiden arvioitu arvo ei ole BLANK. Koska iteraattorifunktio luetteloi Sales-taulukon rivit, keskiarvo tarkoittaa rivikohtaista tuottoa. Koska jokainen Myynti-taulukon rivi kirjaa myyntitilausrivin, sitä voidaan tämän logiikan mukaan kuvailla tarkemmin tilausrivikohtaiseksi tuotona.

Vastaavasti sinun tulisi vaihtaa Revenue Avg -mittarin nimeksi Revenue Avg Order Line, jolloin raportin käyttäjille on selkeää, mitä käytetään keskiarvon pohjana.

Seuraavassa esimerkissä luodaan iteraattorifunktiolla uusi mittari, joka nostaa rakeisuuden myyntitilaus tasolle (myyntitilaus koostuu vähintään yhdestä tilausrivistä). Lisää seuraava mittari:

Revenue Avg Order =
AVERAGEX(
    VALUES('Sales Order'[Sales Order]),
    [Revenue]
)

Muotoile Revenue Avg Order -mittari kahden desimaalin valuutaksi ja lisää se sitten taulukon visualisointiin.

Tilauksen keskimääräinen tuotto on odotetusti aina suurempi kuin yksittäisen tilausrivin keskimääräinen tuotto.

Huomaa, että kaava käyttää DAX-funktiota VALUES . Tämän toiminnon avulla kaavasi voivat määrittää, mitkä arvot ovat suodatinkontekstissa. Tässä tapauksessa funktio iteroi jokaista myyntitilausta suodatinkontekstissaAVERAGEX. Se toisin sanoen iteroi kuukauden jokaista myyntitilausta. Suodatinkonteksti VALUES ja funktio esitellään suodatinkontekstimoduulissa.