Aikatieto DAX:ssa: Aloitusajan valitseminen dynaamisesti

Tässä blogikirjoituksessa käsittelemme joitain vaikeita aikatiedon ongelmia, erityisesti niitä, jotka johtuvat viikon tarkkuudesta ja ongelmista, joita voi aiheuttaa viikkojen epäsäännöllinen lukumäärä vuodessa. Käytämme poikkeamia saadaksemme tarkan aikatiedon DAX:ssa.

Meillä on tänään sinulle mielenkiintoinen skenaario. Tämä tuli esiin muutaman kerran äskettäin LuckyTemplates-foorumilla. Ihmiset halusivat ottaa visuaalisen kuvan (joka voi olla viivakaavio tai pylväskaavio) ja muuttaa sitä dynaamisesti aloituspäivänä. Voit katsoa tämän opetusohjelman koko videon tämän blogin alaosasta.

Aikatieto DAX:ssa: Aloitusajan valitseminen dynaamisesti

Tässä tapauksessa käytimme samaa tietojoukkoa, jota käytimme öljytynnyrin keskimääräiselle spot-hinnalle . Sen sijaan, että aloittaisimme aina tammikuun alusta, halusimme klikata visuaalista kuvaa, muuttaa sen alkamispäivämääräksi, mutta näyttää aina yhden vuoden tiedot.

Sisällysluettelo

Esimerkkiskenaariot aikatiedosta DAXissa

On useita syitä, miksi saatat haluta käyttää tätä tekniikkaa. Voit käyttää tätä, jos sinulla on mittari, jota säädellään jatkuvasti uudelleen sen laskentatavan suhteen. Haluat ehkä näyttää vain tiedot uudelleensäätöjaksolta eteenpäin.

Toinen syy käyttää tätä on, jos haluat visualisoida tämän animoidulla tavalla. Tämä periaatteessa ottaa tietosi ja näyttää ne dynaamisesti, kun napsautat toisto-oikeutta.

Aikatieto DAX:ssa: Aloitusajan valitseminen dynaamisesti

Tässä visualisoinnissa voimme muuttaa aloituspäivää kuukausittain näyttääksemme, kuinka se muuttuu 12 kuukauden aikana ajan kuluessa. Tämä on mielenkiintoinen ja hyödyllinen visualisointi erilaisiin liiketoimintatapauksiin, mutta teoriassa se edustaa myös useita DAX- ja datamallinnukseen liittyviä avainkysymyksiä.

Siirrytään LuckyTemplatesiin ja katsotaan ensin tietomallimme. Tämä on todella yksinkertainen tietomalli, jossa on laajennettu päivämäärätaulukko ja spot-hintataulukko yhdistettynä päivämääriin.

Aikatieto DAX:ssa: Aloitusajan valitseminen dynaamisesti

Siirtymien käyttäminen aikatietoa varten DAX:ssa

Yksi asia, jonka parissa työskentelemme, ovat kompensaatiot . Laajennetun päivämäärätaulukon siirtymät lasketaan dynaamisesti. Aina kun raportti joko päivitetään tai avataan, se käy läpi M-koodin. Esimerkiksi kuukausisiirrossa se määrittää nykyisen kuukauden arvon 0, edellisen kuukauden -1:n ja kahdelle kuukaudelle -2:n. Tulevaisuudessa se antaa seuraavalle kuukaudelle +1 ja tulevalle kahdelle kuukaudelle +2.

Tämä on yksinkertainen konsepti, mutta uskomattoman tehokas, kun käsittelet DAX:n aikatietoa ja työskentelet kuukausien , neljännesten ja viikkojen kanssa . Jos et käytä offsetia, se tekee laskelmistasi toisinaan melkoisen monimutkaisia.

Poikkeamien käyttäminen tarkoittaa jatkuvan numerosarjan käyttöä, jossa kuukausi taaksepäin on aina -1 ja kuukaudessa eteenpäin +1 riippumatta siitä, missä vaiheessa olet.

Kumiankkastrategian toteuttaminen aikatietoa varten DAXissa

Aiemmin olen puhunut kumista , joka ilmaisee strategiasi ääneen ennen kuin aloitat DAX:n kirjoittamisen.

