Saturday 22 July 2017

ชี้แจง เคลื่อนไหว เฉลี่ย Mysql


เมื่อฉันมีปัญหาที่คล้ายกันฉันสิ้นสุดการใช้ตาราง temp ด้วยเหตุผลหลายประการ แต่มันทำให้ง่ายขึ้นมากสิ่งที่ฉันได้ดูคล้ายกับสิ่งที่คุณทำอีกเท่าที่ schema ไป. Makeสิ่ง schema เช่น รหัสประจำตัว startdate, enddate ค่าเมื่อคุณเลือกทำ avell subselect ของก่อนหน้านี้ 20 ขึ้นอยู่กับรหัสประจำตัว ID ถ้าคุณพบว่าตัวเองอยู่แล้วโดยใช้ตารางชั่วคราวด้วยเหตุผลอื่น ๆ แม้ว่าฉันจะตีแถวเดียวกันซ้ำแล้วซ้ำอีก เมตริกที่แตกต่างกันดังนั้นจึงเป็นประโยชน์ที่จะมีชุดข้อมูลขนาดเล็กจากประสบการณ์ของฉัน Mysql ณ 5 5 x มีแนวโน้มที่จะไม่ใช้ดัชนีในการเลือกขึ้นอยู่กับว่าข้อความค้นหาย่อยหรือเข้าร่วมนี้อาจมีผลกระทบอย่างมากต่อประสิทธิภาพการทำงานที่ขึ้นอยู่กับการเลือก การเปลี่ยนแปลงเกณฑ์ในทุก ๆ แถวค่าเฉลี่ยของค่าเฉลี่ยเป็นตัวอย่างของแบบสอบถามที่อยู่ในหมวดหมู่นี้เวลาในการดำเนินการอาจเพิ่มขึ้นด้วยแถวของแถวเพื่อหลีกเลี่ยงปัญหานี้ให้เลือกเครื่องมือฐานข้อมูลที่สามารถทำดัชนีการค้นหาแบบมองเห็นได้ในการค้นหาที่ขึ้นอยู่ฉันพบ postgres ผลงาน Stack Exchange, Inc. ใช้ค่าเฉลี่ยเคลื่อนที่ที่เรียบเพื่อให้ข้อมูลที่ราบรื่นขึ้นเป็นเทคนิคที่ค่อนข้างเป็นที่นิยมมากเกินไปตัวอย่างเช่นใน SQL Anywhere Help อยู่ห่างไกล จากแบบง่ายสิ่งที่ทำให้ตัวอย่างที่ซับซ้อนเช่นนี้นอกจากคำสั่งปัญหาที่คำนวณค่าเฉลี่ยเคลื่อนที่ของยอดขายผลิตภัณฑ์ทั้งหมดโดยเดือนในปี 2000 ซึ่งเป็นข้อมูลที่ทำให้การอ้างอิงของ AVG มีความซับซ้อนขึ้นสองครั้ง GROUPA โดยที่ ทั้งหมดด้วยตัวเองทำให้เพียงเกี่ยวกับใด ๆ SELECT หัว scratcher วลีซ่อน WINDOW clause. a ประโยค WINDOW ที่ doesn t แม้ใช้คำหลัก WINDOW เพื่อไม่ได้ฝึกหัด folks ที่ต้องการตัวอย่างมากขึ้นกว่าคนอื่นมันไม่ชัดเจนว่า WINDOW มีส่วนเกี่ยวข้องที่ทุกคนไม่เพียงประโยคใด ๆ ที่ใจคุณ, แต่หนึ่งที่มีทุกองค์ประกอบเดียวคุณสามารถรหัส WINDOW. a PARTITION BY. a ประโยค RANGE ไม่ประโยค ROWS ง่าย แต่เต็มเป่าข้อ RANGE หนึ่งที่มีความสนิทสนมกับ ORDER BY ฉันรู้ว่าแถวเป็น, แต่สิ่งที่ redacted คือ RANGE แต่รอมีมากขึ้นการเลือก RANGE ใน ROWS ในตัวอย่างนี้มีความสำคัญต่อการดำเนินการที่ถูกต้องของแบบสอบถามเพื่อการสนทนาที่สมบูรณ์ยิ่งขึ้นในตัวอย่างเฉพาะนี้ดูตัวอย่างที่ 23 - การคำนวณค่าเฉลี่ยเคลื่อนที่ ในกระดาษสีขาว OLAP ที่ยอดเยี่ยมของ Glenn Paulley ตอนนี้ขอให้ย้อนกลับไปดูค่าเฉลี่ย Average Moving Average จริงๆตัวอย่างต่อไปนี้แสดงข้อมูลมูลค่า 10 วันพร้อมกับค่าเฉลี่ยเคลื่อนที่ของค่าวันนี้และเมื่อวานนี้เป็นบรรทัด WINDOW ในบรรทัด 21 ถึง 23 กำหนดหน้าต่างเคลื่อนที่ที่มีแถวสองแถวแถวปัจจุบันแถว ROW ปัจจุบันและแถวที่เมื่อวานนี้ 1 PRECEDING. WINDOW ORDER BY กำหนดว่า PRECEDING หมายถึงแถวก่อนโดย and. the ROWS กำหนดขนาดของหน้าต่างเสมอสองแถวการแสดงออก AVG Over twodays ในบรรทัดที่ 19 อ้างถึงคำสั่ง WINDOW ตามชื่อและบอก SQL Anywhere เพื่อคำนวณค่าเฉลี่ยของค่าสองค่าที่มีอยู่ในหน้าต่างเลื่อน 2 แถวสำหรับแต่ละแถวในชุดผลลัพธ์ดังนั้นสำหรับ 2012 -02-02 ค่าเฉลี่ย 10 และ 20 คือ 15 000000.for 2012-02-03 ค่าเฉลี่ย 20 และ 10 คือ 15 000000.for 2012-02-04 ค่าเฉลี่ย 10 และ 30 คือ 20 000000.for 2012-02 -10 ค่าเฉลี่ยของ 10 และ 60 คือ 35 000000.Oops สิ่งที่เกี่ยวกับแถวแรกแถว 2012/02/01 ไม่ได้มีแถวที่กำหนดดังนั้นค่าเฉลี่ยของหน้าต่างที่เคลื่อนที่ตาม Glenn Paulley คือสีขาว กระดาษในกรณีของหน้าต่างเคลื่อนที่จะสันนิษฐานว่าแถวที่มีค่า Null อยู่ก่อนแถวแรกและหลังจากแถวสุดท้ายใน inpu t นั่นหมายความว่าเมื่อหน้าต่างเคลื่อนที่มี 2012-02-01 เป็น CURRENT ROW แถว PRECEDING หนึ่งแถวมีค่า NULL และเมื่อ SQL Anywhere คำนวณ AVG ที่มีค่า NULL จะไม่นับ NULL ที่ไม่มีอยู่ใน เศษหรือในตัวหารเมื่อคำนวณค่าเฉลี่ยที่นี่ s หลักฐานที่ว่าทำไม twodayaverage 10 000000 สำหรับแถวแรก 2012-02-01 โพสต์โดย Breck Carter ที่ 3 47 PM. In พูดคุยล่าสุดของฉันที่ Surge และ Percona Live เกี่ยวกับการตรวจสอบความผิดพลาดปรับตัว ภาพนิ่งฉันอ้างว่าเกณฑ์ hardcoded สำหรับการแจ้งเตือนเกี่ยวกับเงื่อนไขข้อผิดพลาดมักจะดีที่สุดเพื่อหลีกเลี่ยงในความโปรดปรานของเกณฑ์แบบไดนามิกหรือปรับตัวฉันจริงไปไกลเกินกว่าที่และกล่าวว่าเป็นไปได้ในการตรวจสอบข้อผิดพลาดด้วยความมั่นใจมากในหลายระบบเช่น MySQL โดยไม่ต้อง การตั้งค่าเกณฑ์ใด ๆ ในโพสต์นี้ฉันต้องการอธิบายเพิ่มเติมเกี่ยวกับค่าเฉลี่ยเคลื่อนที่ที่ฉันใช้ในการกำหนดพฤติกรรมปกติในตัวอย่างที่ฉันให้มีสองผู้สมัครที่ชัดเจนสำหรับการย้ายค่าเฉลี่ยตรงไปตรงมาย้าย verages และค่าเฉลี่ยเคลื่อนที่ที่ถ่วงน้ำหนักแบบยกตนข่มค่าเฉลี่ยเคลื่อนที่โดยเฉลี่ยเพียงคำนวณค่าเฉลี่ยของค่าเฉลี่ยของตัวอย่าง N ล่าสุดของข้อมูลในกรณีของฉันฉันใช้ตัวอย่าง 60 ตัวอย่างนี้ต้องเก็บอาร์เรย์ของตัวอย่าง N ก่อนหน้านี้และอัปเดตค่าเฉลี่ยสำหรับทุกตัวอย่าง ค่าเฉลี่ยเคลื่อนที่เป็นเส้นตรง doesn t ต้องเก็บตัวอย่างค่าเฉลี่ยคือจำนวนหนึ่งและคุณมีปัจจัยที่ทำให้เรียบสำหรับตัวอย่างใหม่ทุกตัวคุณคูณค่าเฉลี่ยเก่าโดย 1 แล้วเพิ่มลงในตัวอย่างครั้งใหม่เฉลี่ย 1-alpha ตัวอย่างทั้งสองต้องมีระยะเวลาอุ่นเครื่องตัวอย่างเช่นในกรณีของ 60- ตัวอย่างหน้าต่างย้ายคุณต้อง 60 ตัวอย่างก่อนที่คุณจะสามารถเริ่มต้นค่าเฉลี่ยเคลื่อนที่ชี้แจงสามารถ primed จากค่าเฉลี่ยของ 10 ตัวอย่างแรกในประสบการณ์ของผมเทคนิคทั้งสองยังล่าช้าแนวโน้มในตัวอย่างบางส่วนเมื่อมีการเปลี่ยนแปลงอย่างมากในรูปแบบที่พวกเขาใช้เวลาในการจับ up. Here sa พล็อตของข้อมูลจริงบางส่วนและ t wo เส้นสีน้ำเงินเป็นข้อมูลตัวอย่างเส้นสีแดงเป็นค่าเฉลี่ยเคลื่อนที่ที่มีหน่วยความจำเฉลี่ย 60 วินาทีและเส้นสีเหลืองเป็นค่าเฉลี่ยเคลื่อนที่ 60 วินาทีคำอธิบายว่าเส้นสีแดงเป็นอย่างไร มีแนวโน้มที่จะแน่นอนได้อย่างถูกต้องมากขึ้นและรักษาความจริงกับพฤติกรรมปัจจุบันของเส้นสีน้ำเงินนี่เป็นข้อได้เปรียบหนึ่งของค่าเฉลี่ยเคลื่อนที่ที่อธิบายได้ถ้าเป็นสิ่งที่คุณต้องการไม่มีข้อมูลนี้ชัดเจน แต่ค่าเฉลี่ยเคลื่อนที่ที่เรียบง่ายมีค่าอื่น ข้อเสียสมมติว่ามีค่าที่สูงมากในข้อมูลที่เก็บมาตัวอย่างไม่กี่วินาทีสำหรับ 60 วินาทีถัดไปเข็มนี้จะอยู่ภายในหน้าต่างพองค่าเฉลี่ยเคลื่อนที่เมื่อถูกทิ้งไปจากหน้าต่างจะทำให้เกิดการเคลื่อนที่ ค่าเฉลี่ยจะลดลงอย่างกะทันหันฉันได้พบนี้จะเป็นปัญหาในหลาย ๆ กรณีมันเป็นที่ชัดเจนโดยเฉพาะอย่างยิ่งเมื่อคุณคำนวณค่าเบี่ยงเบนมาตรฐานของกลุ่มตัวอย่างหรือสถิติที่สำคัญอื่น ๆ เหนือหน้าต่างที่เคลื่อนที่ มีปัญหาที่เกิดขึ้นเนื่องจากสไปค์นั้นไม่เคยเคลื่อนออกไปนอกหน้าต่างอิทธิพลของมันจะอยู่ที่นั่นตลอดไป แต่เมื่อเวลาผ่านไปมันจะค่อยๆเล็กลงขึ้นเรื่อย ๆ ดังนั้นคุณจึงไม่ได้รับความเสียหายอย่างฉับพลันจากค่าเฉลี่ยในปัจจุบันซึ่งขึ้นอยู่กับสิ่งที่เกิดขึ้นเมื่อ 60 วินาทีก่อน นี่เป็นเพียงรอยขีดข่วนของเทคนิคที่ฉันได้สำรวจในชุดใหญ่ของวันเพื่อสัปดาห์ของข้อมูลจากหมื่นของเซิร์ฟเวอร์จริงเป็นฉันได้รับเวลาฉันจะพยายามเขียนเพิ่มเติมเกี่ยวกับเรื่องนี้ในอนาคต

No comments:

Post a Comment