További időintelligencia-számítások

Befejeződött

További olyan DAX időintelligencia-függvények is léteznek, amelyek egy adott dátum visszaadásával kapcsolatosak. Ezeket a függvényeket két különböző forgatókönyv során való alkalmazásukkor ismerheti meg jobban.

A FIRSTDATE és a LASTDATE DAX függvény az aktuális szűrőkörnyezet első és utolsó dátumát adja vissza a megadott dátumoszlophoz.

Új előfordulások kiszámítása

Az időintelligencia-függvények másik felhasználási módja az új előfordulások megszámlálása. Az alábbi példa azt mutatja be, hogyan számolhatja ki, hogy hány új ügyfél volt egy adott időszakban. Az új ügyfelek abban az időszakban lesznek számításba véve, amikor első alkalommal vásárolnak.

Az első feladat az, hogy hozzáadja a következő mértéket a Sales táblához, amely megszámolja a különböző ügyfelek élettartamát (LTD). Az LTD azt jelenti, hogy a definíció a kiindulási időponttól kezdve a szűrőkörnyezet utolsó dátumig bezárólag minden dátumot figyelembe vesz. Egész számként formázza a mértéket az ezreselválasztó használatával.

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

Adja hozzá az Customers LTD (Teljes ciklus során szerzett ügyfelek) mértéket a mátrixos vizualizációhoz. Figyelje meg, hogy a definíció külön-külön, minden hónapra vonatkozóan a kezdeti időponttól számítva adja meg az ügyfelek számát az eredményben.

A képen egy olyan mátrixos vizualizáció látható, amely a sorok esetében egy év és hónap szerinti csoportosítást mutat, illetve megjeleníti a Revenue (Bevétel), a Revenue YTD (Év elejétől számított bevétel), a Revenue YoY % (Évenkénti bevétel %-os aránya) és a Customers LTD (Teljes ciklus során szerzett ügyfelek) értékeit is.

A DATESBETWEEN függvény egy táblát ad vissza, amely egy dátumoszlopot tartalmaz, amely egy adott kezdő dátummal kezdődik, és egy adott befejezési dátumig folytatódik. Ha a kezdési dátum ÜRES, a dátumoszlopban található első dátumot fogja használni. (Ugyanígy, ha a záró dátum ÜRES, a dátumoszlopban található utolsó dátumot foga használni.) Ebben az esetben a záró dátumot a MAX függvény határozza meg, amely a szűrőkörnyezet utolsó dátumát adja vissza. Ezért ha a 2017. augusztusi hónap szűrőkörnyezetben van, akkor a MAX függvény 2017. augusztus 31-én, a függvény pedig 2017. augusztus 31-ig adja vissza az DATESBETWEEN összes dátumot.

A következő lépésben úgy fogja módosítani a mértéket, hogy átnevezi New Customers (Új ügyfelek) értékre, és hozzáad egy második változót, amely az egyéni ügyfelek számát tartalmazza a szűrőkörnyezetben szereplő időtartamot megelőző időpontig. A RETURN záradék most kivonja ezt az értéket a LTD-ügyfelekből, hogy eredményt hozzon létre, ami az időszak új ügyfeleinek száma.

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

A képen egy olyan mátrixos vizualizáció látható, amely a sorok esetében egy év és hónap szerinti csoportosítást mutat, illetve megjeleníti a Revenue (Bevétel), a Revenue YTD (Év elejétől számított bevétel), a Revenue YoY % (Évenkénti bevétel %-os aránya) és a New Customers (Új ügyfelek) értékeit is. Az New Customers (Új ügyfelek) értékei kiemelve láthatók.

A CustomersPrior változó esetében figyelje meg, hogy a függvény dátumokat DATESBETWEEN tartalmaz a szűrőkörnyezetben az első dátumig mínusz egyig. Mivel a Microsoft Power BI belsőleg számként tárolja a dátumokat, a dátumokat számok hozzáadásával vagy kivonásával módosíthatja.

Pillanatkép-számítások

Bizonyos esetekben a tényadatokat a rendszer adott időpontban készített pillanatképekként tárolja. Ennek gyakori példái a leltáron levő készlet szintje vagy a számlaegyenleg. A pillanatkép-értékek táblázatba történő betöltése rendszeres időközönként történik.

A pillanatkép-értékek (például a leltárkészletszint) összegzésekor a dátum kivételével akárhány dimenzió értékeit összegezheti. A készletszintszámok különböző termékkategóriákhoz való hozzáadása értelmes összegzést eredményez, a számok dátumokhoz való hozzáadásával azonban nem ad értelmes összegzést a művelet. A tegnapi készletszint mai készletszinthez való hozzáadása nem egy hasznos művelet (kivéve, ha ezt az eredményt szeretné átlagolni).

A pillanatképtáblák összegzésekor a mértékképletek a DAX időintelligencia-függvények alapján tudnak kikényszeríteni egy egydátumos szűrőt.

A következő példában az Adventure Works vállalatra vonatkozó forgatókönyvvel fog megismerkedni. Váltson modellnézetre, és válassza ki az Inventory (Leltár) modelldiagramot.