Aikatieto DAX:ssa: Aloitusajan valitseminen dynaamisesti

Ajattelen ääneen, kuinka käsittelen tätä kuukausikontekstissa käyttämällä aikatietoa DAXissa. Aloittaisin jotain valitun vuoden ja kuukauden perusteella ja valitsisin ne käyttämällä irrotettua taulukkoa, koska jos ajattelee niin joka toinen valinta liittyy vuosien ylittämiseen (tammikuuta lukuun ottamatta).

Oletetaan, että haluamme 12 kuukautta maaliskuusta alkaen, ja seuraavana vuonna saamme vähintään kaksi kuukautta. Jos käytämme yhdistettyä viipalointilaitetta, voimme suodattaa vain kyseisen vuoden, emmekä voi suodattaa seuraavaan vuoteen.

Poikkeamien kerääminen aloituspäivästä

Tehdään tämä yhdistetyllä taulukolla sekä kuukaudelle että vuodelle. Ensin meidän on korjattava ensimmäinen offset, joka koskee aloituspäivää.

Ja sitten haluamme siirtää tätä siirtymää eteenpäin 12 kuukaudella ja tarkastella sitten vain päivämääriä, jotka ovat tämän siirtymäjoukon sisällä. Näytän sinulle, miltä se näyttää DAXissa.

Kuukausivaihtelun laskeminen

Tämä on mittamme Within Range Monthly -arvossa, jossa valitsemme vuoden (jonka korjasimme irrotettujen vuosien taulukosta) ja kuukausimme (jonka korjasimme irrotettujen kuukausien taulukosta).

Meillä on myös tämä toinen parametri, jossa jos valintaa ei tehdä, se on oletuksena tammikuu. Tämä parametri on ensisijaisesti tarkoitettu vain virheenkorjaustarkoituksiin.

Aikatieto DAX:ssa: Aloitusajan valitseminen dynaamisesti

Alku- ja loppukuukauden erojen laskeminen

Tarkastellaan aloituskuukausipoikkeamaa laskemalla MAX-poikkeama. Poistamme kaikki suodattimet päivämäärätaulukosta ja suodatamme valitun kuukauden ja vuoden mukaan. Kullekin kuukaudelle tulee olla vain yksi siirto, joka vastaa kyseistä kuukautta ja vuotta.

Aikatieto DAX:ssa: Aloitusajan valitseminen dynaamisesti

Siitä lähtien voimme ottaa loppukuukauden poiston , joka on vain aloituskuukausiero + 11 kuukautta.

Aikatieto DAX:ssa: Aloitusajan valitseminen dynaamisesti

Ja sitten tarkastelemme jokaista valittua päivämäärää ja määritämme, kuuluuko se aloituskuukauden ja loppukuukauden siirtymän sisälle. jos se osuu tähän ajanjaksoon, annamme sille 1 ja jos ei, annamme sille 0.

Aikatieto DAX:ssa: Aloitusajan valitseminen dynaamisesti

Jos palaamme visuaalissamme kuukausinäkymään, voimme nähdä Within Range -visuaalin, jonka olemme asettanut yhtä suureksi kuin yksi. Joten se näyttää vain ne kuukaudet alusta loppuun. Jos esimerkiksi napsautamme helmikuuta, näemme helmikuusta tammikuuhun.

Aikatieto DAX:ssa: Aloitusajan valitseminen dynaamisesti

Viikkovälin laskeminen

Katsotaan, miltä tämä näyttää viikoittain. Visuaalinen alkaa aluksi hyvin ja jatkuu viikosta 1 viikolle 52. Toistaiseksi hyvin.

Aikatieto DAX:ssa: Aloitusajan valitseminen dynaamisesti

Mutta jos napsautamme muita vuosia vuosileikkurissa, voimme nähdä 52. viikon, kun taas joillakin on 53. viikko, mikä aiheuttaa paljon ongelmia. Tästä esimerkistä näet, että ongelma alkaa ilmetä.

Meillä on alkamisjakso vuosi 2020 ja viikko 15 , mutta päättymisjakso on vuosi 2021 ja viikko 13 vuoden 2021 ja viikon 14 sijaan .

Aikatieto DAX:ssa: Aloitusajan valitseminen dynaamisesti

