Mi az a Power Query & M Language: Részletes áttekintés
Ez az oktatóanyag áttekintést nyújt a Power Query szerkesztőről és az M nyelvről a LuckyTemplates asztalon.
Ebben a blogbejegyzésben egy pillantást vetünk a LuckyTemplates fórumon feltett kérdésre, és a megoldáshoz egy DAX nyelvű LuckyTemplates technikát használunk. Ha szeretné követni a lépéseket, és letölteni szeretné a fájlokat, csak keresse fel a LuckyTemplates fórumot, és lépjen a címre. Az oktatóanyag teljes videóját a blog alján tekintheti meg.
A bemutatandó forgatókönyv magyarázatához egy egyszerű táblázatot mutatunk be példaként. Az első oszlopban az 1. pénzügyi szint található . A második oszlopban van egy dátum, melynek neve Befejezve. Az utolsó oszlopban a pénzügyi szint és a befejezési dátum kombinációja található, amelyet Bevételnek nevezünk el .
Ezután van egy szeletelőnk a dátumhoz és az ügyfél nevéhez .
Amit egy adott időszakra vonatkozóan szeretnénk megtenni, az az, hogy azonosítsuk a három legfontosabb dátumot, amelyek nem nullák. És akkor az első három dátumban meg akarjuk határozni a pénzügyi szintet.
Az intézkedés első változatában felsoroltam azokat a dátumokat, amelyek kisebbek, mint a 2021.04.29., amelyben van némi bevételünk.
És ezeken a dátumokon szeretnénk azonosítani azokat a pénzügyi szinteket, amelyek bevételt hoztak. Elmagyarázom, hogyan érhetjük el ezt a számítást.
Tartalomjegyzék
Adatmodellezés
A tényleges DAX megírása előtt vessünk egy pillantást a több táblát tartalmazó adatmodellre. Csak a Dátum tábla , Adattábla , Munkakategória tábla és Ügyfél tábla érdekel bennünket .
Ne feledje, hogy az Ügyfél tábla nem igazán fontos, mert csak egy szeletelőben használják.
A bevételi mérték kiszámítása az Adattáblázatban történik. A Munka kategória tartalmazza a mátrixon szereplő pénzügyi szintet. Ezután a szeletelőnk Dátum táblázatának Dátum oszlopát használjuk.
1. verzió
Szabaduljunk meg mindentől a mátrixból, és kezdjük elölről. Létrehozok egy új mértéket, és V1-nek hívom, mert ez az első verzió lesz. Két másik variációt is megvizsgálunk.
A szűrőkörnyezet előkészítése
Az első dolog, amit meg fogunk tenni, az az, hogy a pénzügyi szint összes értékét lekérjük a szűrőkörnyezetből. Létrehozunk egy és FinancialLevelInFilterContext néven nevezzük el .
Az értékek szűrőkörnyezetből való lekéréséhez a pénzügyi szint oszlopot tartalmazó Munkakategória táblázatban fogjuk használni. Ezután létre kell hoznunk egy másik változót, és el kell neveznünk Eredmény . Ezután írja be, és zárja be azt is.
Az első argumentumban a dátumszeletelőt választjuk. Ezekben a dátumokban szeretnénk azonosítani azokat a dátumokat, amelyekben nincs 0, és amelyek legalább némi bevétellel rendelkeznek.
Ha hozzá szeretne férni az adott szeletelőben kiválasztott összes dátumhoz, akkor a Dátum felett táblázatot kell használnunk.
És mivel a mátrixon megvan a pénzügyi szint, meg kell győződnünk arról is, hogy az adott értéket eltávolítjuk a szűrőkontextusból. Használhatjuk a Munka felett kategóriát, majd írhatjuk az 1. pénzügyi szintet.
Most, hogy a szűrőkörnyezetünk elkészült, megírhatjuk a CLCULATE legbelső számítását. Először deklarálunk egy változót, amely a pénzügyi szint és a dátum oszlop kombinációja lesz, amint azt az első táblázatban láthattuk.
Ezután a és az Adattáblát használjuk a két táblázat összefoglalására: Munkakategória és Dátum táblázat.
Ez biztosítja a pénzügyi szint és a dátum oszlop kombinációját, amely az Adattáblában található. Ezután létrehozunk egy másik változót, ahol az első általunk létrehozott változó bevételi sorának értékét tároljuk.
Ennek a változónak a neve FinancialLevelAndDatesWithRevenue lesz . Ennek a változónak a kódja az előző változó kódja lesz. Ezután létrehozunk egy virtuális oszlopot, amely a Bevétel lesz, és elindítja a kontextusváltást. Tehát ennek a változónak minden sorához hozzárendeltük a bevételt.
Ez a táblázat tartalmazza a bevételt, amely szintén nulla. Ki kell szűrnünk azokat a sorokat, amelyek nullával rendelkeznek. Ehhez létrehozhatunk egy másik változót, és elnevezhetjük RemoveZeroes néven .
Használjuk az előző változót, majd ügyeljünk arra, hogy a bevétel ne legyen egyenlő nullával. Lehet nagyobb nullánál vagy kisebb nullánál, de nem lehet szigorúan egyenlő nullával.
Ezután lekérjük a dátumot a RemoveZeroes változóból . Ehhez létrehozhatunk egy másik változót, és elnevezhetjük KeepOnlyDates -nek .
A segítségével megszabadulhatok az ismétlődő dátumoktól, amelyeket a .
Ezután csökkenő sorrendben azonosítjuk a három legjobb dátumot. Használunk egy másik változót, és nevezzük el Last3Dates , majd használjuk a .
Ezután az utolsó három dátumot használjuk a dátum oszlopban, majd használjunk elválasztót.
Húzzuk át az újonnan létrehozott mértéket a mátrixba. Az eredmény: 2021.03.31., 2021.07.04. és 2021.02.04. Ez azt jelenti, hogy az intézkedésünk működik.
Menjünk vissza a szerkesztőhöz, és szabaduljunk meg a RETURN CONCATENATEX résztől. Az utolsó három dátum lekéréséhez azt tehetjük, hogy ellenőrizzük, hogy a RemoveZeroes változó mely sorai tartoznak valójában az utolsó három dátumhoz.
Ehhez létrehozunk egy másik DatesInLast3Dates változót , és használjuk a FILTER funkciót a RemoveZeroes- on . Ez egy táblázatot fog visszaadni, amely egy Munka kategóriát és Dátumot tartalmaz.
Összefoglaljuk a táblázatban létrehozott bevételi oszlopot. Adjuk vissza a SUMX értéket a DatesInLast3Dates fölé, majd összegezzük a bevétel oszlopot.
Ezzel a számítással minden sorhoz csak egyetlen értéket kapunk, mivel a Munka kategóriát eltávolítottuk a szűrőkörnyezetből.
Az elején létrehozott változót fogjuk használni annak ellenőrzésére, hogy a DatesInLast3Dates változó minden sora elérhető-e a szűrőkörnyezetben. Írhatunk egy másik változót, és nevezhetjük el IsInFilterContext .
Ez kiszűri a dátumokat a DatesInLast3Dates változóban. Ezután visszaküldöm a SUMX-et az IsInFilter kontextuson keresztül, és összefoglalom a bevételi oszlopot.
Miután megnyomtuk az Entert , láthatjuk, hogy ugyanazt az eredményt kapjuk, mint az elején.
A DAX nyelv LuckyTemplates számítási eredményének ellenőrzése
Annak ellenőrzésére, hogy valóban a helyes eredményt kapjuk-e, létrehozhatunk egy új CALCULATE táblát, amely segít a hibakeresésben, azonosításban és annak ellenőrzésében, hogy az eddig írt kód valóban a helyes eredményt adja vissza.
Készítsünk másolatot az eddig megírt kódról. Egyszerűen kimásolom az alább kiemelt részt, visszamegyek egy új táblázat létrehozásához, és beillesztem a kiemelt kódot. Nem fogunk vesződni a táblázat elnevezésével, mert nem érdekel bennünket.
És egyszerűen csak írhatunk RETURN DatesInLast3Dates . Ha rákattintok a Megerősítés gombra , egy táblázatot kapunk, de tudjuk, hogy valójában még nem a megfelelő eredményt adja vissza, mert valójában a szeletelő viselkedését kell utánoznunk.
Ezt a kódot becsomagolhatjuk egy CALCULATETABLE-be, és mindent behúzhatunk. Az utolsó részben azt fogom írni, hogy a dátumnak nagyobbnak vagy egyenlőnek kell lennie, mint 2021-03-15, és az ügyfél nevének egyenlőnek kell lennie a DHL Supply Chain értékkel .
A táblázat, amelyet ezen a mértéken belül hoztunk létre, gyakorlatilag a helyes eredményt adja vissza. Használhatunk SZÁMÍTÁST a számítás során létrehozandó virtuális táblázat ellenőrzésére.
Egyéb DAX nyelvű LuckyTemplates számítások
Most, hogy tudjuk, hogy a számításunk működik, és megértjük, mi is történik valójában a színfalak mögött, más módszereket is megvizsgálhatunk ugyanazon probléma kiszámítására. Mindenekelőtt hozzuk létre a már elkészített mérték másolatát.
2. verzió
Ezúttal nem a VALUES és FILTER függvényekre hagyatkozunk, ezért megválunk tőlük. Eltávolítjuk a visszatérési eredményt, valamint az utolsó változót, amelyet a CLCULATE-ban hoztunk létre. Ezután a CALCULATE-t CALCULATETABLE-re konvertáljuk.
És ahelyett, hogy skaláris értéket adnánk vissza, ezúttal a DatesInLast3Dates értéket adjuk vissza . Ez ugyanazt a SZÁMÍTÁST adja vissza, mint amit korábban készítettünk. A CALCULATE függvényt fogjuk használni, és az első argumentumban kiszámítjuk a bevétel mértékét, és a CALCULATETABLE-t szűrőkörnyezetként beillesztjük.
Miután behozom a mátrixba, láthatja, hogy minden cellához ugyanazt a végösszeget adjuk vissza.
A KEEEPFILTERS funkció használata
Jelenleg tudjuk, hogy a színfalak mögötti számítás megfelelően működik, de honnan tudhatjuk biztosan, hogy minden cellára csak az adott pénzügyi szintre vonatkozó értéket adjuk meg?
A CALCULATETABLE segítségével készítettünk egy táblázatot, amely tartalmazza a pénzügyi szintet, a dátum oszlopot és a bevétel oszlopot. A kulcsszűrő funkcióval metszéspontot hozhatunk létre a CALCULATETABLE-n kívül létező szűrőkontextus és a CALCULATETABLE által létrehozott szűrőkontextus között.
Ha rákattintunk a Megerősítés gombra, láthatjuk, hogy minden cellához a megfelelő értéket adjuk meg, és az 1-es és a 2-es verzió is a megfelelő értéket adja vissza.
Szóval hogyan működik ez? A SZÁMÍTÁS tábla a Karbantartási szintet adja vissza , majd a Bérlés , a Külső szerviz és a Pótalkatrészek . Ez metszéspontot hoz létre a karbantartás és a táblázat között.
A kölcsönzés létrehozza a kezdeti szűrőkörnyezetet, majd a SZÁMÍTÁSA visszaadja a Munka kategória összes értékét. Ekkor lesz egy metszéspont a Bérlemény és a SZÁMÍTÁSI TÁBLÁZAT által visszaadott táblázat között. Csak az adott kölcsönzési rész táblázatait vagy sorait küldjük vissza.
És végül, amikor az SUMMARIZE-t beillesztjük a szűrőkörnyezetbe, a CALCULATE függvény csak a kölcsönzés bevételét fogja kiszámítani. Ugyanez a folyamat történik minden sornál.
3. verzió
Nézzünk meg egy másik módszert ugyanennek a számításnak a DAX nyelvű LuckyTemplates használatával. Hozzuk létre a 2-es verzió mértékének másolatát, és hozzunk létre egy másik mértéket. Ezt a 3-as verziót fogjuk elnevezni.
Ennek a számításnak az az ötlete, hogy mivel a bevételt a CALCULATE függvény segítségével számítjuk ki, nem kell az ADDCOLUMNS részt használnunk, mert ugyanazt a dolgot másoljuk le a CALCULATE-n belül és kívül. Ehelyett egyszerűen azt írhatjuk, hogy a Bevétel nem lehet egyenlő 0-val.
Miután rákattintottam a Megerősítés gombra, meg kell győződnünk arról, hogy a kód működik, ezért húzzuk a mértéket a mátrixba.
Láthatja, hogy a kód valójában ugyanazt az értéket adja vissza minden cellához.
Ha megpróbálom megváltoztatni a szűrőkörnyezetet úgy, hogy módosítom a dátumot a Dátumszeletelőben, és kiválasztok néhány értéket a Vevőnévből, akkor láthatja, hogy valójában mindhárom mérték ugyanazt az értéket adja vissza minden sorhoz.
Következtetés
Ebben az oktatóanyagban megtanultuk, hogyan kell egy összetett logikát használni az időben a befejezés dátumától visszafelé haladva a három legfontosabb dátum azonosításához. A DAX nyelvű LuckyTemplates technika alapján ki tudtuk számítani a bevételt, és csak azokat az értékeket mutattuk meg, amelyek a szűrőkontextusban léteznek. Ebben az oktatóanyagban egyelőre ennyi.
Ez az oktatóanyag áttekintést nyújt a Power Query szerkesztőről és az M nyelvről a LuckyTemplates asztalon.
Ismerje meg, hogyan hozhat létre oldalszámozott jelentést, hogyan adhat hozzá szövegeket és képeket, majd exportálhatja a jelentést különböző dokumentumformátumokba.
Ismerje meg, hogyan használhatja a SharePoint automatizálási funkcióját munkafolyamatok létrehozására, és segít a SharePoint-felhasználók, -könyvtárak és -listák mikrokezelésében.
Fejlessze jelentéskészítési készségeit, ha csatlakozik egy adatelemzési kihíváshoz. Az Accelerator segítségével LuckyTemplates szuperfelhasználóvá válhatsz!
Ismerje meg, hogyan számíthatja ki a futó összegeket a LuckyTemplates programban a DAX segítségével. Az összesítések futtatása lehetővé teszi, hogy ne ragadjon le egyetlen egyéni eredménynél sem.
Ismerje meg a változók fogalmát a DAX-ban a LuckyTemplates-en belül, és a változók hatásait a mérőszámok kiszámítására.
Tudjon meg többet a LuckyTemplates Slope diagram nevű egyéni vizualizációról, amely egyetlen vagy több mérőszám növekedésének/csökkenésének megjelenítésére szolgál.
Fedezze fel a LuckyTemplates színtémáit. Ezek elengedhetetlenek ahhoz, hogy jelentései és vizualizációi zökkenőmentesen nézzenek ki és működjenek.
Az átlag kiszámítása a LuckyTemplates alkalmazásban számos módon elvégezhető, hogy pontos információkat kapjon üzleti jelentéseihez.
Nézzük meg a Standard LuckyTemplates Theming témakört, és tekintsünk át néhány olyan funkciót, amely magában a LuckyTemplates Desktop alkalmazásban található.