Database
 sql >> डेटाबेस >  >> RDS >> Database

रेडशिफ्ट में मूविंग एवरेज की गणना कैसे करें

रोलिंग एवरेज या मूविंग एवरेज एक उपयोगी मीट्रिक है जो आपको चलती अवधि (जैसे पिछले 7 दिनों की औसत बिक्री) पर औसत मूल्य का ट्रैक रखने में मदद करता है। समय के साथ चलती औसत की गणना करना दैनिक संख्याओं की साजिश रचने की तुलना में अधिक उचित प्रवृत्ति देता है। चूंकि रेडशिफ्ट में मूविंग एवरेज की गणना करने के लिए कोई अंतर्निहित फ़ंक्शन नहीं है, इसलिए इसे करने के लिए SQL क्वेरी है।

रेडशिफ्ट में मूविंग एवरेज की गणना कैसे करें

रेडशिफ्ट में मूविंग एवरेज की गणना करने के चरण यहां दिए गए हैं। मान लें कि आपके पास निम्न तालिका है जिसमें Redshift में दैनिक बिक्री की जानकारी है।

# create table sales(order_date date,sale int);

# insert into sales values('2020-01-01',20),
('2020-01-02',25),('2020-01-03',15),('2020-01-04',30),
('2020-01-05',20),('2020-01-10',20),('2020-01-06',25),
('2020-01-07',15),('2020-01-08',30),('2020-01-09',20);

# select * from sales;
+------------+------+
| order_date | sale |
+------------+------+
| 2020-01-01 |   20 |
| 2020-01-02 |   25 |
| 2020-01-03 |   15 |
| 2020-01-04 |   30 |
| 2020-01-05 |   20 |
| 2020-01-10 |   20 |
| 2020-01-06 |   25 |
| 2020-01-07 |   15 |
| 2020-01-08 |   30 |
| 2020-01-09 |   20 |
+------------+------+

मान लें कि आप पिछले 5 दिनों के लिए Redshift में मूविंग एवरेज की गणना करना चाहते हैं। Redshift (जो मूल रूप से Postgresql है) Redshift Window Functions की मदद से इसे वास्तव में आसान बनाता है। पिछले 5 दिनों के लिए चलती औसत की गणना करने के लिए यहां SQL क्वेरी है। हम इसे नीचे विस्तार से देखेंगे।

SELECT a.order_date,a.sale, 
       AVG(a.sale)
            OVER(ORDER BY a.order_date ROWS BETWEEN 4 PRECEDING AND CURRENT ROW) AS avg_sales
FROM sales a ;

यदि आप परिणामों को गोल करना चाहते हैं, तो आप ROUND फ़ंक्शन का उपयोग कर सकते हैं जैसा कि Redshift में चल रहे औसत की गणना करने के लिए दिखाया गया है

SELECT a.order_date,a.sale, 
       round(AVG(a.sale)
            OVER(ORDER BY a.order_date ROWS BETWEEN 4 PRECEDING AND CURRENT ROW),2) AS avg_sales
FROM sales a;

 order_date | sale | avg_sales
------------+------+---------------
 2020-01-01 |   20 |         20.00
 2020-01-02 |   25 |         22.50
 2020-01-03 |   15 |         20.00
 2020-01-04 |   30 |         22.50
 2020-01-05 |   20 |         22.00
 2020-01-06 |   25 |         23.00
 2020-01-07 |   15 |         21.00
 2020-01-08 |   30 |         24.00
 2020-01-09 |   20 |         22.00
 2020-01-10 |   20 |         22.00

आइए उपरोक्त क्वेरी को विस्तार से देखें। AVG फ़ंक्शन बिक्री . के औसत मूल्य की गणना करता है कॉलम। हालाँकि, जब हम इसका उपयोग WINDOW फंक्शन OVER के साथ करते हैं तो यह केवल उस विंडो के लिए औसत मान की गणना करता है जिसे हम परिभाषित करते हैं।

पहले हम अपने डेटा पर ORDER BY का उपयोग यह सुनिश्चित करने के लिए करते हैं कि पंक्तियों को कालानुक्रमिक रूप से क्रमबद्ध किया गया है। फिर हम ओवर फ़ंक्शन का उपयोग करके औसत के लिए हमारी विंडो को परिभाषित करते हैं, और 4 पूर्ववर्ती और वर्तमान पंक्ति के बीच पंक्तियों का उल्लेख करते हैं। अर्थात्, प्रत्येक पंक्ति के लिए, पिछली 4 पंक्तियों और वर्तमान पंक्ति के लिए औसत की गणना करें। चूंकि प्रत्येक पंक्ति के लिए विंडो फ्रेम में परिवर्तन होता है, केवल 4 दिनों से पहले और वर्तमान तिथि का उपयोग किया जाएगा।

आप उपरोक्त SQL क्वेरी में WHERE क्लॉज जोड़कर भी फ़िल्टर जोड़ सकते हैं।

 SELECT a.order_date,a.sale, 
       round(AVG(a.sale)
            OVER(ORDER BY a.order_date ROWS BETWEEN 4 PRECEDING AND CURRENT ROW),2) AS avg_sales
