Time Intelligence i DAX: Sådan vælger du dynamisk startperiode

I dette blogindlæg vil vi behandle nogle besværlige problemer med tidsintelligens, især de problemer, der er forårsaget af ugegranularitet og de problemer, der kan forårsages af det uregelmæssige antal uger på et år. Vi bruger forskydninger til at finde præcise tidsintelligens i DAX.

Vi har et interessant scenarie til dig i dag. Dette dukkede op et par gange for nylig i LuckyTemplates-forummet. Det, folk ønskede at gøre, var at tage en visualisering (som kunne være en linjegraf eller et søjlediagram) og variere det dynamisk på startdatoen. Du kan se den fulde video af denne tutorial nederst på denne blog.

Time Intelligence i DAX: Sådan vælger du dynamisk startperiode

I dette tilfælde brugte vi det samme datasæt, som vi arbejdede for den gennemsnitlige spotpris pr. tønde olie . I stedet for bare altid at starte i begyndelsen i januar, ønskede vi at kunne klikke på det visuelle, ændre det til en anden startdato, men altid vise et års data.

Indholdsfortegnelse

Eksempelscenarier af tidsintelligens i DAX

Der er en række grunde til, at du måske ønsker at gøre denne teknik. Du kan bruge dette, hvis du har en metrik, der konstant bliver justeret i forhold til, hvordan den beregnes. Du vil måske kun vise data fra perioden for efterjusteringen fremad.

En anden grund til at bruge dette er, hvis du vil visualisere dette på en animeret måde. Dette vil grundlæggende tage dine data og vise dem dynamisk, når du klikker på afspilningsadgangen.

Time Intelligence i DAX: Sådan vælger du dynamisk startperiode

I denne visualisering kan vi ændre startdatoen måned for måned for at vise, hvordan den ændrer sig i en 12-måneders periode over tid. Dette er et interessant og nyttigt billede til forskellige business cases, men teoretisk set repræsenterer det også en række nøglespørgsmål relateret til DAX og datamodellering.

Lad os gå til LuckyTemplates og se på vores datamodel først. Dette er en virkelig simpel datamodel med en udvidet datotabel og en spotpristabel forbundet med datoerne.

Time Intelligence i DAX: Sådan vælger du dynamisk startperiode

Brug af forskydninger til tidsintelligens i DAX

En af de ting, vi vil arbejde på, er offsets . Forskydningerne i den udvidede datotabel beregnes dynamisk. Hver gang rapporten enten opdateres eller åbnes, går den gennem M-koden. For eksempel i en månedlig offset, tildeler den den aktuelle måned med 0, den foregående måned med -1 og to måneder tilbage med -2. Ser frem i fremtiden, tildeler den den næste måned +1 og i to måneder i fremtiden +2.

Dette er et simpelt koncept, men utroligt stærkt, når du beskæftiger dig med tidsintelligens i DAX og arbejder med måneder , kvartaler og uger . Hvis du ikke bruger en offset, skaber det nogle gange en del kompleksitet i dine beregninger.

At bruge forskydninger betyder at bruge en kontinuerlig række af tal, hvor det at gå tilbage en måned altid er -1 og en måned frem altid er +1, uanset hvor på året du måtte være.

Implementering af Rubber Duck-strategien for tidsintelligens i DAX

Tidligere har jeg talt om rubber ducking , som er at verbalisere din strategi højt, før du begynder at skrive din DAX.

Time Intelligence i DAX: Sådan vælger du dynamisk startperiode

Jeg tænker højt på, hvordan jeg vil håndtere dette fra en månedlig kontekst ved hjælp af tidsintelligens i DAX. Jeg ville starte noget baseret på det valgte år og måned og vælge dem ved hjælp af en afbrudt tabel, for hvis du tænker over det, vil hvert andet valg involvere krydsning af år (med undtagelse af januar).

Lad os sige, at vi ønsker 12 måneder fra marts, og vi ender med mindst to måneder i det efterfølgende år. Hvis vi bruger en tilsluttet slicer, kan vi kun filtrere for det år og vil ikke være i stand til at filtrere ind i det næste år.

Høst af forskydningerne fra startdatoen

Lad os gøre dette med en sammenhængende tabel for både måneden og året. Først skal vi høste den første offset, der omhandler startdatoen.

Og så vil vi rykke den modregning frem med 12 måneder, og så kun se på de datoer, der ligger inden for det sæt af forskydninger. Lad mig vise dig, hvordan det ser ud i DAX.

Beregning af det månedlige interval

Dette er vores mål for Within Range Monthly , hvor vi vælger vores år (som vi høstede fra den frakoblede årstabel) og vores måned (som vi høstede fra den afbrudte månedstabel).

