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.


Pipe In R: Funkciók csatlakoztatása a Dplyr segítségével

Pipe In R: Funkciók csatlakoztatása a Dplyr segítségével

Ebből az oktatóanyagból megtudhatja, hogyan kapcsolhat össze függvényeket a dplyr pipe operátor használatával az R programozási nyelven.

RANKX Deep Dive: LuckyTemplates DAX funkció

RANKX Deep Dive: LuckyTemplates DAX funkció

A LuckyTemplates RANKX-je lehetővé teszi, hogy visszaadja egy adott szám rangsorát az egyes táblázatsorokban, amelyek egy számlista részét képezik.

LuckyTemplates témák és képek kinyerése a PBIX-ről

LuckyTemplates témák és képek kinyerése a PBIX-ről

Tanulja meg, hogyan bonthat szét egy PBIX-fájlt a LuckyTemplates-témák és képek háttérből történő kinyeréséhez, és használja fel jelentését!

Excel képletek csalólap: középhaladó útmutató

Excel képletek csalólap: középhaladó útmutató

Excel képletek csalólap: középhaladó útmutató

LuckyTemplates naptártáblázat: Mi ez és hogyan kell használni

LuckyTemplates naptártáblázat: Mi ez és hogyan kell használni

LuckyTemplates naptártáblázat: Mi ez és hogyan kell használni

Python a LuckyTemplatesben: Telepítés és beállítás

Python a LuckyTemplatesben: Telepítés és beállítás

Tanulja meg, hogyan telepítheti a Python programozási nyelvet a LuckyTemplatesbe, és hogyan használhatja eszközeit kódok írásához és vizuális megjelenítéséhez.

Dinamikus haszonkulcs kiszámítása – Egyszerű LuckyTemplates elemzés a DAX segítségével

Dinamikus haszonkulcs kiszámítása – Egyszerű LuckyTemplates elemzés a DAX segítségével

Tanulja meg, hogyan számíthat ki dinamikus haszonkulcsokat a LuckyTemplates mellett, és hogyan szerezhet több betekintést az eredmények mélyebbre ásásával.

A dátumtáblázat oszlopainak rendezése a LuckyTemplatesben

A dátumtáblázat oszlopainak rendezése a LuckyTemplatesben

Ismerje meg, hogyan kell megfelelően rendezni a mezőket egy kiterjesztett dátumtábla oszlopaiból. Ez egy jó stratégia nehéz területeken.

Keresse meg a legjobb termékeit minden régióhoz a LuckyTemplates alkalmazásban a DAX használatával

Keresse meg a legjobb termékeit minden régióhoz a LuckyTemplates alkalmazásban a DAX használatával

Ebben a cikkben azt mutatom be, hogyan találhatja meg régiónként a legnépszerűbb termékeket a LuckyTemplates DAX-számításaival, beleértve a TOPN és a CALCULATE függvényeket.

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

Ismerje meg, hogyan használhatja a szemét dimenziót az alacsony számosságú jelzőkhöz, amelyeket hatékonyan szeretne beépíteni az adatmodellbe.