Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

I dag vil jeg snakke om et datamodelleringskonsept kalt søppeldimensjon . Ut fra navnet skulle du tro at det er en teknikk som er nedsettende og noe du vil unngå, men det er faktisk en nyttig tilnærming.

Faktisk jobbet jeg med et spørsmål fra , og en søppeldimensjon var den perfekte løsningen for det. Når du ser og forstår det, vil du finne mye bruk for det i ditt eget arbeid. Du kan se hele videoen av denne opplæringen nederst på denne bloggen.

Innholdsfortegnelse

Hva er søppeldimensjoner?

Kimball og Rosss The Data Warehouse Toolkit , en av biblene for dimensjonsmodellering, definerer det som en gruppering av typiske flagg og indikatorer med lav kardinalitet . Lav kardinalitet betyr et lite antall unike observasjoner innenfor et gitt felt.

I vårt eksempel har vi en datamodell for vår virksomhet med å bygge tilpassede PC-er. Datamodellen er med hensyn til bestillinger og fakturaer. Vi har også en rekke flagg der vi kan fange type prosessor , type tårnkonfigurasjon (kompakt eller full) og formål (spill eller arbeidsstasjon).

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

Definere søppeldimensjoner ved å bruke analogien for kjøkkensøppelskuff

Hvis du ser på hvert av disse feltene, er det bare to unike observasjoner i hvert felt. Dette er hva Kimball vil referere til som et flagg med lav kardinalitet . Han sier at ved å lage en abstrakt dimensjon fjerner vi flagg fra faktatabellen samtidig som vi plasserer dem i et nyttig dimensjonalt rammeverk.

Analogien med kjøkkensøppelskuffen for en søppeldimensjon er god. Alle har en skuff som er full av strikk, stifter, batterier, bursdagslys osv. Det er ikke viktig for noen av disse tingene å garantere å ha sin egen skuff, men du må ha et sted å plassere dem.

Å beholde dem kan føre til at faktatabellen blir ballong i størrelse. La oss si at vi har en faktatabell med en million poster. Vi bygde mange datamaskiner, og for hver datamaskin vi bygger, må vi flagge prosessoren, tårnet og formålet. Det betyr at for én million rekker med PC-er som er bestilt, har vi også 3 millioner flagg i faktatabellen.

Redusere størrelsen på faktatabellen

Vi kunne flytte disse til en dimensjonstabell og koble bare på modell-ID-en for å fjerne de 3 millioner flaggene fra faktatabellen. For å gjøre dette kan vi lage en egen tabell for hvert av disse flaggene og det vil fungere. Men denne prosessen vil komplisere datamodellen, hvor du normalt vil unngå enkeltkolonnetabeller.

Den ideelle løsningen er å bruke en søppeldimensjon , der du har en haug med flagg med lav kardinalitet som er relatert på en generell måte. Disse er alle relatert til attributter til datamaskinene vi bygger, men ikke på en virkelig direkte måte som du normalt ville ha for en spesifikk dimensjonstabell.

Gjennomgang av forummedlemmets problem

La oss ta en titt på den spesifikke applikasjonen som ble lagt ut på forumet. Medlemmet ønsket å opprette to forskjellige felt, ett for Stalled og ett for Active . Hvis kunden har utført en transaksjon i løpet av de siste 45 dagene, blir den merket som aktiv; ellers blir den merket som stoppet.

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

Medlemmet ønsket også en annen dimensjonstabell for Client Type, som enten er multiordre eller enkeltordre. Hvis kontoen hadde to eller flere transaksjoner på noe tidspunkt gjennom historien ved bruk av ett enkelt kontonummer, vil det bli betraktet som en multiordreklient. Og hvis de bare hadde én ordre for et gitt kontonummer, ville det være en enkeltordrekunde.

Så det er de to flaggene vi ønsker å utvikle. La oss hoppe inn i LuckyTemplates og finne ut hvordan du gjør det.

Datamodellering for søppeldimensjonen

La oss ta en titt på datamodellen. Det er en veldig enkel datamodell. Vi har vår utvidetog Transaksjonstabell .

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

Transaksjonstabellen vår har kun tre felt: et kontonummer , fakturadato og salgsantall .

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

