Tuesday, October 11, 2016

Eksponensiële Bewegende Gemiddelde Sql Server

Ek het die bespreking wat jy genoem het gelees. Dit is van toepassing op PostgreSQL aangesien dit toegelaat word om die gebruiker-gedefinieerde totaal funksie met behulp van SQL in PostgreSQL te skep, maar nie toegelaat in SQL Server. Die gebruik van rekursiewe CTE is 'n haalbare manier SQL Server, maar ek sien dat CTE manier om meer tafel scan as venster funksies kan aangaan. So ek maak hierdie pos om te vra of dit moontlik is om eksponensiële bewegende gemiddelde met behulp van SQL Server 2012 venster funksie bereken net soos die berekening van eenvoudige bewegende gemiddelde. â € xiagao1982 14 April 13 by 02:53 In die eerste plek te bereken wat jy die EMO (SMA (x)) in plaas van die EMO (x). Tweedens, jou quotsmoothing constantquot is eintlik die beta waarde in my formule, nie die alfa. Met dié twee veranderinge die SQLFiddle lyk soos volg: sqlfiddle / 6/19192/1 Daar is egter nog 'n bietjie verskil tussen die werklike resultaat en die verwagte resultaat. Ek sou terug gaan kyk of hul EMO definisie ooreenstem met die een wat ek ken. â € Sebastian Meine 7 Mei 13 by 13:46 Ek het net gekyk na die Formule in die sigblad jy aangeheg en dit is ver van die standaard EMO definisie. My formule bereken die eksponensiële bewegende gemiddelde van die afgelope tien rye. Die sigblad bereken eers die standaard gemiddelde oor die afgelope tien rye en dan die onbeperkte eksponensieel geweeg bewegende gemiddelde oor die hele gemiddeldes. Dit volg op die Formule hier: en. wikipedia. org/wiki/EWMAchart uitvoering maak Sebastian Meine 7 Mei 13 by 13: 52How 'n SQL Bereken bewegende gemiddelde sonder 'n wyser Update: As jy besig is met die nuutste weergawes van SQL Server, kan jy gebruik die windows funksies om dieselfde ding te bewerkstellig. Ek gepos word om die updated kode aan die einde van die post. Om hierdie video, ek nog graag die denkproses van anker om 'n datum. Video: 3 daagse bewegende gemiddelde in SQL 'n doeltreffende manier om 'n bewegende gemiddelde in SQL te bereken met behulp van 'n paar truuks op datum ankers stel. Daar is debatte oor die beste manier om 'n SQL bewegende gemiddelde in SQL Server doen. Sommige mense dink daar is tye wanneer 'n wyser is mees doeltreffende. Ander dink dat jy dit alles kan doen in 'n stel wat gebaseer is weg sonder die wyser. Die ander dag het ek gaan 'n bewegende gemiddelde te bereken en my eerste gedagte was om 'n wyser gebruik. Ek het 'n paar vinnige navorsing en het gevind dat hierdie forum vraag: Moving Gemiddelde in TSQL Daar is 'n pos wat 'n subquery met 'n anker datum te help vind die 1 en 2 dag geneutraliseer toon. Hier is die skrif wat jy kan gebruik om die 3 dag SQL Gemiddeld finale uitslag Moving toets. Hier is die finale navraag. Hier is die vraag wat jy sou gebruik met SQL Server 2012. Deel hierdie: Im probeer om te implementeer 'n eksponensiële bewegende gemiddelde (EMA) op Postgres, maar as ek dokumentasie na te gaan en daaroor dink, hoe meer ek probeer hoe meer verward ek. Die formule vir EMO (x) is: Dit lyk perfek te wees vir 'n aggregator, die behoud van die uitslag van die laaste berekende element is presies wat hier gedoen word. Maar 'n aggregator produseer 'n enkele resultaat (as verminder, of vou) en hier het ons 'n lys ( 'n kolom) van resultate (soos kaart). Ek is die nagaan hoe prosedures en funksies werk, maar AFAIK produseer hulle 'n enkele uitset, nie 'n kolom. Ek het gesien hoe baie van die prosedures en funksies, maar ek kan nie regtig uitvind hoe dit in wisselwerking met relasionele algebra, veral wanneer so iets te doen, 'n EMO. Ek het nie geluk soek die Inter tot dusver. Maar die definisie van 'n EMO is eenvoudig, ek hoop dit is moontlik om hierdie definisie in iets wat werk in Postgres en is eenvoudig en doeltreffend te vertaal, omdat hy na NoSQL gaan oormatige in my konteks te wees. Is dit die berekening van die samevoeging dat die uitslag produseer in elke ry vir elke sublist van die insette data omdat dit lyk asof dit met behulp van die aggregator tot roei N, die terugkeer van die resultaat en dan gaan ry 0 tot die samevoeging bereken tot N1 ry weer. Is daar enige manier om die opeenhoping of 'n statiese veranderlike (soos in C) gebruik sodat dit moet een keer bereken Dankie. â € Trylks 20 Januarie 12 aan 11:59 Nee, it39s met behulp van die opgehoopte waarde. As jy die navraag met die quotraise infoquot uncommented opdrag uit te voer, you39ll in staat wees om te sien dat die funksie slegs een keer vir elke ry uitset genoem. Postgresql uitgange die staat waarde op elke ry (as daar was 'n finalfunc gedefinieer, wat sou genoem word om die toestand te transformeer na 'n uitset waarde). â € araqnid 20 Januarie 12 aan 00:04 ErwinBrandstetter: Ek het teruggekeer meeste van die veranderinge - in die geval van die formaat van die eerste (anker) deel van die soektog, kan EMO (x1) duidelik verteenwoordig met 'n enkele lyn - dit corespnds om die enkele lyn definieer dit in die vraag. In die geval van die rekursiewe deel van die soektog, het ek mn gebruik - 1 in die aansluit toestand Om die gelykwaardigheid van die verhouding met EMO (xn-1) in die vraag dui, selfs al is dit minder performante sal wees as prestasie is 'n kwessie, kan die oP die aansluit toestand te wees as wat jy voorgestel verander. â € Mark Bannister 16 Januarie 12 by 9: 27 Die uitdaging Im met hier is besig om die EMO af te lei vir die huidige dae rekord waar die vorige dae EMO vir dieselfde termynkontrak is 'n inset. Net so die volgende handelsdae EMO is afhanklik van die EMA vir vandag. Met behulp van 'n stel wat gebaseer is SQL benadering nie die resultate in die gewenste mode waterval. Hier is die besonderhede, en aan die hand van die voorbeeld van die data hieronder: EMA formule is: EMACurrent EMAPrevious (CLSCurrent - EMAPrevious) Konstante Waar Konstante in my voorbeeld is 0,15385 Nota: Die PREVTIMEKEY is die vorige verhandelingsdag, en dit is nie noodwendig TIMEKEY - 1 want daar is gapings as gevolg van nie-werksdae. Ook COMMSYMB verskillende kommoditeite, sodat die vorige rekord is nie noodwendig die vorige dag handel vir die huidige kommoditeit. Die data begin met 'n saad waarde, sien rekords waar TIMEKEY 718. Toe die EMO vir rekords waar TIMEKEY 719, die formule toe te pas wat ons kan bereken. Neem COMMSYMB C as 'n voorbeeld wat ons kry 371,290064102564 (372,75-371,290064102564) 0,15385 371,51468 met 'n SQL stel benadering, Im in staat om net die volgende waarde put (dit wil sê waar TIMEKEY 719), maar daarna alle daaropvolgende rekords het EMAF null. Ek verstaan ​​hoekom, want my afgelei waardes is nie om die tafel geskryf. So ek het 'n paar metode om die volgende dae EMO lei, dan skryf die resultate na die tafel, dan lei die volgende dae EMO, skryf aan die tafel, ens Dit word herhaal vir alle 30.000 rekords in die meester tafel. Dankie by voorbaat, Wayne - Voorbeeld data DROP TABLE dbo. EMATEST CREATE TABLE dbo. EMATEST (TIMEKEY INT NIE NULL, COMMSYMB NVARCHAR (3) NIE NULL, PREVTIMEKEY INT, CLS vlot, EMAF float) voeg in dbo. EMATEST (TIMEKEY, COMMSYMB, PREVTIMEKEY, CLS, EMAF) Kies 703, C, 0, 375,5, 0 Unie Alle KIES 703, CL, 0, 62,44, 0 Unie Alle KIES 703, GC, 0, 650,9, 0 Unie Alle KIES 704, C, 703 , 378, 0 Unie Alle KIES 704, CL, 703, 62,43, 0 Unie Alle KIES 704, GC, 703, 647,9, 0 Unie Alle KIES 705, C, 704, 366, 0 Unie Alle KIES 705, CL, 704, 62,19 , 0 Unie Alle KIES 705, GC, 704, 635,9, 0 Unie Alle SELECT 706, C, 705, 372,5, 0 Unie Alle KIES 706, CL, 705, 62,49, 0 Unie Alle KIES 706, GC, 705, 637, 0 Unie Alle SELECT 707, C, 706, 368,5, 0 Unie Alle KIES 707, CL, 706, 62,03, 0 Unie Alle KIES 707, GC, 706, 631, 0 Unie Alle KIES 710, C, 707, 370,75, 0 Unie Alle KIES 710, CL, 707, 61,22, 0 Unie Alle KIES 710, GC, 707, 634,8, 0 Unie Alle KIES 711, C, 710, 372,75, 0 Unie Alle KIES 711, CL, 710, 61,02, 0 Unie Alle KIES 711 , GC, 710, 631,7, 0 Unie Alle KIES 712, C, 711, 368,25, 0 Unie Alle KIES 712, CL, 711, 62,17, 0 Unie Alle KIES 712, GC, 711, 632,4, 0 Unie Alle KIES 713, C , 712, 371,75, 0 Unie Alle KIES 713, CL, 712, 63,33, 0 Unie Alle KIES 713, GC, 712, 630,9, 0 Unie Alle KIES 714, C, 713, 369, 0 Unie Alle KIES 714, CL, 713 , 64,09, 0 Unie Alle KIES 714, GC, 713, 619,1, 0 Unie Alle KIES 717, C, 714, 365,75, 0 Unie Alle KIES 717, CL, 714, 62,79, 0 Unie Alle KIES 717, GC, 714, 617,9 , 0 Unie Alle KIES 718, C, 717, 373, 371,290064102564 Unie Alle SELECT 718, CL, 717, 63,46, 62,6237179487179 Unie Alle SELECT 718, GC, 717, 625,4, 631,753205128205 Unie Alle KIES 719, C, 718, 372,75, NULL Unie Alle SELECT 719, CL, 718, 63,72, NULL Unie Alle SELECT 719, GC, 718, 624,3, NULL Unie Alle SELECT 720, C, 719, 377,75, NULL Unie Alle SELECT 720, CL, 719, 62,66, NULL Unie Alle KIES 720, GC, 719, 621,6, NULL Unie Alle SELECT 721, C, 720, 384, NULL Unie Alle SELECT 721, CL, 720, 62,41, NULL Unie Alle SELECT 721, GC, 720, 622,3, NULL Unie Alle SELECT 724 , C, 721, 384, NULL Unie Alle SELECT 724, CL, 721, 62,41, NULL Unie Alle KIES 724, GC, 721, 622,3, NULL Unie Alle SELECT 725, C, 724, 388, NULL Unie Alle SELECT 725, CL , 724, 61.1, NULL Unie Alle KIES 725, GC, 724, 626,9, NULL Unie Alle SELECT 726, C, 725, 386,75, NULL Unie Alle SELECT 726, CL, 725, 60,34, NULL Unie Alle SELECT 726, GC, 725 , 630,3, NULL Unie Alle SELECT 727, C, 726, 388,5, NULL Unie Alle KIES 727, CL, 726, 60,53, NULL Unie Alle SELECT 727, GC, 726, 636,9, NULL Unie Alle SELECT 728, C, 727, 390,25 , NULL Unie Alle KIES 728, CL, 727, 61,05, NULL Unie Alle SELECT 728, GC, 727, 638, NULL - Die verwagte resultate DROP TABLE dbo. EMAER CREATE TABLE dbo. EMAER (TIMEKEY INT NIE NULL, COMMSYMB NVARCHAR ( 3) NIE NULL, PREVTIMEKEY INT, CLS vlot, EMAF float) voeg in dbo. EMAER (TIMEKEY, COMMSYMB, PREVTIMEKEY, CLS, EMAF) Kies 703, C, 0, 375,5, 0 Unie Alle KIES 703, CL, 0, 62,44 , 0 Unie Alle KIES 703, GC, 0, 650,9, 0 Unie Alle SELECT 704, C, 703, 378, 0 Unie Alle KIES 704, CL, 703, 62,43, 0 Unie Alle KIES 704, GC, 703, 647,9, 0 Unie Alle SELECT 705, C, 704, 366, 0 Unie Alle KIES 705, CL, 704, 62,19, 0 Unie Alle KIES 705, GC, 704, 635,9, 0 Unie Alle KIES 706, C, 705, 372,5, 0 Unie Alle KIES 706, CL, 705, 62,49, 0 Unie Alle SELECT 706, GC, 705, 637, 0 Unie Alle KIES 707, C, 706, 368,5, 0 Unie Alle KIES 707, CL, 706, 62,03, 0 Unie Alle KIES 707 , GC, 706, 631, 0 Unie Alle KIES 710, C, 707, 370,75, 0 Unie Alle KIES 710, CL, 707, 61,22, 0 Unie Alle SELECT 710, GC, 707, 634,8, 0 Unie Alle KIES 711, C , 710, 372,75, 0 Unie Alle KIES 711, CL, 710, 61,02, 0 Unie Alle KIES 711, GC, 710, 631,7, 0 Unie Alle KIES 712, C, 711, 368,25, 0 Unie Alle KIES 712, CL, 711 , 62,17, 0 Unie Alle KIES 712, GC, 711, 632,4, 0 Unie Alle KIES 713, C, 712, 371,75, 0 Unie Alle KIES 713, CL, 712, 63,33, 0 Unie Alle KIES 713, GC, 712, 630,9 , 0 Unie Alle KIES 714, C, 713, 369, 0 Unie Alle SELECT 714, CL, 713, 64,09, 0 Unie Alle KIES 714, GC, 713, 619,1, 0 Unie Alle KIES 717, C, 714, 365,75, 0 Unie Alle SELECT 717, CL, 714, 62,79, 0 Unie Alle KIES 717, GC, 714, 617,9, 0 Unie Alle KIES 718, C, 717, 373, 371,290064102564 Unie Alle KIES 718, CL, 717, 63,46, 62,6237179487179 Unie Alle KIES 718, GC, 717, 625,4, 631,753205128205 Unie Alle SELECT 719, C, 718, 372,75, 371,514675240385 Unie Alle KIES 719, CL, 718, 63,72, 62,7923809423077 Unie Alle SELECT 719, GC, 718, 624,3, 630,606529519231 Unie Alle KIES 720 , C, 719, 377,75, 372,473979954651 Unie Alle SELECT 720, CL, 719, 62,66, 62,7720141343336 Unie Alle SELECT 720, GC, 719, 621,6, 629,220874952697 Unie Alle KIES 721, C, 720, 384, 374,247258138628 Unie Alle KIES 721, CL , 720, 62,41, 62,7163182597664 Unie Alle SELECT 721, GC, 720, 622,3, 628,156098341225 Unie Alle SELECT 724, C, 721, 384, 375,747717474 Unie Alle KIES 724, CL, 721, 62,41, 62,6691911955013 Unie Alle SELECT 724, GC, 721 , 622,3, 627,255137611427 Unie Alle KIES 725, C, 724, 388, 377,632731140625 Unie Alle SELECT 725, CL, 724, 61.1, 62,4277711300734 Unie Alle SELECT 725, GC, 724, 626,9, 627,200499689909 Unie Alle KIES 726, C, 725, 386,75 , 379,03542295464 Unie Alle KIES 726, CL, 725, 60,34, 62,1065675417116 Unie Alle SELECT 726, GC, 725, 630,3, 627,677357812617 Unie Alle SELECT 727, C, 726, 388,5, 380,491548133069 Unie Alle KIES 727, CL, 726, 60,53, 61,8640126254193 Unie Alle SELECT 727, GC, 726, 636,9, 629,096261313146 Unie Alle SELECT 728, C, 727, 390,25, 381,992885952796 Unie Alle KIES 728, CL, 727, 61,05, 61,7387767829985 Unie Alle SELECT 728, GC, 727, 638, 630,466101510118 Lynn Pettis (2009/01/30) Amazing hoeveel probleme blyk te wees opgelos met behulp van die bestuur totale benadering by tye. ) Yep. Dit is 'n lang tyd gelede erken deur die groot SQL databasis venders in die vorm van OLAP, analitiese venster funksies (bv. Rownumber () over..etc). En om hul kliënte te hou uit gaan na ander vorme van sagteware. Hul grootste bekommernis was die oplossings moet redelik maklik wees. (Let wel hulle het die versiendheid om te sien dat hierdie funksies konseptueel kan verwar gebruikers Maar dis 'n ander onderwerp vir 'n ander tyd :) Oorweeg die volgende uit 'n sql-99 standaard dokument:. ISO / IEC JTC1 / SC32 WG3: YGJ-068 ANSI NCITS H2 -99-154r2 Inleiding tot OLAP funksies 5 Mei 1999 www. cse. iitb. ac. in/dbms/Data/Papers-Other/SQL1999/OLAP-99-154r2.pdf Elke standaard moet bereid wees om nuwe kwessies wat ontstaan ​​pak as die mark ontwikkel. Soms sal dit nodig om te breek die vorm. Vandag, is die SQL gemeenskap uitgedaag deur die opkoms van OLAP, met sy kenmerkende vereistes. As SQL nie positief op hierdie uitdaging reageer, risiko's SQL besig om irrelevant om 'n belangrike en groeiende segment van die databasis bedryf. Ongelukkig MS nie deel van die SQL-vertoning van die nut van OLAP. As hulle het hulle sou almal dit geïmplementeer deur nou :) Natuurlik RAC bedoel was om af te haal 'n paar van die slap:) is 'n uitdaging probeer om die 20 (handelsdae sit) Eksponensiële bewegende gemiddelde (EMA) in ons data model in PowerPivot. Hier is die EMO formule en voorbeeld spreadsheet: stockcharts / skool / dokuidchartschool: technicalindicators: movingaverages Geplak die formule hier vir gerief: SMA (eenvoudige bewegende gemiddelde): 10 tydperk som / 10 Vermenigvuldiger: 2 / (Tydperk 43 1)) EMO: x vermenigvuldiger 43 EMO (vorige dag). Monster sigblad stockcharts / skool / data / media / chartschool / technicalindicatorsandoverlays / movingaverages / CS-movavg. xls In ons model van die feit tafel het hierdie kolomme: Simbool Datum Oop Hoog Laag Close Deel En in die kalender tafel weve geïdentifiseer die handelsdae (CalendarTradingDayNumber ) as 1, sodat ons kan hulle tel terug. Ons wil die EMO berekende veld in 'n spilpunt tafel soos hierdie Filter konteks: 'n datum gekies op CalendarFullDate Ry konteks: FactTableSymbol Waardes: FactTableClose FactTableEMA 20D gtgt Missing Tot dusver het ons hierdie berekende velde: Ema Vermenigvuldiger 2 / (Tydperk 43 1) Gemiddeld 20D sluit indien (som van CLOSEBLANK (), leë (), (BEREKEN (gemiddeld (FactTableCLOSE), FILTER (ALL (Kalender), CalendarTradingDayNumberltMAX (CalendarTradingDayNumber) ampamp CalendarTradingDayNumbergtMAX (CalendarTradingDayNumber) - periode)))) Maar dit lyk asof die EMO formule bevat 'n self verwysing van vorige waardes, en dit begin ook van 'n SMA (Gemiddeld 20D Maak) waarde. Hoe kan ons dit doen Dankie by voorbaat. Ek hoogs waardeer jou ondersteuning. Saterdag, 19 Julie, 2014 09:42


No comments:

Post a Comment