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.
Ma egy adatmodellezési koncepcióról szeretnék beszélni, az úgynevezett junk dimenzióról . A nevéből azt hinné az ember, hogy ez egy lekicsinylő technika, amit érdemes elkerülni, de valójában hasznos megközelítés.
Valójában egy kérdésen dolgoztam a -ból, és a szemét dimenzió a tökéletes megoldás volt rá. Ha egyszer meglátod és megérted, sok alkalmazást találsz rá saját munkádban. Az oktatóanyag teljes videóját a blog alján tekintheti meg.
Tartalomjegyzék
Mik azok a szemétméretek?
Kimball és Ross The Data Warehouse Toolkit című könyve , amely a dimenziómodellezés egyik bibliája, a tipikusan alacsony számosságú jelzők és indikátorok csoportosításaként határozza meg . Az alacsony kardinalitás azt jelenti, hogy egy adott mezőn belül kevés egyedi megfigyelés van.
Példánkban egy adatmodellünk van az egyéni számítógépek gyártásáról szóló üzletünkhöz. Az adatmodell a rendelésekre és a számlákra vonatkozik. Számos zászlóval is rendelkezünk, ahol rögzíthetjük a processzor típusát, a torony konfiguráció típusát (kompakt vagy teljes) és a célt (játék vagy munkaállomás).
Szemétméretek meghatározása a konyhai szemétfiók analógiájával
Ha megnézi ezeket a mezőket, mindegyik mezőben csak két egyedi megfigyelés található. Ezt Kimball alacsony kardinalitású zászlónak nevezné . Azt mondja, hogy egy absztrakt dimenzió létrehozásával eltávolítjuk a zászlókat a ténytáblából, miközben hasznos dimenziós keretbe helyezzük őket.
A konyhai ócskavas fiók hasonlata egy ócska dimenzióra jó. Mindenkinek van egy fiókja, ami tele van gumiszalagokkal, kapcsokkal, elemekkel, születésnapi gyertyákkal stb. Nem fontos, hogy ezeknek a dolgoknak a saját fiókja legyen, de kell, hogy legyen egy hely, ahol elhelyezheti őket.
Megtartásuk miatt a ténytáblázat léggömb alakúra nőhet. Tegyük fel, hogy van egy ténytáblánk millió rekorddal. Rengeteg számítógépet építettünk, és minden egyes számítógéphez meg kell jelölnünk a processzort, a tornyot és a célt. Ez azt jelenti, hogy a megrendelt PC-k egymillió soránál 3 millió jelző is szerepel a ténytáblázatban.
A ténytáblázat méretének csökkentése
Áthelyezhetjük ezeket egy dimenziótáblába, és csak a modellazonosítóra hivatkozhatunk, hogy eltávolítsuk a 3 millió jelzőt a ténytáblából. Ehhez minden egyes zászlóhoz külön táblázatot készíthetünk, és működni fog. Ez a folyamat azonban bonyolítja az adatmodellt, ahol általában el kell kerülni az egyoszlopos táblákat.
Az ideális megoldás egy levélszemét dimenzió használata , ahol egy csomó alacsony számosságú jelző van, amelyek általános kapcsolatban állnak egymással. Ezek mind az általunk épített számítógépek attribútumaihoz kapcsolódnak, de nem igazán közvetlen módon, ahogyan általában egy adott dimenziótáblázathoz kellene.
A fórumtag problémájának áttekintése
Vessünk egy pillantást a fórumon közzétett konkrét alkalmazásra. A tag két különböző mezőt akart létrehozni, egyet az Elakadt és egyet az Aktív számára . Ha az ügyfél az elmúlt 45 napban hajtott végre tranzakciót, az aktívként lesz megjelölve; ellenkező esetben leálltként jelöli meg.
A tag egy másik dimenziótáblát is szeretett volna az Ügyféltípushoz, amely vagy többrendeléses vagy egyetlen rendelés. Ha a számlán kettő vagy több tranzakció volt az előzmények során egyetlen számlaszám használatával, az többrendeléses ügyfélnek minősül. És ha csak egy rendelésük lenne egy adott számlaszámra, az egyrendeléses ügyfél lenne.
Tehát ezt a két zászlót szeretnénk fejleszteni. Ugorjunk a LuckyTemplates alkalmazásba, és találjuk ki, hogyan kell ezt megtenni.
Adatmodellezés a levélszemét dimenzióhoz
Nézzük meg az adatmodellt. Ez egy nagyon egyszerű adatmodell. Megvan a hosszabbításunkés Tranzakciók táblázat .
Tranzakciók táblázatunkban csak három mező van: számlaszám , számla dátuma és értékesítési mennyiség .
Általában, ha az átalakítást közelebb tudjuk tolni a forráshoz, akkor ezt tesszük. Ez nem dinamikus a jelentéskészítési munkamenet során, így nem kell megtennünk a .
Ezt vagy power query-ben, vagy adattárház/SQL-ben kell megtennünk, ha van ilyen lehetőségünk. Egyelőre azonban tegyük fel, hogy nem tesszük, és csak beletesszük.
Az ügyféltípus azonosítása a levélszemét dimenzióhoz
Az első dolgunk az, hogy kitaláljuk az ügyfél típusát, legyen szó egy- vagy többrendeléses tranzakcióról. Használjuk a Group By , Count és Count Rows opciókat .
Ezután adja hozzá az összes adatot, és végezze el az All Rows műveletet , hogy ne az összesített táblát, hanem a kezdeti táblát adjuk vissza az adott sorszámmal minden sorban.
Vessünk egy pillantást az eredményre, és bővítsük ki.
Hozzáadhatunk egy egyéni oszlopot, és elnevezhetjük Ügyféltípusnak , majd létrehozhatunk egy IF utasítást. Az állítás az, hogy ha a Count egyenlő 1-gyel, akkor ez egyetlen sorrend; egyébként többrendű.
Csak az oszlopot szövegtípusra változtatjuk. Most a két dimenzió egyike be van állítva a ténytáblázatban.
Készítsük el a második dimenziótáblázatot. Ebben az esetben, ha a legutóbbi megrendelés a mai dátumtól számított 45 nap vagy kevesebb, akkor az ügyfél aktívnak tekinthető. Ha a mai naptól számított 45 napon belül nem érkezik megrendelés, akkor az ügyfél inaktív.
Hozzáadunk egy egyéni oszlopot, és elnevezzük az oszlopot Ma . Ezután adja hozzá a DateTime.LocalNow elemet az aktuális dátum és idő megadásához, majd a Date.From értéket, hogy csak a dátumrészt adja meg.
Változtassuk meg ezt egy dátum adattípusra, majd mozgassuk az oszlopot előre.
Van egy egyszerű módszer a két dátum oszlop közötti kivonás létrehozására. Csak jelölje ki ezt a két dátumot, kattintson a Dátumok elemre a szalagon, majd kattintson a Napok kivonása elemre .
Ez megadja a különbséget a két dátum között a napok számában. Nevezzük el ezt az új oszlopot Napokkal a mai nap előtt.
Következő lépésként meg kell keresni a mai nap előtti minimális napokat, ami az egyes számlaszámokhoz tartozó legfrissebb rendelést jelenti. Ha ez a szám kisebb vagy egyenlő, mint 45, akkor aktív.
Végezzünk el egy másik csoportosítási szempontot , majd a Speciális , majd a Számlaszámot .
Ismét az Összes adatot fogjuk használni az új oszlopnévhez és az Összes sort a művelethez.
Ezúttal működéseként a Minimum Közötti Napok Minimummal értéket adjuk hozzá , oszlopként pedig a Napok napja előtt oszlopot. Ezzel a legfrissebb rendelést kapjuk.
Ezután kibontjuk az Összes adatot , és eltávolítjuk a Számlaszámot .
Ha ezt kibővítjük, meg fogjuk határozni a számlaszámok közötti minimális napokat .
Végül hozzáadunk egy másik egyéni oszlopot, és ezt Ügyfélidőzítésnek nevezzük . Beírunk egy mi-ha paramétert, ahol ha a Minimum közötti napok értéke kisebb vagy egyenlő, mint 45, akkor aktív vagy leállt .
A szükségtelen oszlopok eltávolítása
Mivel ma már sok támogató oszlopunk van, kattintsunk az Oszlopok kiválasztása lehetőségre , és vegyük ki azokat, amelyekre nincs szükségünk.
Eltávolítjuk a Számlálás , Ma , Napok a mai nap előtt és Minimum napok között oszlopokat. Most már csak az eredeti ténytáblázat, valamint az Ügyféltípus és az Ügyfélidőzítés oszlopok állnak rendelkezésünkre.
Ahelyett, hogy ezeket a ténytáblázatban tartanánk, duplikáljuk meg ezt a táblázatot.
A duplikált táblázatot Fiókjelzőknek nevezzük .
Térjünk vissza a Tranzakciók táblázathoz , és vegyük ki az Ügyféltípus és Ügyfélidőzítés mezőket.
Megvan az eredeti ténytáblázat és a Számlajelzők táblázat.
A Fiókjelzők táblázathoz nincs szükségünk az Ügyféltípus és az Ügyfélidőzítés mezőkre, ezért ezeket kivesszük. Csak kiemeljük ezeket a mezőket, eltávolítjuk a sorokat és eltávolítjuk az ismétlődéseket.
Megvan a szemétdimenziós táblázatunk. Nincs más hátra, mint a Close & Apply gomb megnyomása . A következő lépés az, hogy a Számlajelzők táblázatban szereplő számlaszámot összekapcsolja a Tranzakciók táblázatban található számlaszámmal .
Egy-a-többhöz kapcsolatunk van a Tranzakciók tábla (amely a ténytáblázatunk) és a Számlajelzők tábla (amely a szemétdimenziós táblázatunk) között.
Következtetés
Tegyük bele a Client Timing és Client Type dimenziókat a vásznunkba, és alakítsuk szeletelőkké. Most már pontosan azt tehetjük, amit a tag kezdetben akart, vagyis szeletelni ezen attribútumok alapján.
Ha a Multi-Order-re kattintunk, akkor csak azok maradnak meg, akiknek több rendelésük van, ha pedig Egyszeri rendelésre megyünk, akkor azok maradnak, akiknek egy vásárlása van.
Összefoglalva, alapvetően ez a szemét dimenzió, és hogyan hozhatja létre. Ez egy nagyon hasznos technika, ha van egy csomó válogatott, alacsony számosságú jelző, amelyeket hatékonyan szeretne beépíteni az adatmodellbe.
Az összes sor szerint csoportosítás technika rendkívül hasznos ezeknek a szemétdimenzióknak a létrehozásához. Remélem hasznosnak találtad, és mint mindig.
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ó.