Vi har også denne anden parameter, hvor hvis der ikke er foretaget noget valg, vil den som standard være januar. Denne parameter er primært kun til fejlfindingsformål.

Time Intelligence i DAX: Sådan vælger du dynamisk startperiode

Beregning af start- og slutmånedsforskydninger

Lad os se på startmånedsforskydningen ved at beregne MAX offset. Vi fjerner alle filtrene på datotabellen, og filtrerer ned til den valgte måned og det valgte år. For hver måned skal der kun være én forskydning, der svarer til den pågældende måned og år.

Time Intelligence i DAX: Sådan vælger du dynamisk startperiode

Fra det tidspunkt kan vi tage slutmånedsforskydningen , som blot er startmånedsforskydningen + 11 måneder.

Time Intelligence i DAX: Sådan vælger du dynamisk startperiode

Og så ser vi på hver valgt dato og afgør, om den falder inden for den indledende månedsforskydning og slutmånedsforskydningen. hvis det falder inden for denne periode, giver vi det et 1, og hvis ikke, giver vi det et 0.

Time Intelligence i DAX: Sådan vælger du dynamisk startperiode

Hvis vi går tilbage til månedsvisningen i vores visual, kan vi se Within Range visual, som vi har sat som lig med én. Så det viser kun de måneder inden for start til slut offset. Hvis vi for eksempel klikker på februar, ser vi februar til januar.

Time Intelligence i DAX: Sådan vælger du dynamisk startperiode

Beregning af det ugentlige interval

Lad os se, hvordan det ser ud fra et ugentligt synspunkt. Det visuelle starter i første omgang okay og går fra uge 1 til uge 52. Så langt, så godt.

Time Intelligence i DAX: Sådan vælger du dynamisk startperiode

Men hvis vi klikker på de andre år i årskiveren, kan vi se 52. uge, mens nogle har en 53. uge, hvilket giver en masse problemer. Du kan se fra dette eksempel, at problemet begynder at vise sig.

Vi har en startperiode i år 2020 og uge 15 , men slutperioden er år 2021 og uge 13 i stedet for år 2021 og uge 14 .

Time Intelligence i DAX: Sådan vælger du dynamisk startperiode

Går vi tilbage til uge 1, kan vi se, at det starter okay, men slutter i uge 52. Ser vi på uge 53-beregning her, er max ugenummer for 2020 og 2021 53 uger. Dette vil ikke fungere for ugentlig granularitet.

Time Intelligence i DAX: Sådan vælger du dynamisk startperiode

Lad os se, hvad vi kan gøre for at få dette til at fungere. Vi skal rette DAX-beregningen lige her i denne del:

Time Intelligence i DAX: Sådan vælger du dynamisk startperiode

Dette skyldes, at i nogle tilfælde er 51 korrekt, når der kun er 52 uger i et år, men for det år, hvor der er 53 uger, vil det forlade den sidste periode. Det er præcis, hvad vi så i den dynamiske visualisering i uger, hvor beregningen fjernede den sidste periode i årene 2020 og 2021.

For at rette op på dette går vi til Inden for rækkevidde ugentligt forkert mål, som faktisk ser enklere ud end det tidligere mål. Vi havde et startoffsetmål og beregnede max offset. Derefter fjernede vi filtret for datoer og indførte derefter filteret på den valgte uge og det valgte år med den antagelse, at dette ville føre til den korrekte offset.

Time Intelligence i DAX: Sådan vælger du dynamisk startperiode

Men dette virker ikke, fordi det er ligegyldigt, om du bruger en max offset eller en min offset. Alt, hvad vi gør, er at vikle en aggregator rundt, så vi ikke sætter en nøgen kolonne i en CALCUATE-sætning.

Men hvis vi går tilbage her til ISO WeekNumber , kan vi se, at et år og et ugenummer ikke entydigt bestemmer en ugentlig forskydning i den første periode.

Time Intelligence i DAX: Sådan vælger du dynamisk startperiode

Jeg fandt på en skudsikker måde at gøre dette på. Du kunne bruge MIN, men det giver mere mening at oprette denne Week1 Offset -måling. For at få uge 1 offset, har vi at gøre med uge 2, fordi den aldrig bliver delt. Uanset om der er 52 eller 53 uger i året, forbliver uge 2 intakt.

Time Intelligence i DAX: Sådan vælger du dynamisk startperiode

I denne beregning filtrerer vi ned til uge 2 for at få udligningen. Og så når vi først får den forskydning i uge 2, trækker vi bare en fra den. Dette vil utvetydigt give os uge 1 offset. Dette ender med at løse vores problem.