FROM sales a
WHERE condition;

यदि आप पिछले 30 दिनों/1 महीने के लिए Redshift में मूविंग एवरेज की गणना करना चाहते हैं, तो PRECEDING 29 ROWS AND CURRENT ROW का उपयोग करने के लिए उपरोक्त क्वेरी को संशोधित करें।

SELECT a.order_date,a.sale, 
       round(AVG(a.sale)
            OVER(ORDER BY a.order_date ROWS BETWEEN 29 PRECEDING AND CURRENT ROW),2) AS avg_sales
FROM sales a;

बोनस पढ़ें : पोस्टग्रेएसक्यूएल में पिवट टेबल कैसे बनाएं

पिछले 3 महीनों के लिए Redshift में मूविंग एवरेज की गणना कैसे करें

मान लें कि आपके पास दैनिक डेटा के बजाय मासिक बिक्री डेटा है, और आप पिछले 3 महीनों के रोलिंग औसत की गणना करना चाहते हैं।

# create table monthly_sales(order_month date,sale int);

postgres=# insert into monthly_sales values('2019-12-01',20),
           ('2020-01-30',25),('2020-02-28',15),('2020-03-31',30),
           ('2020-04-30',20),('2020-05-31',20),('2020-06-30',25),
           ('2020-07-31',15),('2020-08-31',30),('2020-09-30',20);

postgres=# select * from monthly_sales;
 order_month | sale
-------------+------
 2019-12-01  |   20
 2020-01-30  |   25
 2020-02-28  |   15
 2020-03-31  |   30
 2020-04-30  |   20
 2020-05-31  |   20
 2020-06-30  |   25
 2020-07-31  |   15
 2020-08-31  |   30
 2020-09-30  |   20

इस मामले में, हम रेडशिफ्ट में चलती औसत की गणना करने के लिए उसी तर्क का उपयोग करते हैं। आदेश_माह . द्वारा पहला आदेश कॉलम यह सुनिश्चित करने के लिए कि पंक्तियों को कालानुक्रमिक रूप से क्रमबद्ध किया गया है। फिर पहले 2 पंक्तियाँ और वर्तमान पंक्ति . के लिए औसत की गणना करें

 SELECT a.order_month,a.sale,
        round(AVG(a.sale)
             OVER(ORDER BY a.order_month ROWS BETWEEN 2 PRECEDING AND CURRENT ROW),2) AS avg_sales
 FROM monthly_sales a ;
 
 order_month | sale | avg_sales
-------------+------+-----------
 2019-12-01  |   20 |     20.00
 2020-01-30  |   25 |     22.50
 2020-02-28  |   15 |     20.00
 2020-03-31  |   30 |     23.33
 2020-04-30  |   20 |     21.67
 2020-05-31  |   20 |     23.33
 2020-06-30  |   25 |     21.67
 2020-07-31  |   15 |     20.00
 2020-08-31  |   30 |     23.33
 2020-09-30  |   20 |     21.67

बोनस पढ़ें : रेडशिफ्ट में रनिंग टोटल की गणना कैसे करें

आप उपरोक्त SQL क्वेरी में WHERE क्लॉज को शामिल करके फ़िल्टर भी जोड़ सकते हैं।

 SELECT a.order_month,a.sale,
        round(AVG(a.sale)
             OVER(ORDER BY a.order_month ROWS BETWEEN 2 PRECEDING AND CURRENT ROW),2) AS avg_sales
 FROM monthly_sales a
WHERE condition;

आप अपनी आवश्यकताओं के अनुसार Redshift में मूविंग एवरेज की गणना करने के लिए उपरोक्त क्वेरी को कस्टमाइज़ कर सकते हैं।

रेडशिफ्ट में मूविंग एवरेज की गणना करने के बाद, आप चार्टिंग टूल का उपयोग करके इसे लाइन चार्ट पर प्लॉट कर सकते हैं और इसे अपनी टीम के साथ साझा कर सकते हैं। यहां एक लाइन चार्ट का उदाहरण दिया गया है जो Ubiq का उपयोग करके बनाए गए मूविंग एवरेज की कल्पना करता है।

यदि आप Redshift डेटाबेस से चार्ट, डैशबोर्ड और रिपोर्ट बनाना चाहते हैं, तो आप Ubiq आज़मा सकते हैं। हम 14-दिन का निःशुल्क परीक्षण प्रदान करते हैं।

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. अनदेखी टी-एसक्यूएल रत्न

  2. डिफ़ॉल्ट ट्रेस हटाना - भाग 3

  3. टी-एसक्यूएल में दिनांक और समय प्रारूप कैसे बदलें

  4. अल्फा एनीवेयर में Salesforce.com के साथ कार्य करना

  5. डेटाबेस डिजाइन पर 13 ब्लॉग लेख सर्वोत्तम अभ्यास और युक्तियाँ