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.
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).
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.
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 .
Transaksjonstabellen vår har kun tre felt: et kontonummer , fakturadato og salgsantall .
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 .
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.
La oss ta en titt på resultatet og utvide det.
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.
Vi endrer bare kolonnen til en teksttype. Nå har vi en av våre to dimensjoner satt i faktatabellen.
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.
La oss bare endre dette til en datodatatype, og deretter flytte kolonnen foran.
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 .
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.
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 .
Igjen, vi bruker Alle data for nytt kolonnenavn og Alle rader for operasjon.
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.
Deretter utvider vi alle data og fjerner kontonummer .
Når vi utvider dette, vil vi ha minimumsdager mellom for kontonumrene.
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 .
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.
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 .
I stedet for å holde disse i faktatabellen, la oss duplisere denne tabellen.
Vi kaller duplikattabellen Kontoflagg .
La oss gå tilbake til Transaksjonstabellen og ta ut feltene Client Type og Client Timing .
Vi har nå den opprinnelige faktatabellen og kontoflaggtabellen.
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.
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 .
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.
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.
Denne opplæringen vil diskutere om variabler og uttrykk i Power Query Editor. Du lærer hvordan du skriver og bygger dem riktig.
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!
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.
Lær hvordan et tilpasset stolpediagram på markedsplassen kan brukes til datasammenligning og hvordan du kan lage dem ved å bruke eksempler i LuckyTemplates.
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.
eDNA demonstrerer hvordan du utfører språk- eller tekstoversettelse ved hjelp av Python og overfører det til LuckyTemplates. LuckyTemplates Python-opplæring.
I denne opplæringen lærer du hvordan du bruker Gauge Bullet Graph til å lage et Gantt-diagram i LuckyTemplates Report Builder.
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
Ny kundeanalyse med LuckyTemplates – Neste medlemsbegivenhet