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.

Leave a Comment

E-mail melléklet mentése SharePointba a Power Automate segítségével

E-mail melléklet mentése SharePointba a Power Automate segítségével

Ebből a blogból megtudhatja, hogyan mentheti automatikusan az e-mail mellékleteket a SharePointba, majd törölheti az e-maileket a Power Automate segítségével.

A Microsoft LuckyTemplates irányítópult 18 legjobb példája 2023

A Microsoft LuckyTemplates irányítópult 18 legjobb példája 2023

A Microsoft LuckyTemplates irányítópult 18 legjobb példája 2023

A Power Automate folyamatok létrehozása a semmiből

A Power Automate folyamatok létrehozása a semmiből

Ismerje meg, hogyan hozhat létre <strong>Power Automate</strong> folyamatokat a semmiből. Sablon használata helyett mi magunk hozzuk létre a kiváltó okokat és a műveleteket.

4 módszer a Pi használatára a Pythonban példákkal

4 módszer a Pi használatára a Pythonban példákkal

4 módszer a Pi használatára a Pythonban példákkal

Profit and Loss (P&L) kimutatások létrehozása a LuckyTemplates alkalmazásban

Profit and Loss (P&L) kimutatások létrehozása a LuckyTemplates alkalmazásban

Ebben az útmutatóban bemutatom, hogyan lehet Pénzügyi információk mátrixát létrehozni a Profit és veszteség (P&L) kimutatással a LuckyTemplates alkalmazásban.

Hogyan lehet dinamikusan egyesíteni az oszlopokat egy Power Query-táblázatban

Hogyan lehet dinamikusan egyesíteni az oszlopokat egy Power Query-táblázatban

Fedezze fel, hogyan lehet dinamikusan egyesíteni oszlopokat a Power Query Table.CombineColumns függvény segítségével.

SharePoint-fájlok hozzáadása a számítógéphez

SharePoint-fájlok hozzáadása a számítógéphez

Ismerje meg, hogyan adhatjuk hozzá és szinkronizálhatjuk SharePoint-fájljainkat az asztalon és a OneDrive-on.

Dátumtáblázat létrehozása a LuckyTemplates alkalmazásban

Dátumtáblázat létrehozása a LuckyTemplates alkalmazásban

Tudja meg, miért fontos egy dedikált dátumtáblázat a LuckyTemplatesben, és ismerje meg ennek leggyorsabb és leghatékonyabb módját.

LuckyTemplates mobil jelentéskészítési tippek és technikák

LuckyTemplates mobil jelentéskészítési tippek és technikák

Ez a rövid oktatóanyag kiemeli a LuckyTemplates mobil jelentési funkcióját. Megmutatom, hogyan készíthet hatékony jelentéseket mobileszközökön.

Professzionális szolgáltatáselemzési jelentések LuckyTemplatesben

Professzionális szolgáltatáselemzési jelentések LuckyTemplatesben

Ebben a LuckyTemplates bemutatóban olyan jelentéseket tekintünk át, amelyek professzionális szolgáltatáselemzést mutatnak be egy olyan cégtől, amely több szerződéssel és ügyfél-elkötelezettséggel rendelkezik.