Aikatietojen lisälaskelmat

Valmis

On myös muita DAX-aikatietofunktioita, jotka koskevat yksittäisen päivämäärän palauttamista. Tutustut näihin funktioihin käyttämällä niitä kahdessa eri skenaariossa.

- FIRSTDATE ja DAX-funktiot LASTDATE palauttavat määritetyn päivämääräsarakkeen ensimmäisen ja viimeisen päivämäärän nykyisessä suodatinkontekstissa.

Uusien esiintymien laskeminen

Aikatietofunktioiden avulla voi myös laskea uusia esiintymiä. Seuraavassa esimerkissä näytetään, miten voit laskea uusien asiakkaiden määrän tietyllä ajanjaksolla. Uusi asiakas lasketaan siihen ajanjaksoon, jolloin hän teki ensimmäisen ostonsa.

Ensimmäinen tehtäväsi on lisätä seuraava mittari Myynti-taulukkoon, joka laskee erillisten asiakkaiden määrän tähän päivään saakka (LTD). Tähän päivään saakka tarkoittaa alusta alkaen suodatinkontekstin viimeiseen päivään asti. Muotoile mittari kokonaisluvuksi käyttämällä tuhaterotinta.

Customers LTD =
VAR CustomersLTD =
    CALCULATE(
        DISTINCTCOUNT(Sales[CustomerKey]),
        DATESBETWEEN(
            'Date'[Date],
            BLANK(),
            MAX('Date'[Date])
        ),
        'Sales Order'[Channel] = "Internet"
    )
RETURN
    CustomersLTD

Lisää Asiakkaat LTD -mittari matriisivisualisointiin. Huomaa, että se laskee erillisten asiakkaiden määrän kunkin kuukauden lopussa.

Kuvassa näkyy matriisivisualisointi, jonka riveillä on ryhmittely vuoden ja kuukauden mukaan ja jossa on myös kohdat Tuotto, Tuotto vuoden alusta, Tuotto vuodessa % ja Asiakkaat LTD.

Funktio DATESBETWEEN palauttaa taulukon, joka sisältää päivämääräsarakkeen, joka alkaa annetusta alkamispäivästä ja jatkuu tiettyyn päättymispäivään. Kun alkamispäivän arvo on BLANK, siinä käytetään päivämääräsarakkeen ensimmäistä päivää. (Jos taas päättymispäivän arvo on BLANK, siinä käytetään päivämääräsarakkeen viimeistä päivää.) Tässä tapauksessa päättymispäivä määritetään MAX-funktiolla, joka palauttaa suodatinkontekstin viimeisen päivän. Jos siis elokuu 2017 kuuluu suodatinkontekstiin, MAX-funktio palauttaa arvon 31. elokuuta 2017 ja DATESBETWEEN funktio palauttaa kaikki päivämäärät 31. elokuuta 2017 saakka.

Seuraavaksi muokkaat mittaria nimeämällä sen uudelleen Uudet asiakkaat ja lisäämällä toisen muuttujan, joka tallentaa erillisten asiakkaiden määrän ennen suodatinkontekstin ajanjaksoa. - RETURN lause vähentää nyt tämän arvon LTD-asiakkaista ja tuottaa tuloksen, joka on uusien asiakkaiden määrä ajanjaksolla.

New Customers =
VAR CustomersLTD =
    CALCULATE(
        DISTINCTCOUNT(Sales[CustomerKey]),
        DATESBETWEEN(
            'Date'[Date],
            BLANK(),
            MAX('Date'[Date])
        ),
    'Sales Order'[Channel] = "Internet"
    )
VAR CustomersPrior =
    CALCULATE(
        DISTINCTCOUNT(Sales[CustomerKey]),
        DATESBETWEEN(
            'Date'[Date],
            BLANK(),
            MIN('Date'[Date]) - 1
        ),
        'Sales Order'[Channel] = "Internet"
    )
RETURN
    CustomersLTD - CustomersPrior

Kuvassa näkyy matriisivisualisointi, jonka riveillä on ryhmittely vuoden ja kuukauden mukaan ja jossa on myös kohdat Tuotto, Tuotto vuoden alusta, Tuotto vuodessa % ja Uudet asiakkaat. Uudet asiakkaat -arvot on korostettu.

Huomaa CustomersPrior-muuttujanDATESBETWEEN osalta, että funktio sisältää päivämääriä suodatinkontekstin ensimmäiseen päivään saakka miinus yksi. Microsoft Power BI tallentaa päivämäärät sisäisesti lukuina, joten voit lisätä tai vähentää lukuja päivämäärän siirtämiseksi.

Tilannevedoslaskelmat

Faktatietoja tallennetaan toisinaan tietyn ajankohdan tilannevedoksina. Esimerkkejä tästä ovat varastotasot ja tilisaldot. Arvojen tilannevedos ladataan taulukkoon säännöllisin väliajoin.

Kun teet yhteenvedon tilannevedoksen arvoista (kuten varastotasoista), voit tehdä yhteenvedon minkä tahansa dimension arvoista päivämäärää lukuun ottamatta. Saat mielekkään yhteenvedon, kun lisäät varastotasojen määrät tuoteluokkiin, mutta yhteenveto ei ole mielekäs, jos lisäät varastotasojen määrät päivämääriin. Eilisen varastotason lisäämisestä tämän päivän varastotasoon ei ole hyötyä (ellet halua laskea tuloksen keskiarvoa).

Kun teet yhteenvedon tilannevedostaulukoista, mittarikaavat voivat käyttää DAX-aikatietofunktioita yksittäisen päivämäärän suodattimen käyttämiseksi.