Jos palaamme takaisin viikkoon 1, voimme nähdä, että se alkaa hyvin, mutta päättyy viikolla 52. Jos katsomme viikon 53 laskentaa tästä, niin vuosien 2020 ja 2021 maksimiviikkoluku on 53 viikkoa. Tämä ei toimi viikoittaisella tarkkuudella.

Aikatieto DAX:ssa: Aloitusajan valitseminen dynaamisesti

Katsotaan mitä voimme tehdä saadaksemme tämän toimimaan. Meidän on korjattava DAX-laskenta tässä osassa:

Aikatieto DAX:ssa: Aloitusajan valitseminen dynaamisesti

Tämä johtuu siitä, että joissakin tapauksissa 51 on oikein, kun vuodessa on vain 52 viikkoa, mutta vuonna, jossa on 53 viikkoa, se jättää viimeisen ajanjakson pois. Juuri tämän näimme viikkojen ajan dynaamisessa visuaalisessa kuvassa, jossa laskelma poisti viimeisen ajanjakson vuosina 2020 ja 2021.

Korjataksemme tämän siirrymme Within Range Weekly Wrong -mittaan, joka näyttää itse asiassa yksinkertaisemmalta kuin aikaisempi mitta. Meillä oli aloituspoikkeama ja laskettiin maksimipoikkeama. Sitten poistimme suodattimen päivämäärät ja asetimme suodattimen valitulle viikolle ja valitulle vuodelle olettaen, että tämä johtaisi oikeaan siirtymään.

Aikatieto DAX:ssa: Aloitusajan valitseminen dynaamisesti

Mutta tämä ei toimi, koska sillä ei ole väliä, käytätkö maksimi- vai minimisiirtymää. Teemme vain aggregaattorin ympärille, jotta emme laita paljaata saraketta CALCULATE-lauseeseen.

Mutta jos palaamme tähän ISO-viikkonumeroon , voimme nähdä, että vuosi ja viikko eivät määritä yksiselitteisesti viikoittaista siirtymää tällä ensimmäisellä jaksolla.

Aikatieto DAX:ssa: Aloitusajan valitseminen dynaamisesti

Keksin luodinkestävän tavan tehdä tämä. Voit käyttää MIN-arvoa, mutta on järkevämpää luoda tämä Week1 Offset -mitta. Saadaksemme viikon 1 poikkeaman, käsittelemme viikkoa 2, koska sitä ei koskaan jaeta. Riippumatta siitä, onko vuodessa 52 vai 53 viikkoa, viikko 2 pysyy muuttumattomana.

Aikatieto DAX:ssa: Aloitusajan valitseminen dynaamisesti

Tässä laskelmassa suodatamme alas viikkoon 2 saadaksemme erotuksen. Ja sitten kun saamme viikon 2 poikkeaman, vähennämme siitä yhden. Tämä antaa meille yksiselitteisesti viikon 1 offsetin. Tämä ratkaisee ongelmamme.

Alueen sisällä viikoittainen laskeminen

Ja sitten palaamme takaisin vaihteluvälin viikoittaiseen mittaamme ja kirjoitamme IF-lausekkeen, jossa jos sadonkorjuunumero on viikolle 1, lasketaan viikon yksi poikkeama. Jos se ei ole viikko 1, laskemme vain aloitusviikkosiirtymän, kuten teimme edellisessä kuukausilaskennassa.

Aikatieto DAX:ssa: Aloitusajan valitseminen dynaamisesti

Ja sitten loppuviikon poikkeama on alkavan viikon siirtymä + viikon maksiminumero, joka voi olla joko 52 tai 53. Sitten vähennämme vain 1, jotta aloitussiirtymää ei lasketa kahdesti.

Aikatieto DAX:ssa: Aloitusajan valitseminen dynaamisesti

Voimme tehdä saman konstruktion, jota käytimme kuukausivälille suodattaaksemme viikkoja, jolloin kaikki, mikä on alun ja lopun poikkeaman välissä, saa 1:n ja kaikki, mikä ei saa 0:ta.

Sitten aiomme sijoittaa Within Range Weekly -mitan suodatinruutuun. Kaikki tarkistetaan ja näyttää täsmälleen oikealta.