A képen egy olyan modelldiagram látható, amely három táblából áll: Product (Termék), Date (Dátum) és Inventory (Leltár). A Product és Date táblák egy-a-többhöz típusú kapcsolattal kötődnek az Inventory táblához.

Figyelje meg, hogy a diagramon három tábla látható: Termék, Dátum és Leltár. Az Inventory tábla az egyes dátumok és termékek egységegyenlegeinek pillanatképeit tárolja. Fontos, hogy a tábla nem tartalmaz hiányzó dátumokat, illetve az egyes termékekre vonatkozóan nem találhatók ismétlődő bejegyzések sem ugyanazon a napon. Továbbá az utolsó tárolt pillanatképrekord 2020. június 15-én készült.

Váltson Jelentés nézetre, és válassza ki a jelentés 2. oldalát. Adja hozzá az Inventory tábla UnitsBalance oszlopát a mátrixvizualizációhoz. Az alapértelmezett összegzés összértékek alapján történik.

A képen egy FY2020 Mountain-200 Bike Stock elnevezésű mátrixos vizualizáció látható. A sorok esetében termékek (Product), míg az oszlopok esetében hónapok (Month) szerinti csoportosítás figyelhető meg. Minden termék és hónap esetében magas értékek láthatók.

Ez a vizuális konfiguráció azt példázza, hogy hogyan ne készítsen pillanatképérték-összegzést. A napi pillanatkép-egyenlegek összeadása nem ad értelmes eredményt. Ezért távolítsa el a UnitsBalance mezőt a mátrixos vizualizációból.

Most hozzáad egy mértéket az Inventory táblához, amely egyetlen dátumhoz összegzi a UnitsBalance értéket. A dátum minden egyes időszak utolsó dátuma lesz. A függvény használatával LASTDATE érhető el. Egész számként formázza a mértéket az ezreselválasztó használatával.

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

Megjegyzés

Figyelje meg, hogy a mértékképlet a függvényt SUM használja. Összesítő függvényt kell használni (a mértékek nem teszik lehetővé az oszlopokra mutató közvetlen hivatkozásokat), de mivel minden egyes dátumhoz csak egy sor tartozik minden termékhez, a SUM függvény csak egy sorban fog működni.

Adja hozzá a Stock on Hand (Készleten levő) mértéket a mátrixos vizualizációhoz. Így az egyes termékek értéke az utolsó rögzített egységegyenleg alapján lesz meghatározva az egyes hónapokra vonatkozóan.

A képen egy FY2020 Mountain-200 Bike Stock elnevezésű mátrixos vizualizáció látható. A sorok esetében termékek (Product), míg az oszlopok esetében hónapok (Month) szerinti csoportosítás figyelhető meg. Minden termék és hónap esetében alacsony értékek láthatók. A June 2020 (2020. június) és a Total (Összesen) mezők ÜRESEK.

A mérték ÜRES értéket ad vissza 2020 júniusára vonatkozóan, mivel a júniusi utolsó dátumról nincsenek adatok. Az adatok alapján még nem történt meg.

A szűrőkörnyezet utolsó dátuma alapján történő szűrés során alapvető problémák lépnek fel: Előfordulhat, hogy egy rögzített dátum nem létezik, mert még nem történt meg, vagy mert a készletegyenlegről a hétvégék során nem készül feljegyzés.

A következő lépésben úgy módosítsa a mértékképletet, hogy az az utolsó olyan dátumot határozza meg, amely nem ÜRES eredménnyel rendelkezik, majd a szűrést ezzel a dátummal végezze el. Ezt a feladatot a LASTNONBLANK DAX függvénnyel érheti el.

A Stock on Hand (Készleten levő) mérték módosításához a következő mértékdefiníciót használja.

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

A mátrixos vizualizációban figyelje meg a 2020. júniusi és az összesített (az egész évre vonatkozó) értékeket.

A képen az látható, hogy a mátrixos vizualizációban a June 2020 és a Total mezőben is vannak értékek.

A LASTNONBLANK függvény egy iterátorfüggvény. Az utolsó olyan dátumot adja vissza, amely nem ÜRES eredményt ad. Ezt úgy éri el, hogy végighalad a szűrőkörnyezet összes dátumán csökkenő időrendi sorrendben. (Ezzel szemben az FIRSTNONBLANK iterálás növekvő időrendi sorrendben halad.) Minden dátumhoz kiértékeli az átadott kifejezést. Amikor nem ÜRES eredményt talál, a függvény visszaadja az adott dátumot. Ezt a dátumot használja a függvény szűrésére CALCULATE .

Megjegyzés

A LASTNONBLANK függvény sorkörnyezetben értékeli ki a kifejezést. A CALCULATE függvény használatával át kell váltani a sorkörnyezetet a környezet szűrésére a kifejezés helyes kiértékeléséhez.

Most rejtse el az Inventory táblaUnitsBalance oszlopát. Ez meggátolja, hogy a jelentéskészítők helytelenül összesítsék a pillanatképegység egyenlegeit.