Seuraavassa esimerkissä tutustut Adventure Works -yrityksen skenaarioon. Siirry mallinäkymään ja valitse Varasto-mallikaavio.

Kuvassa näkyy mallikaavio, joka koostuu kolmesta taulukosta: Tuote, Päivämäärä ja Varasto. Tuote- ja Päivämäärä-taulukolla on yksi-moneen-suhde Varasto-taulukkoon.

Huomaa, että kaaviossa näkyy kolme taulukkoa: Tuote, Päivämäärä ja Varasto. Varasto-taulukkoon tallennetaan tilannevedokset kunkin päivämäärän ja tuotteen yksikkösaldoista. On tärkeää huomata, että taulukko ei sisällä puuttuvia päivämääriä eikä merkintöjen kaksoiskappaleita millekään tuotteelle samana päivänä. Lisäksi viimeisin tilannevedostietue on tallennettu 15. kesäkuuta 2020.

Siirry nyt raporttinäkymään ja valitse raportin sivu 2. Lisää Varasto-taulukonUnitsBalance-sarake matriisivisualisointiin. Sen yhteenvedon oletusasetuksena on summa-arvo.

Kuvassa näkyy FY2020 Mountain-200 Bike Stock -niminen matriisivisualisointi. Tuotteet on ryhmitelty sen riveille ja kuukaudet sarakkeisiin. Kunkin tuotteen ja kuukauden kohdalla näytetään suuret arvot.

Tämä visualisoinnin määritys on esimerkki siitä, miten tilannevedoksen arvoista ei kannata tehdä yhteenvetoa. Päivittäisten tilannevedossaldojen lisääminen yhteen ei tuota mielekästä tulosta. Poista siksi UnitsBalance-kenttä matriisivisualisoinnista.

Nyt lisäät Varasto-taulukkoon mittarin, joka laskee yhteen yksittäisen päivämääränUnitsBalance-arvon. Päivä on kunkin ajanjakson viimeinen päivä. Se tehdään käyttämällä -funktiota LASTDATE . Muotoile mittari kokonaisluvuksi käyttämällä tuhaterotinta.

Stock on Hand =
CALCULATE(
    SUM(Inventory[UnitsBalance]),
    LASTDATE('Date'[Date])
)

Huomautus

Huomaa, että mittarikaava käyttää -funktiota SUM . Koostefunktiota on käytettävä (mittarit eivät salli suoria viittauksia sarakkeisiin), mutta koska kullekin tuotteelle on kullakin päivämäärällä vain yksi rivi, SUM funktio toimii vain yhdellä rivillä.

Lisää Käytettävissä oleva varasto -mittari matriisivisualisointiin. Kunkin tuotteen arvo perustuu nyt kunkin kuukauden viimeksi kirjattuun yksikkösaldoon.

Kuvassa näkyy FY2020 Mountain-200 Bike Stock -niminen matriisivisualisointi. Tuotteet on ryhmitelty sen riveille ja kuukaudet sarakkeisiin. Kunkin tuotteen ja kuukauden kohdalla näytetään pienemmät arvot. Kesäkuu 2020- ja Yhteensä-kohtien arvona on BLANK.

Mittari palauttaa kesäkuun 2020 arvoksi BLANK, sillä kesäkuun viimeiselle päivälle ei ole tietuetta. Tietojen mukaan sitä ei ole vielä ollut.

Suodatukseen suodatinkontekstin viimeisen päivän mukaan liittyy ongelmia. Tallennettua päivää ei ehkä ole, koska se ei ole vielä tapahtunut tai koska varastosaldoja ei ehkä kirjata viikonloppuisin.

Seuraava vaihe on muokata mittarikaavaa ja määrittää viimeinen päivä, jonka tulos ei ole BLANK, ja suodattaa sitten kyseisen päivän mukaan. Voit tehdä tämän DAX-funktiolla LASTNONBLANK .

Muokkaa seuraavan mittarin määrityksen avulla Käytettävissä oleva varasto -mittaria.

Stock on Hand =
CALCULATE(
    SUM(Inventory[UnitsBalance]),
    LASTNONBLANK(
        'Date'[Date],
        CALCULATE(SUM(Inventory[UnitsBalance]))
    )
)

Huomaa matriisivisualisoinnissa Kesäkuu 2020- ja Yhteensä-kohtien (eli koko vuoden) arvot.

Kuvassa näkyy, että matriisivisualisoinnin Kesäkuu 2020- ja Yhteensä-kohdissa on nyt arvot.

Funktio LASTNONBLANK on iteraattorifunktio. Se palauttaa viimeisen päivän, jonka tulos ei ole BLANK. Se saavuttaa tämän tuloksen käymällä läpi kaikki suodatinkontekstin päivämäärät laskevassa aikajärjestyksessä. (Iteroi sitä vastoin FIRSTNONBLANK nousevassa aikajärjestyksessä.) Se arvioi kunkin päivämäärän välitettyä lauseketta. Kun se havaitsee muun tuloksen kuin BLANK, funktio palauttaa päivämäärän. Tätä päivämäärää käytetään sitten funktion CALCULATE suodattamiseen.

Huomautus

Funktio LASTNONBLANK arvioi lausekkeensa rivikontekstissa. Funktion CALCULATE avulla on siirryttävä rivikonteksti suodattamaan konteksti, jotta lauseke arvioidaan oikein.

Piilota nyt Varasto-taulukon UnitsBalance-sarake. Silloin raportin tekijät eivät voi tehdä virheellistä yhteenvetoa yksikkösaldojen tilannevedoksista.