Generelt, hvis vi kan presse transformasjonen nærmere kilden, vil vi gjøre det. Dette er ikke dynamisk i løpet av en rapporteringsøkt, så vi trenger ikke å gjøre det i .

Vi bør gjøre det enten i kraftspørring, eller datavarehus/SQL hvis vi har det alternativet. Men foreløpig, la oss anta at vi ikke gjør det, og at vi bare gjør det.

Identifisere klienttypen for søppeldimensjonen

Det første vi skal gjøre er å finne ut klienttypen, enten det er en enkeltbestillings- eller multiordretransaksjon. Vi bruker grupper etter , telle og telle rader .

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

Legg deretter til alle data og gjør det til en Alle rader-operasjon slik at vi ikke returnerer den aggregerte tabellen, men den første tabellen med det radantallet i hver rad.

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

La oss ta en titt på resultatet og utvide det.

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

Vi kan legge til en egendefinert kolonne og gi den navnet Client Type og deretter lage en IF-setning. Utsagnet er hvis Count er lik 1, så er det en enkelt rekkefølge; ellers er det multi-order.

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

Vi endrer bare kolonnen til en teksttype. Nå har vi en av våre to dimensjoner satt i faktatabellen.

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

La oss få den andre dimensjonstabellen ferdig. For denne, hvis den siste bestillingen er 45 dager eller mindre fra dagens dato, blir klienten sett på som aktiv. Hvis det ikke er noen bestilling innen 45 dager fra i dag, er klienten inaktiv.

Vi legger til en egendefinert kolonne og gir kolonnen navnet I dag . Legg deretter til DateTime.LocalNow for å gi oss gjeldende dato og klokkeslett, deretter Date.From for å gi oss kun datodelen.

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

La oss bare endre dette til en datodatatype, og deretter flytte kolonnen foran.

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

Det er en enkel måte å lage en subtraksjon mellom de to datokolonnene. Bare marker disse to datoene, klikk på Datoer på båndet, og klikk deretter på Trekk fra dager .

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

Dette vil gi deg forskjellen mellom disse to datoene når det gjelder antall dager. La oss gi denne nye kolonnen navnet Dagene før i dag.

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

Neste trinn er å finne minimumsdagene før i dag, som betyr den siste bestillingen for hvert kontonummer. Hvis dette tallet er mindre enn eller lik 45, er det aktivt.

La oss gjøre en annen gruppe etter , deretter Avansert , så kontonummer .

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

Igjen, vi bruker Alle data for nytt kolonnenavn og Alle rader for operasjon.

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

Denne gangen legger vi til Minimum Days Between med Minimum som operasjon og Days Before Today som kolonne. Dette vil gi oss den siste bestillingen.

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

Deretter utvider vi alle data og fjerner kontonummer .

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

Når vi utvider dette, vil vi ha minimumsdager mellom for kontonumrene.

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

Til slutt legger vi til en annen egendefinert kolonne, og kaller den Client Timing . Vi legger inn en hva-hvis-parameter der hvis min. Dager mellom er mindre enn eller lik 45, så er den Aktiv eller Stalled .

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

Fjerne de unødvendige kolonnene

Siden vi nå har mange støttekolonner, la oss klikke på Velg kolonner og ta ut de vi ikke trenger.

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

Vi fjerner kolonnene Count , Today , Days Before Today , og Min Days Between . Vi har nå bare den originale faktatabellen, pluss kolonnene Client Type og Client Timing .

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

I stedet for å holde disse i faktatabellen, la oss duplisere denne tabellen.

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

Vi kaller duplikattabellen Kontoflagg .

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

La oss gå tilbake til Transaksjonstabellen og ta ut feltene Client Type og Client Timing .

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

Vi har nå den opprinnelige faktatabellen og kontoflaggtabellen.

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

For Kontoflagg-tabellen trenger vi ikke feltene Client Type og Client Timing , så vi tar disse ut. Vi markerer bare alle disse feltene, fjerner rader og fjerner duplikater.

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

Vi har nå vår søppeldimensjonstabell. Alt som gjenstår er å trykke på Lukk og bruk . Det neste trinnet er å koble kontonummeret fra vår kontoflagg-tabell til kontonummeret i vår transaksjonstabell .

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

