Saturday, October 15, 2016

Bewegende Gemiddelde Dax

Rollende 12 maande gemiddeld in DAX Die berekening van die rollende 12-maande-gemiddelde in DAX lyk soos 'n eenvoudige taak nie, maar dit verberg 'n paar kompleksiteit. Hierdie artikel verduidelik hoe om die beste formule vermy algemene slaggate met behulp van tyd intelligensie funksies te skryf. Ons begin met die gewone AdventureWorks data model, met produkte, verkope en Kalender tafel. Die kalender is gemerk as 'n kalender tafel (dit is nodig om te werk met enige tyd intelligensie funksie) en ons het 'n eenvoudige hiërargie jaar-maand-date. Met die opstel van, is dit baie maklik om 'n eerste PivotTable toon verkope met verloop van tyd te skep: Wanneer doen tendens analise, indien verkope is onderhewig aan seisoenaliteit of, meer algemeen, as jy wil die effek van pieke te verwyder en laat val in verkope, 'n algemene tegniek is dat van die berekening van die waarde oor 'n gegewe tydperk, gewoonlik 12 maande, en gemiddeld nie. Die rol gemiddelde oor 12 maande bied 'n gladde aanwyser van die tendens en dit is baie nuttig in kaarte. Gegewe 'n datum, kan ons bereken die 12-maande rollende gemiddelde met hierdie formule, wat nog 'n paar probleme wat ons later sal oplos: Die gedrag van die formule is eenvoudig: dit die waarde van verkope bere na die skep van 'n filter op die kalender wat toon presies een volle jaar data. Die kern van die formule is die DATESBETWEEN, wat 'n inklusiewe stel datums tussen die twee grense terug. Die onderste een is: Lees dit uit die diepste As ons wys data vir 'n maand, sê Julie 2007 neem ons die laaste sigbare datum met behulp LASTDATE, wat die laaste dag terug in Julie 2007. Dan gebruik ons ​​Nextday die 1ste neem Augustus 2007 het ons uiteindelik gebruik SAMEPERIODLASTYEAR om dit terug te skuif een jaar, opbrengs 1 Augustus 2006. die boonste grens is eenvoudig LASTDATE, dws einde van Julie 2007. Indien ons hierdie formule gebruik in 'n PivotTable, die resultaat lyk goed, maar ons het 'n probleem vir die laaste datum: Trouens, soos jy kan sien in die figuur, die waarde is korrek bereken tot 2008 Dan is daar geen waarde in 2009 (wat korrek is, ons hoef nie verkope in 2009), maar daar is 'n verrassende waarde op Desember 2010 waar ons formule toon die groottotaal in plaas van 'n leë waarde, soos ons sou verwag. Trouens, op Desember LASTDATE gee die laaste dag van die jaar en Nextday moet die 1ste keer van Januarie 2011. Maar Nextday is 'n tyd intelligensie funksie en dit sal na verwagting stelle bestaande datums terugkeer. Hierdie feit is nie baie duidelik en dit is 'n paar woorde meer werd. Tyd intelligensie funksies nie wiskunde presteer op datums. As jy wil hê dat die dag ná 'n gegewe datum, kan jy eenvoudig voeg 1 na enige datum kolom, en die resultaat sal die volgende dag wees. In plaas daarvan, tyd intelligensie funksies skuif stelle datum heen en weer oor 'n tydperk. So, Nextday neem sy insette (in ons geval 'n enkel-ry tafel met die 31 Desember 2010) en verskuif dit 'n dag later. Die probleem is dat die resultaat 1 Januarie 2011 moet wees, maar as gevolg van die kalender tafel daardie datum bevat nie, is die resultaat is leeg. So, ons uitdrukking bere Verkope met 'n leë onderste grens, wat die begin van tyd beteken, opbrengs as gevolg van die groottotaal van verkope. Om die formule is dit genoeg om die evaluering einde van die onderste grens verander regstel: Soos jy kan sien, nou Nextday genoem na die verskuiwing van een jaar terug. Op hierdie manier, neem ons 31 Desember 2010 verhuis hy tot 31 Desember 2009 en neem die volgende dag, wat is 1 Januarie 2010: 'n bestaande datum op die kalender tafel. Die gevolg is nou die verwagte een: Op hierdie punt moet ons net dat die getal verdeel deur 12 tot die rollende gemiddelde behaal. Maar, as jy maklik kan dink, kan ons nie altyd deel dit deur 12 Trouens, aan die begin van die tydperk is daar nie 12 maande om te versamel, maar 'n laer getal. Ons moet die aantal maande waarvoor daar verkope te bereken. Dit kan bereik word deur gebruik te maak kruis filter van die kalender tafel met die verkope tafel nadat ons die nuwe 12 maande konteks toegepas. Ons definieer 'n nuwe maatreël wat die aantal bestaande maande bere in die 12 maande tydperk: Jy kan sien in die volgende figuur wat die Months12M maat bere n korrekte waarde: Dit is die moeite werd om daarop te let dat die formule nie werk as jy 'n periode te kies langer as 12 maande, omdat die CalendarMonthName het net 12 waardes. As jy langer nodig, sal jy nodig het om 'n JJJJMM kolom gebruik om in staat wees om meer as 12. Die interessante deel van hierdie formule wat kruis filter gebruik te tel, is die feit dat dit bere die aantal beskikbare maande, selfs wanneer jy filter met behulp van ander eienskappe. As, byvoorbeeld, jy die blou kleur met behulp van 'n Snijder kies, dan verkope begin in Julie 2007 (nie in 2005, soos dit gebeur vir baie ander kleure). Die gebruik van die kruis filter op verkope, die formule korrek bere wat in Julie 2007 is daar 'n enkele maand beskikbaar verkope vir Blue: Op hierdie punt, die rollende gemiddelde is net 'n DIVIDE weg: Wanneer ons dit gebruik in 'n Pivot Table, het ons nog 'n klein probleem: in werklikheid, is die waarde ook bereken vir maande waarvoor daar geen verkope (dit wil sê die toekoms maande): Dit kan opgelos word met behulp van 'n IF-stelling om die formule vertoon waardes voorkom wanneer daar geen verkope. Ek het niks teen INDIEN maar vir die prestasie verslaaf onder julle, dit is altyd die moeite werd om te onthou dat indien 'n prestasie moordenaar kan wees, want dit DAX formule enjin kan dwing om in te skop. In hierdie spesifieke geval, die verskil is onbeduidend, maar , as 'n algemene reël, die beste manier om die waarde te verwyder wanneer daar geen verkope is om te vertrou op suiwer stoor enjin formules soos hierdie een: Vergelyk 'n grafiek met behulp van die Avg12M met 'n ander een wat verkope toon jy kan maklik verstaan ​​hoe die rollende gemiddelde beskryf tendense in 'n veel skoner manier: Aflaai Hou my op die hoogte oor die komende artikels (nuusbrief). Skakel die boks om vrylik te laai die file. DAX sluit 'n paar statistiese samevoeging funksies, soos gemiddelde, variansie en standaardafwyking. Ander tipiese statistiese berekeninge vereis dat jy meer DAX uitdrukkings skryf. Excel, uit hierdie oogpunt, het 'n veel ryker taal. Die statistiek Patrone is 'n versameling van algemene statistiese berekeninge: mediaan, modus, bewegende gemiddelde, persentiel, en kwartiel. Ons wil graag dankie sê Colin Banfield, Gerard Brueckl, en Javier Guilln, wie se blogs geïnspireer sommige van die volgende patrone. Basiese Patroon Voorbeeld Die formules in hierdie patroon is die oplossings vir spesifieke statistiese berekeninge. Gemiddeld Jy kan standaard DAX funksies gebruik om die gemiddelde (rekenkundige gemiddelde) van 'n stel waardes te bereken. GEMIDDELDE. gee die gemiddeld van al die getalle in 'n numeriese kolom. AVERAGEA. gee die gemiddeld van al die nommers in 'n kolom, die hantering van beide teks en nie-numeriese waardes (nie-numeriese en leë teks waardes tel as 0). AVERAGEX. bereken die gemiddelde op 'n uitdrukking geëvalueer oor 'n tafel. Bewegende gemiddelde Die bewegende gemiddelde is 'n berekening om datapunte te analiseer deur die skep van 'n reeks van gemiddeldes van verskillende onderafdelings van die volle datastel. Jy kan baie DAX tegnieke te gebruik om hierdie berekening te implementeer. Die eenvoudigste tegniek gebruik AVERAGEX, iterating 'n tafel van die gewenste korrelig en berekening vir elke iterasie die uitdrukking dat die enkele datapunt om te gebruik in die gemiddelde genereer. Byvoorbeeld, die volgende formule bereken die bewegende gemiddelde van die afgelope 7 dae, in die veronderstelling dat jy 'n tafel Datum in jou data model. Die gebruik van AVERAGEX, jy outomaties die maatstaf te bereken by elke korrelig vlak. By die gebruik van 'n maatstaf wat gebruik kan word saamgevoeg (soos som), en dan die ander approachbased op CALCULATEmay vinniger wees. Jy kan hierdie alternatiewe benadering in die volledige patroon van bewegende gemiddelde vind. Variansie Jy kan standaard DAX funksies gebruik om die variansie van 'n stel waardes te bereken. VAR. S. terug die variansie van waardes in 'n kolom verteenwoordig 'n monster bevolking. VAR. P. terug die variansie van waardes in 'n kolom wat die hele bevolking. VARX. S. terug die variansie van 'n uitdrukking geëvalueer oor 'n tafel wat 'n monster bevolking. VARX. P. terug die variansie van 'n uitdrukking geëvalueer oor 'n tafel wat die hele bevolking. Standaardafwyking Jy kan standaard DAX funksies gebruik om die standaard afwyking van 'n stel waardes te bereken. STDEV. S. gee die standaardafwyking van waardes in 'n kolom verteenwoordig 'n monster bevolking. STDEV. P. gee die standaardafwyking van waardes in 'n kolom wat die hele bevolking. STDEV. S. gee die standaard afwyking van 'n uitdrukking geëvalueer oor 'n tafel wat 'n monster bevolking. STDEV. P. gee die standaard afwyking van 'n uitdrukking geëvalueer oor 'n tafel wat die hele bevolking. Mediaan Die mediaan is die numeriese waarde skei die hoër helfte van 'n bevolking van die onderste helfte. As daar 'n onewe aantal rye, die mediaan is die middelste waarde (sorteer die rye van die laagste waarde van die hoogste waarde). As daar 'n ewe aantal rye, dit is die gemiddeld van die twee middelste waardes. Die formule ignoreer leeg waardes, wat nie beskou as deel van die bevolking. Die resultaat is identies aan die mediaan funksie in Excel. Figuur 1 toon 'n vergelyking tussen die resultate teruggestuur deur Excel en die ooreenstemmende DAX formule vir die mediaan berekening. Figuur 1 Voorbeeld van mediaan berekening in Excel en DAX. Modus Die modus is die waarde wat die meeste voorkom in 'n stel data. Die formule ignoreer leeg waardes, wat nie beskou as deel van die bevolking. Die resultaat is identies aan die modus en MODE. SNGL funksies in Excel, wat net die minimum waarde wanneer daar is verskeie vorme in die stel waardes beskou terugkeer. Die Excel-funksie MODE. MULT sal al die modes terugkeer, maar jy kan dit nie implementeer as 'n maatstaf in DAX. Figuur 2 vergelyk die resultaat teruggekeer deur Excel met die ooreenstemmende DAX formule vir die modus berekening. Figuur 2 Voorbeeld van af berekening in Excel en DAX. Persentiel Die persentiel is die waarde hieronder wat 'n gegewe persentasie van waardes in 'n groep val. Die formule ignoreer leeg waardes, wat nie beskou as deel van die bevolking. Die berekening in DAX vereis 'n paar stappe, in die volledige Patroon artikel, wat wys hoe om dieselfde resultate van die Excel funksies PERCENTILE, PERCENTILE. INC, en PERCENTILE. EXC verkry beskryf. Kwartiel Die kwartiele is drie punte wat 'n stel waardes verdeel in vier gelyke groepe, elke groep wat bestaan ​​uit 'n kwart van die data. Jy kan die kwartiele met behulp van die Percentile patroon bereken, na aanleiding van hierdie ooreenkomste: Eerste kwartiel onderste kwartiel 25 ste persentiel tweede kwartiel mediaan 50 ste persentiel derde kwartiel boonste kwartiel 75 ste persentiel Volledige Patroon n Paar statistiese berekeninge het 'n langer beskrywing van die volledige patroon, omdat jy dalk verskillende implementering het na gelang van data modelle en ander vereistes. Bewegende gemiddelde Gewoonlik jy die bewegende gemiddelde evalueer deur die verwysing na die dag korrelig vlak. Die algemene sjabloon van die volgende formule het hierdie merkers: ltnumberofdaysgt is die aantal dae vir die bewegende gemiddelde. ltdatecolumngt is die datum kolom van die datum tafel as jy een het, of die datum kolom van die tabel met waardes indien daar geen afsonderlike datum tafel. ltmeasuregt is die maatstaf om te bereken as die bewegende gemiddelde. Die eenvoudigste patroon gebruik die AVERAGEX funksie in DAX, wat outomaties oorweeg slegs die dae waarvoor daar nie 'n waarde. As 'n alternatief, kan jy die volgende sjabloon in datamodelle gebruik sonder 'n datum tafel en met 'n mate dat kan saamgevoeg word (soos som) oor die hele tydperk beskou. Die vorige formule van mening 'n dag met geen ooreenstemmende data as 'n maatstaf wat 0 waarde het. Dit kan net gebeur wanneer jy 'n aparte datum tafel, wat dae waarvoor daar geen ooreenstemmende transaksies kan bevat. Jy kan die deler vir die gemiddelde gebruik van slegs die aantal dae op te los waarvoor daar transaksies met behulp van die volgende patroon, waar: ltfacttablegt is die tafel wat verband hou met die datum tafel en met waardes bereken deur die maatstaf. Jy kan gebruik maak van die DATESBETWEEN of DATESINPERIOD funksies in plaas van FILTER, maar dit werk net in 'n gereelde datum tafel, terwyl jy die bogenoemde ook beskryf om nie-gereelde datum tafels en modelle wat nie 'n datum tafel patroon kan toepas. Byvoorbeeld, kyk na die verskillende resultate wat deur die volgende twee mate. In Figuur 3, kan jy sien dat daar geen verkope op 11 September 2005 is egter hierdie datum ingesluit in die tabel Datum dus is daar 7 dae (vanaf September 11-17 September) dat slegs 6 dae met data het. Figuur 3 Voorbeeld van 'n bewegende gemiddelde berekening oorweeg en ignoreer datums met geen verkope. Die maatreël Moving Gemiddelde 7 Dae het 'n laer getal tussen 11 September en 17 September, want dit is van mening 11 September as 'n dag saam met 0 verkope. As jy wil dae ignoreer sonder verkope, gebruik dan die maatstaf Moving Gemiddelde 7 dae Geen Zero. Dit kan die regte benadering wees wanneer jy 'n volledige datum tafel, maar jy wil dae met geen transaksies ignoreer. Die gebruik van die bewegende gemiddelde 7 Dae formule, die resultaat is korrek, want AVERAGEX mening outomaties enigste nie-leeg waardes. Hou in gedagte dat jy die prestasie van 'n bewegende gemiddelde kan verbeter deur volgehoue ​​waarde in 'n berekende kolom van 'n tafel met die gewenste korrelig, soos datum, of 'n datum en produk. Maar die dinamiese berekening benadering met 'n mate bied die vermoë om 'n parameter gebruik vir die aantal dae van die bewegende gemiddelde (bv vervang ltnumberofdaysgt met 'n mate die implementering van die Parameters Table patroon). Mediaan Die mediaan ooreenstem met die 50 ste persentiel, wat jy kan bereken met behulp van die Percentile patroon. Maar die Mediaan patroon kan jy optimaliseer en vereenvoudig die mediaan berekening met behulp van 'n enkele maatstaf, in plaas van die verskeie maatreëls wat deur die Percentile patroon. Jy kan hierdie benadering gebruik wanneer jy die mediaan te bereken vir waardes in ltvaluecolumngt, soos hieronder getoon: Om prestasie te verbeter, wil jy dalk die waarde van 'n maatstaf volhard in 'n berekende kolom, as jy wil hê dat die mediaan vir die resultate van verkry 'n maatstaf in die data model. Maar, voordat dit te doen optimalisering, jy moet die MedianX berekening gebaseer op die volgende sjabloon te implementeer, met behulp van hierdie merkers: ltgranularitytablegt is die tafel wat die korrelig van die berekening definieer. Byvoorbeeld, kan dit die tafel Datum wees as jy wil hê dat die mediaan van 'n mate bereken teen die dag te bereken, of dit kan waardes (8216DateYearMonth) as jy wil hê dat die mediaan van 'n mate bereken teen die maand vlak te bereken. ltmeasuregt is die maatstaf om te bereken vir elke ry van ltgranularitytablegt vir die mediaan berekening. ltmeasuretablegt is die tafel wat data gebruik word deur ltmeasuregt. Byvoorbeeld, as die ltgranularitytablegt is 'n dimensie soos 8216Date8217, dan is die ltmeasuretablegt sal wees 8216Internet Sales8217 met die Internet verkope Bedrag kolom opgesom deur die Internet Totaal Verkope meet. Byvoorbeeld, kan jy die mediaan van Internet Totaal Verkope skryf vir al die kliënte in Avontuur Werke soos volg: Wenk Die volgende patroon: word gebruik om rye van ltgranularitytablegt dat geen ooreenstemmende data in die huidige seleksie het verwyder. Dit is 'n vinniger manier as die gebruik van die volgende uitdrukking: Maar kan jy die hele CALCULATETABLE uitdrukking te vervang met net ltgranularitytablegt as jy wil leeg waardes van die ltmeasuregt beskou as 0. Die prestasie van die MedianX formule hang af van die aantal rye in die tafel herhaal en op die kompleksiteit van die maatstaf. As prestasie is sleg, kan jy die ltmeasuregt gevolg volhard in 'n berekende kolom van die lttablegt, maar dit sal die vermoë van die toepassing van filters om die mediaan berekening by navraag tyd verwyder. Persentiel Excel het twee verskillende implementering van persentiel berekening met drie funksies: PERCENTILE, PERCENTILE. INC, en PERCENTILE. EXC. Hulle het almal die standaard van die K-ste persentiel van waardes, waar K is in die reeks 0 tot 1. Die verskil is dat PERCENTILE en PERCENTILE. INC oorweeg K as 'n inklusiewe reeks, terwyl PERCENTILE. EXC van mening dat die K-reeks 0-1 as eksklusiewe . Al hierdie funksies en hul DAX implementering ontvang 'n persentiel waarde as parameter, wat ons noem K. ltKgt persentiel waarde is in die reeks 0 tot 1. Die twee DAX implementering van persentiel vereis dat 'n paar maatreëls wat soortgelyk is, maar verskillende genoeg om te vereis twee ander stel formules. Die gedefinieer in elke patroon maatreëls is: KPerc. Die persentiel waarde dit ooreenstem met ltKgt. PercPos. Die posisie van die persentiel in die gesorteerde stel waardes. ValueLow. Die waarde onder die persentiel posisie. ValueHigh. Die waarde bo die persentiel posisie. Persentiel. Die finale berekening van die persentiel. Jy moet die ValueLow en ValueHigh maatreëls in geval die PercPos bevat 'n desimale deel, want dan moet jy interpoleer tussen ValueLow en ValueHigh ten einde die korrekte persentiel waarde terugkeer. Figuur 4 toon 'n voorbeeld van die berekeninge gemaak met Excel en DAX formules, met behulp van beide algoritmes van persentiel (inklusiewe en eksklusiewe). Figuur 4 Percentile berekeninge met behulp van Excel formules en die ekwivalent DAX berekening. In die volgende afdelings, die Percentile formules uit te voer die berekening van waardes gestoor word in 'n tabel kolom, DataValue, terwyl die PercentileX formules uit te voer die berekening van waardes teruggekeer met 'n mate bereken op 'n gegewe korrelig. Persentiel Inklusiewe Die persentiel Inklusiewe implementering is die volgende. Persentiel Exclusive Die persentiel Exclusive implementering is die volgende. PercentileX Inklusiewe Die PercentileX Inklusiewe implementering is gebaseer op die volgende sjabloon, met behulp van hierdie merkers: ltgranularitytablegt is die tafel wat die korrelig van die berekening definieer. Byvoorbeeld, kan dit die tafel Datum wees as jy wil hê dat die persentiel van 'n maatstaf te bereken op die dag vlak, of dit kan waardes (8216DateYearMonth) as jy wil hê dat die persentiel van 'n maatstaf te bereken op die maand vlak. ltmeasuregt is die maatstaf om te bereken vir elke ry van ltgranularitytablegt vir persentiel berekening. ltmeasuretablegt is die tafel wat data gebruik word deur ltmeasuregt. Byvoorbeeld, as die ltgranularitytablegt is 'n dimensie soos 8216Date, 8217 dan die ltmeasuretablegt sal wees 8216Sales8217 met die bedrag kolom opgesom deur die totale bedrag meet. Byvoorbeeld, kan jy die PercentileXInc van totale bedrag van verkope te skryf vir al die datums in die tabel Datum soos volg: PercentileX Exclusive Die PercentileX Exclusive implementering is gebaseer op die volgende sjabloon, met behulp van dieselfde merkers gebruik word in PercentileX Inklusiewe: Byvoorbeeld, jy kan die PercentileXExc van totale bedrag van verkope te skryf vir al die datums in die tabel Datum soos volg: Populariteit Hou my op die hoogte oor die komende patrone (nuusbrief). Ontmerk om die lêer vrylik te laai. Gepubliseer op 17 Maart 2014 deur Ander patrone wat jy kan hou Tyd Patrone Die DAX tyd patrone word gebruik om tydgebonde berekeninge te implementeer sonder om op DAX tyd intelligensie funksies. Dit is nuttig wanneer jy 'n persoonlike agenda, soos 'n ISO 8601 week kalender, of wanneer jy 'n Ontleding Services hellip ouer-kind Hierarchies DAX nie direk ondersteun ouer-kind hiërargieë. Om 'n soekbare hiërargie in die data model te verkry, moet jy 'n ouer-kind hiërargie natuurlik maak. DAX bied spesifieke funksies aan 'n ouer-kind hiërargie behulp bereken kolomme natuurlik maak. Die volledige patroon sluit ook hellip Dax Patrone is vervaardig deur SQLBI. Kopiereg kopie Loader. Alle regte voorbehou. Microsoft Excel Reg en alle ander handelsmerke en kopieregte is die eiendom van hulle onderskeie owners. SQL Server Denali PowerPivot Alberto Ferrari reeds geskryf oor die berekening van bewegende gemiddeldes in DAX deur die gebruik van 'n berekende kolom. ID graag 'n ander benadering hier aan te bied deur gebruik te maak van 'n berekende mate. Vir die bewegende gemiddelde Im berekening van 'n daaglikse bewegende gemiddelde (oor die afgelope 30 dae) hier. Vir my voorbeeld, Im met behulp van die PowerPivot werkboek wat afgelaai kan word as deel van die SSAS Tabulêre Model Projekte van die Denali CTP 3 monsters. In hierdie post, Im die ontwikkeling van die formule stap vir stap. Maar as jy in 'n haas, jy kan direk wil om te spring na die finale uitslae hieronder. Met kalenderjaar 2003 op die filter, datum kolomme en verkope bedrag (uit tabel Internet verkope) in die besonderhede, die steekproefdata lyk soos volg: In elke rye konteks, die uitdrukking 8218DateDate gee die huidige konteks, dit wil sê die datum vir hierdie ry . Maar uit 'n berekende mate kan ons nie na hierdie uitdrukking (want daar is geen huidige ry vir die tafel Datum), in plaas daarvan het ons 'n uitdrukking soos LastDate (8218DateDate) gebruik. So, ten einde die afgelope dertig dae kan ons hierdie uitdrukking gebruik Ons kan nou 'n opsomming van ons internet verkope vir elk van dié dae met behulp van die som funksie te kry: 'n opsomming (160 DatesInPeriod (8218DateDate, LastDate (8218DateDate), - 30, DAG) 160 8217DateDate 160. quotSalesAmountSumquot 160. Som (8218Internet SalesSales Bedrag)) En ten slotte, is die gebruik van die DAX funksie AverageX om die gemiddelde van die 30 waardes te bereken: verkope Bedrag (30D avg): AverageX (160 Som (160160160 DatesInPeriod (8218DateDate, LastDate (8218DateDate), - 30, DAG) 160160160, 8217DateDate 160160160. quotSalesAmountSumquot 160160160. Som (8218Internet SalesSales Bedrag) 160) 160 SalesAmountSum) dit is die berekening dat ons met behulp van ons Internet Sales tafel soos in die kiekie hieronder: wanneer jy hierdie berekening van die spilpunt tafel van bo, die resultaat lyk soos volg: as ons kyk na die resultaat blyk dit dat ons hoef nie enige data voor 1 Januarie, 2003: die eerste waarde vir die bewegende gemiddelde is identies aan die dag waarde ( daar is geen rye voor daardie datum). Die tweede waarde vir die bewegende gemiddelde is eintlik die gemiddelde van die eerste twee dae en so aan. Dit is nie heeltemal korrek, maar Im om terug na die probleem in 'n tweede. Die kiekie toon die berekening vir die bewegende gemiddeld van 31 Januarie as die gemiddelde van die daaglikse waardes van 2 Januarie tot 31. Ons bereken mate ook werk goed wanneer filters word toegepas. In die volgende kiekie gebruik ek twee produk kategorieë vir die datareeks: Hoe werk ons ​​bereken maat werk op hoër samevoeging vlakke Ten einde vas te stel, Im met behulp van die kalender hiërargie op die rye (in plaas van die datum). Vir eenvoud verwyder ek die semester en kwartaal vlakke met behulp van blink pivottabel opsies (Wys / verberg velde opsie). Soos jy kan sien, die berekening werk nog in orde. Hier is die maandelikse totaal is die bewegende gemiddelde vir die laaste dag van die betrokke maand. Jy kan dit duidelik sien vir Januarie (waarde van 14,215.01 verskyn ook in die kiekie hierbo as die waarde vir 31 Januarie). As dit was die besigheid vereiste (wat redelik vir 'n daaglikse gemiddelde klink), dan is die samevoeging werk goed op 'n maandelikse vlak (anders sal ons moet verfyn ons berekening en dit sal 'n onderwerp van am komende post wees). Maar hoewel die samevoeging sinvol op 'n maandelikse vlak, as ons hierdie oog op die dag vlak uit te brei sal jy sien dat ons bereken mate bloot die verkope bedrag vir daardie dag, nie die gemiddeld van die afgelope 30 dae nie terug: Hoe kan dit wees. Die probleem ontstaan ​​by die konteks waarin ons bereken ons som, soos uitgelig in die volgende kode: Verkope Bedrag (30D avg): AverageX (160 Som (160160160 datesinperiod (8218DateDate, LastDate (8218DateDate), - 30, DAG) 160160160, 8217DateDate 160160160. quotSalesAmountSumquot 160160160. Som (8218Internet SalesSales Bedrag) 160) 160 SalesAmountSum) Aangesien ons hierdie uitdrukking oor die gegewe datums tydperk, die enigste konteks wat hier oorskryf evalueer, is 8218DateDate. In ons hiërargie was die gebruik van verskillende eienskappe van ons dimensie (kalenderjaar Maand en dag van die maand). Aangesien hierdie konteks is steeds teenwoordig, is die berekening ook gefiltreer deur daardie eienskappe. En dit verklaar waarom ons die huidige dae konteks is nog steeds teenwoordig vir elke lyn. Om dinge duidelik, so lank as wat ons hierdie uitdrukking buite 'n datum te evalueer kry, alles in orde is as die volgende DAX navraag toon wanneer dit uitgevoer word deur Bestuur Studio op die Internet verkope perspektief van ons model (met behulp van die tabel databasis met dieselfde data ): evalueer (160160160 Som (160160160160160160160 datesinperiod (8218DateDate, datum (2003,1,1), - 5, dAG) 160160160160160160160, 8217DateDate 160160160160160160160. quotSalesAmountSumquot 160160160160160160160. Som (8218Internet SalesSales Bedrag) 160160160)) Hier, ek verminder die tydperk tot 5 dae en ook 'n vasgestelde datum as LastDate () sou lei tot die laaste dag van my datum dimensie tafel waarvoor geen data teenwoordig is in die voorbeeld van die data is. Hier is die resultaat van die navraag: Maar nadat die opstel van 'n filter tot 2003, geen data rye buite 2003 sal ingesluit word in die som. Dit verklaar die opmerking hierbo: Dit het gelyk asof ons net data vanaf 1 Januarie 2003 En nou, ons weet hoekom: Die jaar 2003 was op die filter (soos jy kan sien in die heel eerste kiekie van hierdie post) en daarom was dit teenwoordig by die berekening van die bedrag. Nou, al wat ons hoef te doen is om ontslae te raak van daardie bykomende filters omdat reeds ons resultate te filter deur Datum. Die maklikste manier om dit te doen, is om die Bereken funksie gebruik en nie () aansoek te doen om al die eienskappe waarvoor ons wil hê dat die filter verwyder. Soos ons het 'n paar van daardie kenmerke (jaar, maand, dag, Weekdag,) en ons wil die filter van almal, maar die datum kenmerk verwyder, die kortpad funksie ALLEXCEPT is hier baie handig. As jy nog nie 'n MDX agtergrond sal jy wonder hoekom ons nie kry 'n soortgelyke probleem by die gebruik van SSAS in OLAP modus (BISM Multidimensionele). Die rede hiervoor is dat ons OLAP databasis het skryf verhoudings, so na die opstel van die datum (sleutel) kenmerk, is die ander eienskappe outomaties te verander en ons hoef nie te sorg oor hierdie (sien my post hier). Maar in die tabel model hoef ons het kenmerk verhoudings (selfs nie 'n ware sleutel kenmerk) en daarom het ons nodig het om ongewenste filters uit te skakel uit ons berekeninge. So hier is ons met die verkope Bedrag (30D avg): AverageX (160 Som (160160160 datesinperiod (8218DateDate, LastDate (8218DateDate), - 30, DAG) 160160160, 8217DateDate 160160160. quotSalesAmountSumquot 160160160. bereken (Som (8218Internet SalesSales Bedrag), ALLEXCEPT (8218Date8216,8217DateDate)) 160), SalesAmountSum) En dit is ons finale spil tafel in Excel: Om die bewegende gemiddelde illustreer, hier is dieselfde uittreksel van data in 'n tabel oog (Excel): Hoewel ons data gefilter op 2003 die bewegende gemiddelde vir die eerste 29 dae van 2003 neem korrek die ooreenstemmende dae van 2002 in ag neem. Jy sal die waardes vir 30 Januarie en 31 erken van ons eerste benadering as dié van die eerste dae waarvoor ons eerste berekening het 'n voldoende bedrag van data (volle 30 dae) was. Das knnte Sie auch interessieren: Moving gemiddeldes, somme, ens Blue Line glad Out Random Skommelinge, vertel 'n Minder Oor-Reaktiewe Trend ek besef het onlangs dat hierdie onderwerp nog nooit voorheen bedek, in sy mees eenvoudige vorm, op hierdie werf Eintlik dit was die onderwerp van 'n gas post deur die gesiene Dawid Churchward. en ook deur die ewe-aangeskrewe Kasper de Jonge. maar nie een van dié poste voordeel getrek het uit die v2 funksies tot ons beskikking vandag). Om te illustreer wat ons kan doen met state-of-the-art Power Pivot formules, kan begin met hierdie eenvoudige model: En 'n eenvoudige spilpunt: Dit Eenhede Hierdie artikel word aangebied maatstaf is die kronkelende rooi lyn in die grafiek aan die bokant van die pos, en sy formule is baie eenvoudig: Eenhede verkoop som (SalesQtySold) En ons soek 'n weergawe eenhede verkoop wat glad oor 'n tydperk van 3 maande. Moving Sum Kom ons begin met 'n formule wat 'n som van die mees onlangse 3 maande (insluitend die huidige een): 3 Maand beweeg Sum Eenhede verkoopsyfers bereken (Eenhede Hierdie artikel word aangebied, DATESINPERIOD (CalendarDate, LASTDATE (CalendarDate), - 3, maand)) en kyk wat wat lyk soos: Moving 3-maand bedrag Besin die huidige maand en die vorige twee maande bewegende gemiddelde Eerste poging OK, maar dat die getal is groter as 'n enkele maand en nie die geval ooreenstem met die skaal van ons werklike besigheid, sodat ons wouldnt wil karteer dat ons wil hê dat die gemiddelde weergawe van daardie. Dit is 'n 3-maande bewegende som, so om die gemiddelde te kry, ons kon net verdeel 3: 3 Maand Gem Verdeel 3 3 Maand Moving Sum Eenhede verkoop / 3 wat lyk soos: 3 Maand Moving Gem Via Deel deur 3 het 'n Nadeel Diegene eerste twee maande, sedert hulle die eerste twee maande in ons kalender, is 'n opsomming van minder as 3 maande ter waarde van verkope, maar nog steeds deel deur 3. dit dryf onregverdig af hul gemiddelde. Moving gemiddelde gekorrigeerde Ons kan rekening vir hierdie deur die verandering van ons deler 'n soortgelyke logika te gebruik om die teller: 3 Maand beweeg Gem Reggemaak 3 Maand beweeg Sum Eenhede verkoop / bereken (DISTINCTCOUNT (CalendarYear maand), DATESINPERIOD (CalendarDate, LASTDATE (CalendarDate), -3, maand)) In Engels: neem die 3 maand som mate ons reeds het en deel dit deur die aantal afsonderlike (unieke) maande ons het meer as dieselfde tydperk 3 maande. Dit Calc is Meer Fair vir die maande wat aan die begin Variasies Daar is 'n aantal variasies op hierdie benadering daaglikse / weeklikse / kwartaallikse weergawes, regstelling vir agenda's wat langer as die omvang van die datums waar jy verkope, pas aan persoonlike agenda via die grootste Formule in die wêreld. ens, maar ek sal wag en sien wat mense vra oor in die kommentaar voor te grawe in enige van daardie. Een van die stigterslede ingenieurs agter Power Pivot tydens sy 14-jaar loopbaan by Microsoft, en skepper van die wêreld se eerste wolk Power Pivot diens, Rob is een van die voorste owerhede op self-service sake-intelligensie en die volgende generasie sigblad tegnologie. Hierdie plasing 27 kommentaar is dit ingewikkeld om 8220X Maande beheer moving8221 van Excel Het jy 'n sel in Excel waar ons kan sit 3, 6, 12 of selfs 1. Dit werk But8230..I is besig met dae 8211 spesifiek, ek moet kry 'n rollende 28 dae gemiddeld van een van my maatreëls. Dit werk goed as ek die resultaat met my datum kenmerk besigtig. Maar my Kalender dimensie het ook 'n strategies, nie-deurlopende kenmerk genaamd DateMonth (wat lyk soos 1-Jan, 2-Jan ens) Ek het gehoop dit sou laat my dan na my jaar kenmerk neem en te vergelyk die 28 Dag Gemiddeld vir die 1 Januarie oor verskeie jare. So kan jy 'n lyn grafiek het waar die as is 1-Jan tot 31-Desember (met geen verwysing na die jaar) en die kategorie reeks is deur die jaar, so 'n lyn vir elke jaar. Hoop iemand kan help om die laaste vergelyking met dien verstande 8211 Moving gemiddelde gekorrigeerde 8211 lewer 'n deler met 'n waarde van 12 (dws dit is afhanklik van wanneer my Calendaryear maande begin. So 'n korrekte 12 maande bewegende gemiddelde het, my data en kalender moet begin op dieselfde tyd). Enige voorstelle Ek het gedink dit uit: Wat ek gedoen het was begin tel my maande vanaf die eerste dag van my verkope (dit wil sê 40.663 is die laaste dag voor ek wou begin tel die maande waar my verkope was). Hoop dit kan iemand soek hierdie blog post William help, is jy 'n lewe redder. Ek het probeer om uit te vind hoekom my deler gehou 3 vir die oudste maand van data wat ek besig was met. Ek waardeer jou voorbeeld en verduideliking wat presies toegepas op my situasie. John Pullin sê: Ek het 'n beter oplossing vir die finale kommentaar hier 8211 een wat die aantal maande bereken om deur te verdeel, of jou data en kalender begin nie op dieselfde tyd. Dit was die oorspronklike calc: 3 Maand Moving Gem Reggemaak 3 Maand Moving Sum Eenhede verkoop / bereken (DISTINCTCOUNT (CalendarYear maand), DATESINPERIOD (CalendarDate, LASTDATE (CalendarDate), - 3, maand)) en sy binne die deler dat die wysig is nodig 8211 om korrek te werk waar om te verdeel deur 2 en dan 1 (vir die eerste 3 maande in jou data). Die onderstaande werke 'n verrassing: 3 Maand bewegende gemiddelde 8211 Working 3 Maand Moving Sum / bereken (BEREKEN (COUNTROWS (waardes (DimDateCalendarMonth)), FactSales), DATESINPERIOD (DimDateDatekey, LASTDATE (DimDateDatekey), - 3, maand)) Waar FactSales is jou feit tafel obvs. hoop dit help iemand anders uit 8211 as dit gery my gekke Vikas Gautam sê: Ek het 'n vraag. Wat gebeur as ons die gemiddelde van die vorige 30 Trading dae of werksdae nodig. Natuurlik sou ons 'n kolom Datum verteenwoordig handel days. and ooreenstemmende verkope bedrag het. 1 Maand gemiddelde met jou formule won8217t dieselfde ding wees. Soos Presiese 30 days8217s gemiddelde hier nodig. Kan jy raai 'n formule. Die moeilikste ding is die berekening is gebaseer op die finansiële datum anders as die kalender datum, soos byna al die bestaande tyd intelligente datum funksies kan nie gebruik word nie. 'N Monster berekening formule gebaseer op die finansiële datum het ek 'n baie van die inligting oor die berekeninge gebaseer op die kliënt dateer uit die skakel hierbo 8220Greatest Formule in die world8221. It8217s baie helpful8230 .. Dit is 'n groot plaas deur almal. Ek wil weet wat as die verkope in een van die afgelope drie maande is nul of geen verkope glad nie, dan hoe sal die formules voorgestel werk. Ek wil om uit te vind die aantal maande van die huidige maand tot die laaste drie maande met verkope. Sê ek Mei 2014 die laaste drie maande sal insluitend Mei 2014 Maart 2014, April 2014 en Mei 2014. Maar April 2014 nie verkope nie. So moet dit som van Maart en Mei 2014 verkope gedeel deur 2 wees en nie 3. Aanvaar ons het verkope vir Junie 2014 en Julie 2014. Vir Junie 2014 die gemiddelde laaste 3 maande moet wees (My 2014 Junie 2014) / 2. Vir Julie 2014 die gemiddelde laaste 3 maande moet wees (Mei 2014 Junie 2014 Julie 2014) / 3. Enige hulp om dit te bereik sal waardeer word. Haai daar, briljante oplossing. Maar nou I8217m op soek na dieselfde Daarbenewens as CheenuSing genoem. Sommige reeks in my data don8217t het verkope in die laaste tydperk, maar ander doen. CheenuSing, het jy gevind dat die oplossing vir die I8217d baie dankbaar wees, dankie. Im nuwe met al DAX funksies en baie sukkel met my bewegende gemiddelde berekening. Ek hoef net die bewegende gemiddelde van 3 maande terug wat nie die huidige maand. Ek het probeer om met behulp van 8220IF8221 maar nooit uitgewerk. Kan iemand my help met itTrended Bewegende Gemiddeldes Ive altyd 'n ferm oortuigings is dat bewegende gemiddeldes waarskynlik 'n beter insig in tendense gee binne 'n besigheid as 'n eenvoudige tendens lyn verbonde aan 'n stel waardes soos maandelikse verkope (hoewel ek is geneig om hierdie te hersien twee waardes bymekaar). Die rede hiervoor is dat 'n tendens wat deur een of twee waardes wat nie verteenwoordigend van die onderliggende besigheid kan wees kan skeef soos spykers wat verband hou met seisoenaliteit of 'n spesifieke gebeurtenis. Wanneer BillD 'n navraag in verband met hierdie konsep in sy kommentaar op Wins amp Verlies uitgelig (Deel 2) Vergelyk en ontleed. Ek het gedink dit sou 'n goeie idee om ons PampL dataset buig tot 'n bewegende gemiddelde vermoë te verskaf. In hierdie post, sal ek verduidelik wat bewegende gemiddeldes is bedoel om te lewer en te verduidelik hoe om dit te bereken met behulp van die verkope elemente van die voorbeeld data wat in die Wins amp Verlies reeks van poste. Ek sal dan voeg die buigsaamheid vir gebruikers om die tyd dat die bewegende gemiddelde berekening in ag moet neem, die aantal tendens periodes vertoon moet word en die einddatum van die verslag te kies. Wat is 'n bewegende gemiddelde Die mees algemene bewegende gemiddelde maatstaf is oor die algemeen as 'n 12 maande bewegende gemiddelde verwys. In die geval van ons verkope data, vir enige gegewe tydperk, sal hierdie maatreël som die laaste 12 maande van verkope voorafgaande en met die maand ontleed en dan verdeel met 12 tot 'n gemiddelde verkope waarde vir daardie tydperk toon. In finansiële terme, die vergelyking is dus eenvoudig: 12 Maand bewegende gemiddelde bedrag van verkope vir afgelope 12 maande / 12 Dit alles lyk baie reguit vorentoe maar Theres baie van kompleksiteit wat betrokke is as ons wil hê dat die bewegende gemiddelde tydperk sit (verteenwoordig as 12 in die voorbeeld hierbo) in die hande van die gebruiker, gee hulle die krag om die aantal tendens periodes vertoon moet word en die maand wat die verslag moet vertoon te kies. Die Dataset die dataset wat met behulp van lyk iets soos hieronder. Let Im met behulp van PowerPivot V1. Ontwerp kyker is beskikbaar in V2 maar Ive hashed dit saam niks slim Youll kennisgewing wat FACTTran (ons dataset te ontleed) is gekoppel aan DIMHeading1, DIMHeading2 en DIMDataType sommige kategorisering ons dataset voorsien. Ive ook gekoppel aan datums is 'n opeenvolgende reeks van datums wat meer as dek die panne van ons datastel. Hierdie tabel dra 'n paar statiese bykomende inligting wat gebaseer is op die datum: Weereens, is nie heeltemal registreer op Robs pittige skaal Wees verseker dat jy sal kry 'n meer intense DAX oefensessie soos ons aangaan. Aangesien hierdie datum maatreëls Arent verwag dinamiese te wees, Ive gekodeerde hulle in die PowerPivot venster. Dit laat hulle bereken word op lêer verfris maar hulle sal nie nodig het om te herbereken vir elke Snijder operasie wat prestasie oorhoofse verwyder uit ons uiteindelike dinamiese maatstaf. Vir redes wat ek sal kom op om later, ek moet ook die maand einddatum op my feit tafel as ek nie gebruik maak van die Maand Einde datum op my Datums tafel in my maatreëls. Ek kan egter trek dieselfde waarde in my FACTTran tafel met behulp van die volgende mate: So wat is hierdie ontkoppel MA Tafels Die rede vir hierdie tabelle moet duidelik geword soos ons aangaan. In kort, hulle is van plan om gebruik te word as parameters of opskrifte op ons verslag. Die rede is dat hulle bestaan ​​en dat hulle is nie gekoppel aan die res van ons data is bloot omdat ek nie wil hê hulle moet gefiltreer word deur ons maatreëls. In plaas daarvan, Ek wil hê hulle moet die filter ry. Aanvanklike PivotTable Setup Im gaan word vertoon 'n reeks van data georganiseer in maandelikse kolomme. Die gebruiker sal gegee sny om Maand Einde datum (die laaste tydperk te vertoon op die verslag), aantal periodes vir bewegende gemiddelde (dit sal uiteindelik deel van ons deler berekening) en aantal periodes vir Trend (dit sal wees stel die aantal maandelikse kolomme wat ons sal wys op ons tendens). Ons kan hierdie sny dadelik vas te stel en dit te koppel aan die spilpunt. Ek het natuurlik moet 'n maand einddatum as kolomopskrif maar watter een om 'n mate Ive op gegewe hierdie weg vroeër. In kort, ek moet my MADatesMonthEndDate veld gebruik. Die rede hiervoor is dat hierdie gebied isnt gekoppel aan ons dataset en dus gewoond geraak word deur enige ander filters. As ek 'n datum in die veld wat deel is van my dataset of 'n gedeelte van 'n gekoppelde tabel te gebruik, die beskikbare waardes kan deur die gebruikers keuse gefiltreer. Ek kan kry om dit met behulp van 'n ALL () uitdrukking vir my die korrekte waardes te gee, maar die probleem is dat die kolom is steeds gefiltreer en my resultate sal al vertoon in 'n kolom. Die moeilik om te verduidelik totdat jy sien dit so moet asseblief gaan voort en probeer sy waarde slaan die baksteenmuur om regtig te verstaan ​​dit Berekening Som van verkope vir verlede X maande het die eerste deel van ons vergelyking is om die totale waarde bereken vir verkope oor alle tydperke binne 'n dinamiese tydperk gekies word deur die gebruiker. Hiervoor gebruik ek 'n Bereken funksie wat soos volg lyk: Im met behulp van 'n basis maatstaf genoem CascadeValueAll wat geskep is in Wins amp Verlies Die kuns van die Cascading Subtotaal. Im dan filter wat maatreël om my dataset beperk tot rekords wat verband hou met verkope en 'n data tipe Werklike (dws die uitskakeling van Begroting). Dit is eenvoudig filter van 'n BEREKEN funksie. Maar dit raak 'n bietjie meer lekker met die derde filter wat die datastel beperk tot 'n reeks van datums wat afhanklik is van die gebruikers keuse in sny en ons opskrif datum kolom is. Die DATESBETWEEN funksie het die sintaksis DATESBETWEEN (datums, Begindatum, Einddatum) en werk soos volg: Ek, die stuk grond wat filter vereis (DatesData) stel. Ive het bevind dat hierdie werk die beste as dit 'n gekoppelde tabel van opeenvolgende datums sonder enige onderbrekings. Indien u enige onderbrekings het, Theres 'n kans dat jy dalk nie 'n antwoord as die antwoord wat jy evalueer om moet beskikbaar in die tabel wees nie. My begin datum is 'n DATEADD funksie wat bereken dat die kolomopskrif datum minus die aantal maande wat die gebruiker gekies op die bewegende gemiddelde Aantal periodes Snijder. Ek gebruik die funksie LASTDATE (waardes (MADatesNextMonthStartDate)) om die NextMonthStartDate waarde van die MADates tafel wat betrekking het op die datum verteenwoordig op die kolomopskrif te haal. dan het ek rewind deur die aantal maande gekeur op Snijder met behulp van MAX (MAFunctionPeriodsMovingAverageNoPeriods) -1. Die -1 gebruik word om terug in die tyd gaan. Die rede waarom ek gebruik NextMonthStartDate en 'n veelvoud van 1 is meer duidelik in mengers vir die kies van Laaste X Periodes. My einddatum is eenvoudig die MonthEndDate soos aangedui op die kolomopskrif van die verslag. Dit word bereken deur gebruik te maak LASTDATE (waardes (MADatesMonthEndDate). Dis 'n groot, maar my maat isnt enige rekening van my Wys periode van ten seleksie en die tendens Aantal periodes wat Ive gekies. Daarom moet ons die maatstaf te beperk tot net uit te voer wanneer sekere parameters te hou as die waarheid op grond van hierdie keuses Ek wil net waardes te vertoon wanneer my kolom opskrif datum is:. Minder as of gelyk aan die geselekteerde Maand Einde datum op my Wys periode van ten Snijder en groter as of gelyk aan die geselekteerde Maand Einde .. datum minus die gekose aantal periodes op my Trend aantal periodes Snijder om dit te doen, ek gebruik 'n IF-stelling om te bepaal wanneer my BEREKEN funksie moet voer Kom ons noem hierdie maatreël SalesMovingAverageTotalValue die IF-stelling werk soos volg: Ek moet eers bepaal dat Im evaluering net waar ek een waarde vir MADateMonthEndDate. As ek dit nie doen nie, ek kry die ou gunsteling fout in my latere evaluering wat sê dat 'n tafel van verskeie waardes verskaf dan Ek evalueer om te bepaal of my kolom opskrif datum (waardes (MADatesMonthEndDate) is minder as of gelyk aan die geselekteerde op die Maand Einde periode Snijder (LASTDATE (datesDateMonthEnd) EN (ampamp) My kolom opskrif datum is groter as of gelyk aan 'n berekende datum wat X tydperke voor die gekose Wys periodes datum tot soos op die Snijmachines. Ek gebruik 'n DATEADD funksie vir hierdie soortgelyk aan dié wat in my BEREKEN funksie behalwe die datum deur die geselekteerde op die Trend Aantal periodes Snijder waarde is aanpassing. Met dit in plek is, ons het die totale verkope vir die geselekteerde periode wat verband hou met die gebruikers keuse. So my tafel is nou beperk tot die aantal tendens periodes gekies en verteenwoordig die maand einddatum gekies. So nou deel ons net deur die bewegende gemiddelde Aantal periodes Reg eh GEEN Weve bereken ons totale verkope vir die tydperk wat verband hou met die gebruikers keuse. Jy sal hom vergewe word vir wat daarop dui dat ons eenvoudig verdeel deur die aantal bewegende gemiddelde periodes gekies. Afhangende van jou data, kan jy dit doen, maar die probleem is dat die dataset die geselekteerde aantal periodes nie kan hou, veral as die gebruiker 'n maand einddatum wat terug gaan in tyd kan kies. As gevolg hiervan, het ons om uit te werk hoe Mei periodes teenwoordig in ons SalesMovingAverageTotalValue maatstaf is. Hierdie maatreël is in wese dieselfde as my SalesMovingAverageTotal meet. Die enigste werklike verskil is dat ons reken die afsonderlike datum waardes in ons dataset in teenstelling met die roeping van die CascadeValueAll meet. Ek vroeër gesê daar was 'n rede hoekom ek nodig het die maand einddatum op my FACTTran tafel gehou word genoem en dit is hoekom. As ek iemand anders tafel gebruik hou die maand einddatum, wat tafel isnt gaan is gefiltreer in die manier waarop die kern dataset is gefiltreer. As 'n voorbeeld, my Datums tafel het 'n reeks van datums wat my dataset tydraamwerk en meer strek. As gevolg hiervan, die evaluering teen hierdie tabel sal aflei dat die tafel doen in werklikheid datums wat my dataset voorafgaan en daar is dus geen evaluering om te bepaal of daar 'n transaksie wat in die datastel vir daardie datum. Soos jy kan sien, want my dataset strek vanaf 1 Julie 2009, ek het net 9 periodes van data te evalueer vir my 31/03/2010 kolom. As ek gedeel deur 12 (soos per my Moving Gemiddelde Aantal periodes Snijder seleksie), sou ek 'n baie verkeerde antwoord gekry het. Dit is duidelik dat hierdie is 'n bietjie slinks, maar sy waardig ag. En nou is die Eenvoudige Bit Ek kan verstaan ​​dat die laaste twee mate paar boeiende geneem, veral uit te werk wanneer bepaalde datum velde moet gebruik word. Vir 'n bietjie lig verligting, die volgende mate gewoond regtig jy belas Dit is 'n eenvoudige verdeling met 'n bietjie fout nagaan om enige vuil koppie onder gehou vermy. Wanneer sy alles saam Aangesien al hierdie maatreël is draagbaar, kan ek 'n ander Pivot Table skep op dieselfde grondslag as die een hierbo (met SalesMovingAverageValue gegee 'n alias van bewegende gemiddelde), rond te beweeg 'n paar dinge, voeg 'n mate vir die werklike verkope waarde vir die maand (ek gewoond daarop ingaan nie nou nie, maar dit is 'n eenvoudige BEREKEN maat met 'n paar keer intelligensie) en ek weer instel dan lyk die volgende: Ek kan dan ry 'n eenvoudige lyn grafiek en toe te pas 'n tendens lyn op my Werklike maat met die term gerieflik wegkruip my data rooster wat dit dryf. Soos jy kan sien, 'n tendens op my werklike maatstaf toon 'n bestendige afname. My bewegende gemiddelde, toon egter 'n relatief stabiele, indien nie effens verbeter tendens. Seisoenaliteit van 'n ander spykers is natuurlik dus betrokke en die werklikheid is dat beide maatreëls waarskynlik kant te hersien mekaar. Vir dié van julle wat hierdie lees wat belangstel in die sien van die werkboek van hierdie voorbeeld is, Ill kyk na hierdie post in 'n toekomstige post wanneer ek hierdie analise neem 'n stap verder om die hele PampL dek. Jammer om jou te laat wag. Ek hoop dit help jou uit BillD een punt na Diegene arend oë DAX voor Let daar waarskynlik opgemerk dat my IF-funksies 'n berekening te evalueer wanneer die logiese toets 'n ware antwoord bereik bevat net. Die rede hiervoor is dat die funksie neem aan OOP () wanneer 'n valse evaluering toestand isnt voorsien. Ek havent uitgewerk indien enige prestasie impak met behulp van hierdie metode op groot datastelle Theres. Dit is aan jou wat jy gekies het om te doen en as iemand my kan oortuig waarom so OOP (kodering die Vals toestand) is die beste praktyke, sal ek vinnig my gewoontes te verander hierdie plasing is 6 Kommentaar Renato En net sê:


No comments:

Post a Comment