Beregning af Inden for Rækkevidden Ugentligt

Og så går vi tilbage til vores Within Range Weekly- mål, og skriver en IF-opgørelse, hvor hvis høsttallet er for uge 1, beregner vi uge en offset. Hvis det ikke er uge 1, beregner vi blot startugeforskydningen, som vi gjorde i forrige månedsberegning.

Time Intelligence i DAX: Sådan vælger du dynamisk startperiode

Og så vil slutugeforskydningen være startugeforskydningen + max ugenummer som enten kan være 52 eller 53. Så trækker vi bare 1 fra for ikke at dobbelttælle startforskydningen.

Time Intelligence i DAX: Sådan vælger du dynamisk startperiode

Vi kan lave den samme konstruktion, som vi brugte til det månedlige interval til at filtrere ugerne, hvor alt, der falder mellem begyndelsen og slutningen, får et 1, og alt, der ikke får et 0.

Derefter vil vi placere Ugentlige mål inden for rækkevidde i filterruden. Alt tjekker ud og ser helt rigtigt ud.

Time Intelligence i DAX: Sådan vælger du dynamisk startperiode

Vi kan klikke på afspilningsaksen og køre ugegranulariteten. Vi kan se, at det fungerer korrekt, ligesom det gjorde i månedssammenhæng.

Konklusion

Dette er et ret dybt dyk ned i tidsintelligens i DAX, hvor vi diskuterede, hvordan vi kan løse nogle af problemerne omkring ugenumre. Jeg håber, at du fandt denne vejledning nyttig og gav dig nogle ekstra værktøjer i din værktøjskasse, når du står over for en problematisk uge.

Hvis du kunne lide indholdet i denne særlige vejledning, så glem ikke at abonnere på LuckyTemplates tv-kanal. Vi har en enorm mængde indhold, der kommer ud hele tiden fra mig selv og en række indholdsskabere, alle dedikeret til at forbedre den måde, du bruger LuckyTemplates og Power Platform på.


Sådan kalder du en funktion i Python: The Ultimate Guide

Sådan kalder du en funktion i Python: The Ultimate Guide

Sådan kalder du en funktion i Python: The Ultimate Guide

Hvor meget koster LuckyTemplates – Afkodningsmuligheder for prissætning

Hvor meget koster LuckyTemplates – Afkodningsmuligheder for prissætning

Hvor meget koster LuckyTemplates – Afkodningsmuligheder for prissætning

LuckyTemplates-rapport vs Dashboard - Forstå de vigtigste forskelle

LuckyTemplates-rapport vs Dashboard - Forstå de vigtigste forskelle

LuckyTemplates-rapport vs Dashboard - Forstå de vigtigste forskelle

Sådan kontrollerer du interaktionerne mellem dine visuelle elementer i LuckyTemplates

Sådan kontrollerer du interaktionerne mellem dine visuelle elementer i LuckyTemplates

Dette indlæg viser, hvordan du styrer interaktionerne mellem dine visuelle elementer i LuckyTemplates. Du kan se den fulde video af denne tutorial nederst på denne blog.

Beregn gennemsnit pr. kundetransaktion ved hjælp af DAX i LuckyTemplates

Beregn gennemsnit pr. kundetransaktion ved hjælp af DAX i LuckyTemplates

Beregn den gennemsnitlige mængde af salg, overskud og avancer for dine kunder ved hjælp af DAX i LuckyTemplates, og forgren dig for at få stor indsigt.

Analyse af kundetendens ved hjælp af DAX i LuckyTemplates

Analyse af kundetendens ved hjælp af DAX i LuckyTemplates

Her skal vi analysere kundetrends ved hjælp af LuckyTemplates for at finde ud af, hvordan vi kan finde vores kunder, der handler bag trend.

Microsoft SharePoint | Et overblik

Microsoft SharePoint | Et overblik

Opdag de forskellige anvendelser af Microsoft SharePoint, dets værdifulde funktioner, og hvorfor det er vigtigt at lære om det.

knuste et glas? En dag kan du måske 3-D-printe en ny

knuste et glas? En dag kan du måske 3-D-printe en ny

knuste et glas? En dag kan du måske 3-D-printe en ny

Rummets lyde, mens NASAs Cassini dykker af Saturn

Rummets lyde, mens NASAs Cassini dykker af Saturn

Rummets 'lyde', mens NASA's Cassini dykker af Saturn

Udvidede tabeller i LuckyTemplates

Udvidede tabeller i LuckyTemplates

Tjek denne vejledning om udvidede tabeller, forstå, hvordan de fungerer, og hvordan de hurtigt kan ødelægge dine beregninger.