Vi har et en-til-mange forhold mellom Transaksjonstabellen (som er faktatabellen vår) og Kontoflagg-tabellen (som er søppeldimensjonstabellen vår).



Konklusjon

La oss slippe Client Timing og Client Type- dimensjonene inn i lerretet vårt og gjøre dem om til slicere. Vi kan nå gjøre akkurat det medlemmet ønsket å gjøre i utgangspunktet, som er å dele ut basert på disse attributtene.

Hvis vi klikker på Multi-Order, vil det bare etterlate oss med de som har flere bestillinger, og hvis vi går Single-Order, vil det etterlate oss med de som har ett kjøp.

Søppeldimensjon: Hva er det og hvorfor det er alt annet enn søppel

For å oppsummere er dette i utgangspunktet hva en søppeldimensjon er, og hvordan du kan lage den. Dette er en veldig nyttig teknikk hvis du har en haug med assorterte flagg med lav kardinalitet som du ønsker å inkorporere i datamodellen din på en effektiv måte.

Gruppe etter alle rader-teknikken er ekstremt nyttig for å lage disse søppeldimensjonene. Jeg håper du fant dette nyttig og som alltid.


Variabler og uttrykk i Power Query Editor

Variabler og uttrykk i Power Query Editor

Denne opplæringen vil diskutere om variabler og uttrykk i Power Query Editor. Du lærer hvordan du skriver og bygger dem riktig.

Hvordan lage et Lucky Templates-varmekart

Hvordan lage et Lucky Templates-varmekart

Et LuckyTemplates-varmekart er en type visualisering som brukes til å vise datatetthet på et kart. I denne opplæringen vil jeg diskutere hvordan vi kan lage en – ikke gå glipp av noe!

Opprette et Pareto-diagram i LuckyTemplates – Avansert DAX

Opprette et Pareto-diagram i LuckyTemplates – Avansert DAX

Jeg skal lære deg et veldig interessant eksempel rundt Pareto-prinsippet og hvordan du lager et Pareto-diagram ved hjelp av viktige DAX-formler.

Egendefinert stolpediagram i LuckyTemplates: varianter og modifikasjoner

Egendefinert stolpediagram i LuckyTemplates: varianter og modifikasjoner

Lær hvordan et tilpasset stolpediagram på markedsplassen kan brukes til datasammenligning og hvordan du kan lage dem ved å bruke eksempler i LuckyTemplates.

Kraftautomatisering av statiske resultater: En oversikt

Kraftautomatisering av statiske resultater: En oversikt

Lær hvordan Power Automate Static Results-funksjonen fungerer og hvorfor det er bra å bli lagt til de beste praksisene når du lager flytdiagrammer.

LuckyTemplates Python-opplæring: Hvordan oversette tekster

LuckyTemplates Python-opplæring: Hvordan oversette tekster

eDNA demonstrerer hvordan du utfører språk- eller tekstoversettelse ved hjelp av Python og overfører det til LuckyTemplates. LuckyTemplates Python-opplæring.

Lag et Gantt-diagram i LuckyTemplates Report Builder

Lag et Gantt-diagram i LuckyTemplates Report Builder

I denne opplæringen lærer du hvordan du bruker Gauge Bullet Graph til å lage et Gantt-diagram i LuckyTemplates Report Builder.

Lag 3D-spredningsplott ved å bruke Python i LuckyTemplates

Lag 3D-spredningsplott ved å bruke Python i LuckyTemplates

I denne opplæringen lærer du hvordan du lager et tredimensjonalt (3D) spredningsplott ved å bruke Python i LuckyTemplates.

Effektiv LuckyTemplates-rapportering – øktgjennomgang og ressursnedlasting

Effektiv LuckyTemplates-rapportering – øktgjennomgang og ressursnedlasting

Effektiv LuckyTemplates-rapportering – øktgjennomgang og ressursnedlasting

Ny kundeanalyse med LuckyTemplates – Neste medlemsbegivenhet

Ny kundeanalyse med LuckyTemplates – Neste medlemsbegivenhet

Ny kundeanalyse med LuckyTemplates – Neste medlemsbegivenhet