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.


DAX Studio EVALUATE Nøkkelord: Grunnleggende eksempler

DAX Studio EVALUATE Nøkkelord: Grunnleggende eksempler

Lær å bruke DAX Studio EVALUATE nøkkelordet med grunnleggende eksempler og få en bedre forståelse av hvordan dette kan hjelpe deg med databehandling.

Opprette en datotabell i LuckyTemplates

Opprette en datotabell i LuckyTemplates

Finn ut hvorfor det er viktig å ha en dedikert datotabell i LuckyTemplates, og lær den raskeste og mest effektive måten å gjøre det på.

LuckyTemplates Mobile Reporting Tips og teknikker

LuckyTemplates Mobile Reporting Tips og teknikker

Denne korte opplæringen fremhever LuckyTemplates mobilrapporteringsfunksjon. Jeg skal vise deg hvordan du kan utvikle rapporter effektivt for mobil.

Profesjonelle tjenesteanalyserapporter i LuckyTemplates

Profesjonelle tjenesteanalyserapporter i LuckyTemplates

I denne LuckyTemplates-utstillingen vil vi gå gjennom rapporter som viser profesjonell tjenesteanalyse fra et firma som har flere kontrakter og kundeengasjementer.

Microsoft Power Platform-oppdateringer | Microsoft Ignite 2021

Microsoft Power Platform-oppdateringer | Microsoft Ignite 2021

Gå gjennom de viktigste oppdateringene for Power Apps og Power Automate og deres fordeler og implikasjoner for Microsoft Power Platform.

Vanlige SQL-funksjoner: en oversikt

Vanlige SQL-funksjoner: en oversikt

Oppdag noen vanlige SQL-funksjoner som vi kan bruke som streng, dato og noen avanserte funksjoner for å behandle eller manipulere data.

LuckyTemplates Template Creation: Guide og tips

LuckyTemplates Template Creation: Guide og tips

I denne opplæringen lærer du hvordan du lager din perfekte LuckyTemplates-mal som er konfigurert til dine behov og preferanser.

Feltparametre og små multipler i LuckyTemplates

Feltparametre og små multipler i LuckyTemplates

I denne bloggen vil vi demonstrere hvordan du legger feltparametere sammen med små multipler for å skape utrolig nyttig innsikt og grafikk.

LuckyTemplates-rangering og tilpasset gruppering

LuckyTemplates-rangering og tilpasset gruppering

I denne bloggen vil du lære hvordan du bruker LuckyTemplates rangering og tilpassede grupperingsfunksjoner for å segmentere et eksempeldata og rangere det i henhold til kriterier.

Viser kun kumulativ total opp til en bestemt dato i LuckyTemplates

Viser kun kumulativ total opp til en bestemt dato i LuckyTemplates

I denne opplæringen skal jeg dekke en spesifikk teknikk rundt hvordan du viser kumulativ total kun opp til en bestemt dato i grafikken i LuckyTemplates.