DAX-képletek írása
Minden modellszámítás-típus, a számított tábla, a számított oszlop és a mérték is a nevével van definiálva, amelyet egy egyenlőségjel (=), majd egy DAX-képlet követ. Hozzon létre modellszámítást az alábbi sablon használatával:
<Calculation name> = <DAX formula>
A Dátum tábla adatait duplikáló Szállítási dátum számított tábla definíciója például a következő:
Ship Date = 'Date'
Egy DAX-képlet eredményt visszaadó kifejezésekből áll. Az eredmény vagy egy tábla objektum, vagy egy skalár érték. A számított táblaképleteknek egy táblaobjektumot kell visszaadnia; a számított oszlop- és mértékképleteknek skaláris értéket (egyetlen értéket) kell visszaadnia.
A képletek a következő elemekből állíthatók össze:
- DAX-függvények
- DAX-operátorok
- Modellobjektumokra mutató hivatkozások
- Állandó értékek, például a 24-es szám vagy a "FY" literális szöveg (pénzügyi év rövidítése)
- DAX-változók
- Térköz
Tipp
Amikor DAX-képleteket ad meg Power BI Desktop, az IntelliSense előnyeit élvezheti. Az IntelliSense kiegészítési segédeszköz, amely felsorolja a függvényeket és a modell erőforrásait. Egy DAX-függvény kiválasztásakor annak definícióját és leírását is megadja. Ajánlott az IntelliSense-t használni, amely segít gyorsan elkészíteni a pontos képleteket.
DAX-függvények
A Microsoft Excelhez hasonlóan a DAX egy funkcionális nyelv, amely azt jelenti, hogy a képletek függvényekre támaszkodnak adott célok eléréséhez. A DAX-függvények általában olyan argumentumokkal rendelkeznek, amelyek lehetővé teszik a változók átadását. A képletek több függvényhívást is használhatnak, és gyakran más függvényekbe ágyaznak be függvényeket.
A képletekben a függvénynevek után zárójelnek kell következnie. A zárójeleken belül vannak átadva a változók.
Megjegyzés
Egyes függvényeknek nincs argumentumuk, vagy az argumentumaik opcionálisak.
A DAX-függvények használatát a modul egy későbbi része ismerteti.
DAX-operátorok
A képletek operátorokra is támaszkodnak, amelyek képesek aritmetikai számítások elvégzésére, értékek összehasonlítására, sztringekkel való munkára vagy tesztelési feltételekre.
A DAX-operátorokat a modul egy későbbi része mutatja be részletesebben.
Modellobjektumokra mutató hivatkozások
A képletek csak háromféle modellobjektumra hivatkozhatnak: táblákra, oszlopokra vagy mértékekre. Képlet nem hivatkozhat hierarchiára vagy hierarchiaszintre. (Mint tudja, a hierarchiaszintek egy oszlopon alapulnak, tehát a képlet hivatkozhat a hierarchiaszint oszlopára.)
Táblahivatkozások
Ha képletben hivatkozik egy táblára, hivatalosan a tábla neve egyetlen idézőjelek közé kerül. Az alábbi számított tábladefinícióban figyelje meg, hogy a Date tábla egyetlen idézőjelek közé van zárva.
Ship Date = 'Date'
Az aposztróf azonban el is hagyható, ha az alábbi feltételek mindegyike teljesül:
- A tábla neve nem tartalmaz szóközt.
- A táblanév nem a DAX által használt fenntartott szó. Minden DAX-függvénynév és -operátor fenntartott szó. A Date egy DAX-függvénynév, amely megmagyarázza, hogy miért kell idézőjelek közé tenni egy Date nevű táblára hivatkozva.
Az alábbi számított tábla definíciójában kihagyható az egyetlen idézőjel, amikor az Airport táblára hivatkozik:
Arrival Airport = Airport
Oszlophivatkozások
Ha egy képlet egy oszlopára hivatkozik, az oszlop nevét szögletes zárójelek közé kell tenni. Opcionálisan eléírhatja a tábla nevét. Az alábbi mértékdefiníció például a Sales Amount oszlopra hivatkozik.
Revenue = SUM([Sales Amount])
Mivel az oszlopnevek egy táblán belül egyediek, de a modellben nem feltétlenül azok, az oszlopra való hivatkozás úgy tehető egyértelművé, hogy eléírja a tábla nevét. Az ilyen egyértelműen megadott oszlopokat teljesen minősített oszlopoknak nevezik. Egyes DAX-függvények megkövetelik a teljesen minősített oszlopnevek átadását.
Tipp
A képletek olvashatóságának javítása érdekében ajánlott minden oszlophivatkozás előtt megadni a tábla nevét is.
A fenti mértékdefinícós példa az alábbi módon írható át:
Revenue = SUM(Sales[Sales Amount])
Mértékhivatkozások
Ha egy képletben egy mértékre hivatkozik, például az oszlopnévre, a mérték nevét szögletes zárójelek közé kell tenni. Az alábbi mértékdefiníció például a Revenue és a Cost mértékre hivatkozik.
Profit = [Revenue] - [Cost]
Ha kezdő DAX-et használ, az a tény, hogy az oszlop- és mértékhivatkozások mindig szögletes zárójelek közé kerülnek, zavart okozhat a képletek olvasása közben. A DAX alapjainak ismeretében azonban meg tudja állapítani, hogy milyen típusú objektumról van szó, mert a DAX-képletekben, oszlopokban és mértékekben különböző módokon használják.
Tipp
Egy mértékhivatkozás előtt is megadható a tábla neve. A mértékek azonban modellszintű objektumok. Hozzá vannak ugyan rendelve egy saját táblához, ez azonban csak a mértékek Mezők panelen megjelenő logikai elrendezését segítő, a jobb megjelenést szolgáló kapcsolat.
Emiatt, bár az oszlophivatkozásokhoz ajánlott mindig megadni a tábla nevét is, a mértékekre ennek éppen az ellenkezője vonatkozik: Azt javasoljuk, hogy a mértékekhez soha ne adjon meg táblanevet.
További információ: Oszlop- és mértékhivatkozások.
DAX-változók
A képletek DAX-változókat deklarálhatnak az eredmények tárolásához.
A modul egy későbbi részében lesz szó arról, hogy hogyan és mikor érdemes DAX-változókat használni.
Térköz
A térköz olyan karaktereket jelent, amelyekkel a képletek gyorsan és könnyen megérthető alakba formázhatók. Térköz-karakterek többek között az alábbiak:
- Szóközök
- Tabulátorok
- Kocsivissza karakterek
A tréközök opcionálisak, nem módosítják a képlet logikáját, és nem befolyásolják a teljesítményt. Erősen ajánlott saját formázási stílust kialakítani, és azt következetesen alkalmazni, figyelembe véve az alábbi javaslatokat:
- Használjon szóközöket az operátorok között.
- Használjon tabulátorokat a beágyazott függvényhívások behúzásához.
- Használjon kocsivissza karaktereket a függvényargumentumok elválasztására, különösen akkor, ha azok nem férnek el egy sorban. Az ilyen formázás megkönnyíti a hibakeresést, különösen olyan esetben, amikor egy zárójel hiányzik a képletből.
- Inkább túl sok térközt használjon, mint túl keveset.
Tipp
A szerkesztőlécen a Shift+Enter billentyűkombinációt lenyomva adja meg a kocsivisszajelet. Ha egyedül lenyomja az Enter billentyűt , véglegesíti a képletet.
Figyelje meg az alábbi mértékdefiníciót, amely egyetlen sorba van írva, és öt DAX-függvény hívását tartalmazza:
Revenue YoY % = DIVIDE([Revenue] - CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date])), CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date])))
Az alábbi példán ugyanez a mértékdefiníció látható, de megformázva, miáltal egyszerűbben olvasható és megérthető:
Revenue YoY % =
DIVIDE(
[Revenue]
- CALCULATE(
[Revenue],
SAMEPERIODLASTYEAR('Date'[Date])
),
CALCULATE(
[Revenue],
SAMEPERIODLASTYEAR('Date'[Date])
)
)
Próbálja meg önállóan formázni a mértéket. Nyissa meg az Adventure Works DW 2020 M02.pbix Power BI Desktop fájlt, majd a Mezők panelen bontsa ki az Értékesítés táblát, majd válassza ki a Revenue YoY % mértéket. A szerkesztőlécen a tabulátor- és kocsivissza karakterekkel ugyanazt az eredményt hozza létre, mint az előző példában. Amikor kocsivisszaadást ad hozzá, ne felejtse el lenyomni a Shift+Enter billentyűkombinációt.
Ez a mértékdefiníció tovább javítható az olvashatóság és a teljesítmény szempontjából, amelyet a modul későbbi részében ismertetünk.
Tipp
Más forrásból származó kiváló formázó eszköz, amely segítségére lehet a számítások formázásában, a DAX Formatter. Ez az eszköz lehetővé teszi a számítás beillesztését és formázását. Ezután átmásolhatja a formázott számítást a vágólapra, és beillesztheti a Power BI Desktop.