Szemétdimenzió: Mi ez, és miért más, csak nem szemét

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étdimenzió: Mi ez, és miért más, csak nem szemét

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.

Szemétdimenzió: Mi ez, és miért más, csak nem szemét

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 .

Szemétdimenzió: Mi ez, és miért más, csak nem szemét

Tranzakciók táblázatunkban csak három mező van: számlaszám , számla dátuma és értékesítési mennyiség .

Szemétdimenzió: Mi ez, és miért más, csak nem szemét

Á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 .

Szemétdimenzió: Mi ez, és miért más, csak nem szemét

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.

Szemétdimenzió: Mi ez, és miért más, csak nem szemét

Vessünk egy pillantást az eredményre, és bővítsük ki.

Szemétdimenzió: Mi ez, és miért más, csak nem szemét

Szemétdimenzió: Mi ez, és miért más, csak nem szemét

Szemétdimenzió: Mi ez, és miért más, csak nem szemét

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ű.

Szemétdimenzió: Mi ez, és miért más, csak nem szemét

Csak az oszlopot szövegtípusra változtatjuk. Most a két dimenzió egyike be van állítva a ténytáblázatban.

Szemétdimenzió: Mi ez, és miért más, csak nem szemét

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.

Szemétdimenzió: Mi ez, és miért más, csak nem szemét

Változtassuk meg ezt egy dátum adattípusra, majd mozgassuk az oszlopot előre.

Szemétdimenzió: Mi ez, és miért más, csak nem szemét

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 .

Szemétdimenzió: Mi ez, és miért más, csak nem szemét

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.

Szemétdimenzió: Mi ez, és miért más, csak nem szemét

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 .

Szemétdimenzió: Mi ez, és miért más, csak nem szemét

Ismét az Összes adatot fogjuk használni az új oszlopnévhez és az Összes sort a művelethez.

Szemétdimenzió: Mi ez, és miért más, csak nem szemét

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.

Szemétdimenzió: Mi ez, és miért más, csak nem szemét

Ezután kibontjuk az Összes adatot , és eltávolítjuk a Számlaszámot .

Szemétdimenzió: Mi ez, és miért más, csak nem szemét

Ha ezt kibővítjük, meg fogjuk határozni a számlaszámok közötti minimális napokat .

Szemétdimenzió: Mi ez, és miért más, csak nem szemét

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 .

Szemétdimenzió: Mi ez, és miért más, csak nem szemét

Szemétdimenzió: Mi ez, és miért más, csak nem szemét

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.

Szemétdimenzió: Mi ez, és miért más, csak nem szemét

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.

Szemétdimenzió: Mi ez, és miért más, csak nem szemét

Ahelyett, hogy ezeket a ténytáblázatban tartanánk, duplikáljuk meg ezt a táblázatot.

Szemétdimenzió: Mi ez, és miért más, csak nem szemét

A duplikált táblázatot Fiókjelzőknek nevezzük .

Szemétdimenzió: Mi ez, és miért más, csak nem szemét

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.

Szemétdimenzió: Mi ez, és miért más, csak nem szemét

Megvan az eredeti ténytáblázat és a Számlajelzők táblázat.

Szemétdimenzió: Mi ez, és miért más, csak nem szemét

Szemétdimenzió: Mi ez, és miért más, csak nem szemét

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.

Szemétdimenzió: Mi ez, és miért más, csak nem szemét

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 .

Szemétdimenzió: Mi ez, és miért más, csak nem szemét

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.

Szemétdimenzió: Mi ez, és miért más, csak nem szemét

Ö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.


Mi az a Power Query & M Language: Részletes áttekintés

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.

Oldalszámozott jelentés készítése: Szövegek és képek hozzáadása

Oldalszámozott jelentés készítése: Szövegek és képek hozzáadása

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.

A SharePoint automatizálási szolgáltatás | Bevezetés

A SharePoint automatizálási szolgáltatás | Bevezetés

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.

Oldja meg az adatelemzési kihívást a LuckyTemplates Accelerator segítségével

Oldja meg az adatelemzési kihívást a LuckyTemplates Accelerator segítségével

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!

Összesítések futtatása a LuckyTemplates alkalmazásban a DAX segítségével

Összesítések futtatása a LuckyTemplates alkalmazásban a DAX segítségével

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.

A LuckyTemplates Dax-változói állandóak: mit jelent ez?

A LuckyTemplates Dax-változói állandóak: mit jelent ez?

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.

LuckyTemplates lejtődiagram: Áttekintés

LuckyTemplates lejtődiagram: Áttekintés

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.

LuckyTemplates színes témák az egységes vizualizációkhoz

LuckyTemplates színes témák az egységes vizualizációkhoz

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.

Átlag kiszámítása LuckyTemplatesben: Hétköznapi vagy hétvégi eredmények elkülönítése a DAX segítségével

Átlag kiszámítása LuckyTemplatesben: Hétköznapi vagy hétvégi eredmények elkülönítése a DAX segítségével

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.

LuckyTemplates Theming | LuckyTemplates Desktop Standard Theming

LuckyTemplates Theming | LuckyTemplates Desktop Standard Theming

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ó.