Aikatieto DAX:ssa: Aloitusajan valitseminen dynaamisesti

Voimme napsauttaa toistoakselia ja suorittaa viikon tarkkuuden. Voimme nähdä, että se toimii oikein, kuten se toimi kuukauden kontekstissa.

Johtopäätös

Tämä on melko syvä sukellus aikatietoon DAX:ssa, jossa keskustelimme siitä, kuinka voimme ratkaista joitain viikkonumeroihin liittyviä ongelmia. Toivon, että pidit tästä opetusohjelmasta hyödyllisenä ja tarjosi sinulle työkalupakkiisi lisätyökaluja, kun olet tekemisissä ongelmallisen viikon tilanteen kanssa.

Jos pidit tämän opetusohjelman sisällöstä, älä unohda tilata LuckyTemplates-TV-kanava. Meillä on jatkuvasti valtava määrä sisältöä minulta ja useilta sisällöntuottajilta, jotka kaikki ovat omistautuneet parantamaan tapaa, jolla käytät LuckyTemplatesia ja Power Platformia.


Scatter Plot In R Script: Kuinka luoda ja tuoda

Scatter Plot In R Script: Kuinka luoda ja tuoda

Tässä opetusohjelmassa opit luomaan R-sirontakaavion visualisoinnin LuckyTemplatesissa käyttämällä R Script -visuaalia.

Nosta ulkoiset työkalut -valikkoasi LuckyTemplatesissa

Nosta ulkoiset työkalut -valikkoasi LuckyTemplatesissa

Tunne LuckyTemplatesin parhaat ulkoiset työkalut ja opi asentamaan ne LuckyTemplates-työpöydällesi. Nämä antavat raporteillesi enemmän ominaisuuksia.

Luo nopea mittaus LuckyTemplatesissa Quick Measures Pron avulla

Luo nopea mittaus LuckyTemplatesissa Quick Measures Pron avulla

Tässä blogissa opimme ja harjoittelemme Quick Measures Prota, joka on välttämätön ulkoinen työkalu LuckyTemplatesin pikamittausten tekemiseen.

Näytä viimeinen päivityspäivämäärä/aika LuckyTemplates-raporteissasi

Näytä viimeinen päivityspäivämäärä/aika LuckyTemplates-raporteissasi

Opi keksimään tarkka viimeinen päivityspäivä LuckyTemplates-raportille. Sinun tarvitsee vain käyttää M-koodia ja edistynyttä editoria.

Tilikauden dynaaminen suodatus LuckyTemplates-raporteissa

Tilikauden dynaaminen suodatus LuckyTemplates-raporteissa

Tässä opetusohjelmassa kerron, kuinka voit tehokkaasti suodattaa useita tietoja tilikauden aikana LuckyTemplates-raporteissasi.

Power Query M -kielen opetusohjelma ja hallinta

Power Query M -kielen opetusohjelma ja hallinta

Tässä opetusohjelmassa keskustellaan M-kielen onnistuneesta käyttöönotosta ja yleisten virheiden ratkaisemisesta Power Query Editorissa.

Pandas Drop Index -sarake: selitetty esimerkein

Pandas Drop Index -sarake: selitetty esimerkein

Pandas Drop Index -sarake: selitetty esimerkein

7 tapaa tarkistaa, sisältääkö Python-merkkijono alimerkkijonon

7 tapaa tarkistaa, sisältääkö Python-merkkijono alimerkkijonon

7 tapaa tarkistaa, sisältääkö Python-merkkijono alimerkkijonon

Power Automate Dynaamisen sisällön yleiskatsaus

Power Automate Dynaamisen sisällön yleiskatsaus

Ymmärrä, mitä Power Automate Dynamic Content on ja kuinka sen avulla käyttäjät voivat valita kenttäviittauksia aiemmista vaiheista tai kirjoittaa lausekkeita.

Tiedoston sijainnin muuttaminen LuckyTemplatesin kyselyparametrin avulla

Tiedoston sijainnin muuttaminen LuckyTemplatesin kyselyparametrin avulla

Tässä opetusohjelmassa opit jakamaan tiedoston sellaisen henkilön kanssa, joka ei kuulu yritykseesi, käyttämällä sql-kyselyparametria LuckyTemplatesissa.