Friday, 28 July 2017

เฉลี่ยเคลื่อนที่ Ms Sql


ฉันมีตารางของการใช้ผลิตภัณฑ์รายชั่วโมงกี่ครั้งที่ใช้ผลิตภัณฑ์ data. Izhivise ฉันมีข้อมูลการใช้งานสำหรับ 4 ผลิตภัณฑ์ที่แตกต่างกัน ProductId ตั้งแต่ 1 ถึง 4 เก็บไว้สำหรับทุกชั่วโมงในตาราง productusage ที่คุณสามารถจินตนาการมันเติบโตอย่างต่อเนื่อง เนื่องจากกระบวนการ ETL แบบรายคืนจะทิ้งข้อมูลทั้งวันที่ผ่านมาหากไม่มีการใช้ผลิตภัณฑ์ใด ๆ ในทุกๆวันในหนึ่งชั่วโมงบันทึกสำหรับชั่วโมงที่ได้รับรางวัล t จะปรากฏในตารางนี้เช่นเดียวกันหากผลิตภัณฑ์ไม่ได้ใช้งานตลอดทั้งวัน มีชนะ t เป็นบันทึกใด ๆ สำหรับวันนั้นในตารางที่ฉันต้องการสร้างรายงานที่ให้การใช้ชีวิตประจำวันและล่าสุด 7 วันกลิ้ง average. and อื่น ๆ ฉันวางแผนที่จะสร้างมุมมองการจัดทำดัชนีใน SQL Server 2014 คุณสามารถคิดที่มีประสิทธิภาพ แบบสอบถาม SQL ที่จะทำ this. asked Sep 18 14 at 21 08.This เป็น Evergreen Joe Celko คำถามฉันไม่สนใจที่ใช้แพลตฟอร์ม DBMS แต่ในกรณีใด Joe สามารถตอบมากกว่า 10 ปีที่ผ่านมากับมาตรฐาน SQL. Joe Celko SQL ปริศนา และคำตอบที่อ้างว่าความพยายามในการปรับปรุงครั้งล่าสุดแสดงให้เห็นว่า เราสามารถใช้คำกริยาเพื่อสร้างแบบสอบถามที่จะทำให้เรามีค่าเฉลี่ยเคลื่อนที่ได้คอลัมน์พิเศษหรือวิธีการสืบค้นที่ดีกว่าแบบสอบถามนั้นดีกว่าทางเทคนิคเพราะวิธี UPDATE จะ denormalize ฐานข้อมูล แต่ถ้าข้อมูลทางประวัติศาสตร์ถูกบันทึกไว้ไม่ได้ การเปลี่ยนแปลงและการคำนวณค่าเฉลี่ยเคลื่อนที่มีราคาแพงคุณอาจลองใช้วิธีการของคอลัมน์ SQL แบบสอบถามปริศนาทั้งหมดนี้หมายถึงเครื่องแบบคุณเพียงแค่โยนไปยังถังน้ำหนักที่เหมาะสมขึ้นอยู่กับระยะทางจากจุดเวลาปัจจุบันตัวอย่างเช่นใช้น้ำหนัก 1 สำหรับ datapoints ภายใน 24 ชั่วโมงจากน้ำหนัก datapoint ปัจจุบัน 0 5 สำหรับ datapoints ภายใน 48hrs กรณีที่มันสำคัญเท่าใด datapoints ติดต่อกันเช่น 6 12am และ 11 48pm อยู่ไกลจากกันกรณีใช้ฉันสามารถคิดจะพยายามที่จะเรียบ histogram ที่ใดก็ตามที่ datapoints ไม่ หนาแน่นพอ msciwoj 27 พฤษภาคม 15 ที่ 22 22. ฉันไม่แน่ใจว่าผลลัพธ์ผลลัพธ์ที่คาดหวังของคุณแสดงให้เห็นค่าเฉลี่ยเคลื่อนที่ที่เรียบง่ายกลิ้งเป็นเวลา 3 วันเพราะสำหรับ e xample สามหมายเลขแรกตามความหมายให้ แต่คุณคาดหวัง 4 360 และเป็นความสับสนอย่างไรก็ตามผมขอแนะนำโซลูชันต่อไปนี้ซึ่งใช้ AVG หน้าต่างฟังก์ชันวิธีนี้มีประสิทธิภาพมากขึ้นชัดเจนและทรัพยากรน้อยกว่า SELF - JOIN แนะนำในคำตอบอื่น ๆ และฉันประหลาดใจที่ไม่มีใครได้ให้ทางออกที่ดีขึ้นคุณเห็นว่า AVG ถูกห่อด้วยกรณีเมื่อ rownum แล้วบังคับ NULL s ในแถวแรกที่ 3 วัน Moving Average มีความหมายตอบ 23 กุมภาพันธ์ที่ 16 13 12. เราสามารถใช้วิธีการเข้าร่วม outer outer ซ้ายซ้ายของ Joe Celko โดย Diego Scaravaggi เพื่อตอบคำถามตามที่ได้ถามไว้สร้างผลลัพธ์ที่ต้องการตอบ 9 ม. ค. 16 ที่ 0 33. คำตอบของคุณ 2017 Stack Exchange, Inc ค่าเฉลี่ยเคลื่อนที่ที่คำนวณได้ใน T-SQL ค่าเฉลี่ยเคลื่อนที่ที่เลื่อนออกไปมีค่าใกล้เคียงกับค่าเฉลี่ยเคลื่อนที่ที่ถ่วงน้ำหนักโดยให้น้ำหนักน้อยกว่าการเปลี่ยนแปลงเมื่อนานมาแล้วและมีน้ำหนักมากขึ้นกว่าการเปลี่ยนแปลงเมื่อเร็ว ๆ นี้ค่าเฉลี่ยเคลื่อนที่ที่ถ่วงน้ำหนักเป็นเส้นตรง แต่ค่าเฉลี่ยเคลื่อนที่แบบเสวนาคือเลขยกกำลัง นั่นคือน้ำหนักที่สามารถแสดงเป็น curve. There เป็นวิธีที่ดีในการคำนวณค่าเฉลี่ยเคลื่อนที่ที่ชี้แจงใน T - SQL โดยใช้คุณลักษณะที่ไม่มีเอกสารเกี่ยวกับตัวแปรและเรียกใช้ผลรวมใน SQL Server ในโพสต์บล็อกนี้ฉันจะแสดงวิธีการใช้วิธีการนั้น ในการคำนวณค่าเฉลี่ยเคลื่อนที่ที่อธิบายใน T-SQL แต่ฉันยังจะนำเสนอวิธีการที่ใช้คุณสมบัติมาตรฐานใน SQL Server แต่นั่นหมายถึงการใช้ลูปในตัวอย่างที่ฉันจะคำนวณค่าเฉลี่ยเลขยกกำลัง 9 วันตัวอย่างใช้ฐานข้อมูล TAdb สคริปต์เพื่อสร้าง TAdb สามารถพบได้ที่นี่ค่าเฉลี่ย EMA ที่คำนวณได้โดยใช้วิธีการคำนวณแบบ Exotential EMA ใช้วิธีการคำนวณทั้งหมดทฤษฎีที่อยู่เบื้องหลังการทำงานของคุณลักษณะทั้งหมดในการอัพเดตได้อธิบายไว้ในรายละเอียดโดย Jeff Moden ในบทความของเขาในการแก้ปัญหา Total Total Ordinal Rank Problems. Other resources that อธิบายโดยใช้วิธีการนี้ในการคำนวณ EMA คือการโพสต์บล็อกการคำนวณค่าเฉลี่ยเคลื่อนที่โดย T-SQL โดย Gabriel Priester และฟอรัมโพสต์ระบุว่ามีการย้ายเฉลี่ยความท้าทายทั้งใน SQL Server Cent ral. Basically ใน T-SQL คุณสามารถปรับปรุงตัวแปรเช่นเดียวกับคอลัมน์ในคำสั่ง update การปรับปรุงจะทำแถวโดยแถวภายในโดย SQL Server แถวโดยพฤติกรรมแถวนี้คือสิ่งที่ทำให้การคำนวณการทำงานทั้งหมดเป็นไปได้ตัวอย่างนี้แสดงให้เห็นว่ามัน ทำงานได้หมายเหตุว่า ColumnRunningTotal เป็นผลรวมของ ColumnToSum การใช้วิธีนี้เราสามารถคำนวณ EMA9 กับ T-SQL นี้การคำนวณ EMA ค่อนข้างง่ายเราใช้แถวปัจจุบันและก่อนหน้านี้ แต่มีน้ำหนักมากขึ้นในแถวปัจจุบัน น้ำหนักคำนวณโดยสูตร 2 1 9 โดยที่ 9 เป็นพารามิเตอร์สำหรับความยาวของ EMA ในการคำนวณ EMA9 สำหรับแถว 10 ด้านบนการคำนวณคือในกรณีนี้แถวปัจจุบันมีน้ำหนัก 20 จาก 2 1 9 0 2 และ แถวก่อนหน้าจะมีน้ำหนัก 80 จาก 1-2 1 9 0 8. คุณพบการคำนวณนี้ในคำแถลงข้างต้นในคำชี้แจง CASEExpectally Moving Average EMA Looping Method. เท่าที่ฉันรู้ยกเว้นวิธีการทั้งหมดที่ระบุไว้ด้านบน ไม่มีวิธีคำนวณ EMA โดยใช้ชุดข ased คำสั่ง SQL ดังนั้น T-SQL ด้านล่างใช้ loop ในขณะที่คำนวณ EMA9 ผลลัพธ์ที่ได้จะเหมือนกับในตัวอย่าง totals ที่ทำงานข้างต้นตามที่คาดไว้ชุดที่ทำงานตามผลรวมรุ่นเป็นวิธีที่เร็วกว่ารุ่น loop บน เครื่องตั้งโซลูชั่นตามประมาณ 300 ms เทียบกับประมาณ 1200 กับรุ่นห่วงรุ่น loop เป็นมากขึ้นตามมาตรฐาน SQL อย่างไรก็ตามทางเลือกระหว่างวิธีการขึ้นอยู่กับสิ่งที่สำคัญที่สุดสำหรับคุณประสิทธิภาพหรือมาตรฐานการชี้แจงการย้าย ค่าเฉลี่ยสามารถใช้ในการวิเคราะห์แนวโน้มเช่นเดียวกับค่าเฉลี่ยเคลื่อนที่อื่น ๆ Simple Moving Average SMA และ Weighted moving average WMA นอกจากนี้ยังมีการคำนวณอื่น ๆ ในการวิเคราะห์ทางเทคนิคที่ใช้ EMA เช่น MACD โพสต์บล็อกนี้เป็นส่วนหนึ่งของ serie เกี่ยวกับการวิเคราะห์ทางเทคนิค TA ใน SQL Server ดูโพสต์อื่นที่นี่โพสต์โดย Tomas Lind. Tomas Lind - บริการให้คำปรึกษาเป็น SQL Server DBA และ Database Developer ที่ High Coast Database Solutions AB

No comments:

Post a Comment