Hive Window Functions

From binaryoption
Jump to navigation Jump to search
Баннер1

```wiki

دوال النوافذ في HiveQL

دوال النوافذ (Window Functions) في HiveQL هي مجموعة قوية من الأدوات التي تسمح بإجراء حسابات على مجموعة من الصفوف المرتبطة بالصف الحالي، دون الحاجة إلى تجميع البيانات. على عكس دوال التجميع (Aggregate Functions) مثل `SUM` أو `AVG` التي تُرجع قيمة واحدة لكل مجموعة، تُرجع دوال النوافذ قيمة لكل صف في المجموعة، بناءً على نافذة محددة. هذا يجعلها مفيدة جدًا في مهام مثل حساب الترتيب، المتوسط المتحرك، التراكميات، وغيرها.

المفاهيم الأساسية

  • النافذة (Window): مجموعة من الصفوف المرتبطة بالصف الحالي. يتم تحديد النافذة باستخدام عبارة `OVER`.
  • عبارة OVER: تحدد كيفية تقسيم البيانات وتحديد ترتيب الصفوف داخل كل قسم.
  • دالة النافذة: الدالة التي يتم تطبيقها على النافذة.
  • التقسيم (Partitioning): تقسيم البيانات إلى مجموعات فرعية بناءً على قيم عمود واحد أو أكثر.
  • الترتيب (Ordering): تحديد ترتيب الصفوف داخل كل قسم.

بناء الجملة

بشكل عام، يكون بناء الجملة لدوال النوافذ كالتالي:

```sql function_name() OVER (

 [PARTITION BY column1, column2, ...]
 [ORDER BY column3 [ASC | DESC], column4 [ASC | DESC], ...]
 [ROWS | RANGE BETWEEN frame_start AND frame_end]

) ```

  • `function_name()`: اسم دالة النافذة المراد استخدامها (مثل `ROW_NUMBER()`, `RANK()`, `SUM()`, `AVG()`).
  • `PARTITION BY`: يحدد الأعمدة التي سيتم استخدامها لتقسيم البيانات. إذا لم يتم تحديد `PARTITION BY`، فسيتم التعامل مع جميع البيانات كمجموعة واحدة.
  • `ORDER BY`: يحدد الأعمدة التي سيتم استخدامها لترتيب الصفوف داخل كل قسم. الترتيب مهم للعديد من دوال النوافذ.
  • `ROWS | RANGE`: يحدد إطار النافذة (Window Frame)، وهو مجموعة الصفوف التي سيتم تضمينها في الحساب. `ROWS` يحدد الإطار بناءً على عدد الصفوف، بينما `RANGE` يحدد الإطار بناءً على القيم. `BETWEEN frame_start AND frame_end` تحدد بداية ونهاية الإطار.

أنواع دوال النوافذ

هناك ثلاثة أنواع رئيسية من دوال النوافذ:

  • دوال الترتيب (Ranking Functions): تُستخدم لتحديد ترتيب الصفوف داخل كل قسم.
   *   `ROW_NUMBER()`: تُرجع رقم الصف لكل صف داخل القسم، بدءًا من 1.
   *   `RANK()`: تُرجع ترتيب الصف بناءً على قيم عمود معين. الصفوف التي لها نفس القيمة ستحصل على نفس الترتيب، مع ترك فجوات في الترتيب.
   *   `DENSE_RANK()`: تشبه `RANK()`، ولكنها لا تترك فجوات في الترتيب.
   *   `NTILE(n)`: تقسم الصفوف داخل كل قسم إلى `n` مجموعة متساوية قدر الإمكان، وتُرجع رقم المجموعة لكل صف.
  • دوال القيمة (Value Functions): تُستخدم للوصول إلى قيم الصفوف الأخرى داخل النافذة.
   *   `LAG(column, offset, default)`: تُرجع قيمة العمود من الصف السابق في النافذة. `offset` يحدد عدد الصفوف للرجوع للخلف، و `default` هي القيمة التي سيتم إرجاعها إذا لم يكن هناك صف سابق.
   *   `LEAD(column, offset, default)`: تُرجع قيمة العمود من الصف التالي في النافذة. `offset` يحدد عدد الصفوف للتقدم للأمام، و `default` هي القيمة التي سيتم إرجاعها إذا لم يكن هناك صف تالٍ.
   *   `FIRST_VALUE(column)`: تُرجع قيمة العمود من الصف الأول في النافذة.
   *   `LAST_VALUE(column)`: تُرجع قيمة العمود من الصف الأخير في النافذة.
  • دوال التجميع (Aggregate Functions): يمكن استخدام دوال التجميع كدوال نوافذ.
   *   `SUM()`: تُرجع مجموع قيم العمود داخل النافذة.
   *   `AVG()`: تُرجع متوسط قيم العمود داخل النافذة.
   *   `MIN()`: تُرجع الحد الأدنى لقيم العمود داخل النافذة.
   *   `MAX()`: تُرجع الحد الأقصى لقيم العمود داخل النافذة.
   *   `COUNT()`: تُرجع عدد الصفوف داخل النافذة.

أمثلة

لنفترض أن لدينا جدولًا يسمى `sales` يحتوي على الأعمدة التالية: `product_id`, `sale_date`, `amount`.

جدول المبيعات
التاريخ | المبلغ | 2023-01-01 | 100 | 2023-01-02 | 150 | 2023-01-03 | 200 | 2023-01-01 | 50 | 2023-01-02 | 75 | 2023-01-03 | 100 |
  • مثال 1: حساب الترتيب لكل منتج بناءً على المبلغ.

```sql SELECT

 product_id,
 sale_date,
 amount,
 RANK() OVER (PARTITION BY product_id ORDER BY amount DESC) AS rank

FROM

 sales;

```

هذا الاستعلام سيُرجع جدولًا جديدًا يحتوي على عمود إضافي يسمى `rank`، والذي يمثل ترتيب كل مبيعة داخل كل منتج بناءً على المبلغ.

  • مثال 2: حساب المتوسط المتحرك لمدة 3 أيام لكل منتج.

```sql SELECT

 product_id,
 sale_date,
 amount,
 AVG(amount) OVER (PARTITION BY product_id ORDER BY sale_date ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS moving_average

FROM

 sales;

```

هذا الاستعلام سيُرجع جدولًا جديدًا يحتوي على عمود إضافي يسمى `moving_average`، والذي يمثل المتوسط المتحرك للمبلغ لمدة 3 أيام لكل منتج.

  • مثال 3: حساب التراكمي للمبلغ لكل منتج.

```sql SELECT

 product_id,
 sale_date,
 amount,
 SUM(amount) OVER (PARTITION BY product_id ORDER BY sale_date) AS cumulative_amount

FROM

 sales;

```

هذا الاستعلام سيُرجع جدولًا جديدًا يحتوي على عمود إضافي يسمى `cumulative_amount`، والذي يمثل التراكمي للمبلغ لكل منتج حتى تاريخ المبيعة.

استخدامات دوال النوافذ

تستخدم دوال النوافذ في مجموعة واسعة من التطبيقات، بما في ذلك:

  • تحليل الاتجاهات (Trend Analysis): حساب المتوسطات المتحركة، الانحرافات المعيارية، وغيرها لتحديد الاتجاهات في البيانات.
  • تحليل المقارنة (Comparative Analysis): مقارنة قيم الصفوف المختلفة داخل كل قسم.
  • الكشف عن القيم المتطرفة (Outlier Detection): تحديد القيم التي تختلف بشكل كبير عن القيم الأخرى في النافذة.
  • توليد التقارير (Reporting): إنشاء تقارير تلخص البيانات بطرق مختلفة.

أداء دوال النوافذ

يمكن أن يكون لأداء دوال النوافذ تأثير كبير على أداء الاستعلامات. بعض النصائح لتحسين الأداء:

  • استخدم `PARTITION BY` بحكمة: تجنب تقسيم البيانات إلى مجموعات فرعية كبيرة جدًا.
  • استخدم `ORDER BY` فقط عند الحاجة: ترتيب البيانات يمكن أن يكون مكلفًا، لذا استخدمه فقط إذا كان ضروريًا.
  • استخدم إطارات النوافذ (Window Frames) المناسبة: حدد إطار النافذة بأصغر حجم ممكن لتحقيق النتائج المرجوة.

دوال النوافذ في سياق الخيارات الثنائية

على الرغم من أن دوال النوافذ في HiveQL ليست مرتبطة بشكل مباشر بالخيارات الثنائية، إلا أنها يمكن أن تكون مفيدة في تحليل البيانات المستخدمة في تطوير استراتيجيات التداول. على سبيل المثال، يمكن استخدامها لتحليل بيانات الأسعار التاريخية، وحساب المتوسطات المتحركة، وتحديد الاتجاهات، وتقييم المخاطر.

  • **استراتيجيات المتوسط المتحرك (Moving Average Strategies):** دوال النوافذ تسمح بحساب المتوسطات المتحركة المختلفة (البسيطة، الأسية، الموزونة) بسهولة. هذه المتوسطات تستخدم على نطاق واسع في استراتيجيات تداول الخيارات الثنائية.
  • **استراتيجيات الاختراق (Breakout Strategies):** يمكن استخدام دوال النوافذ لتحديد مستويات الدعم والمقاومة الديناميكية.
  • **تحليل حجم التداول (Volume Analysis):** يمكن استخدام دوال النوافذ لتحليل حجم التداول المتحرك وتحديد التغيرات في النشاط.
  • **مؤشر القوة النسبية (RSI):** يمكن استخدام دوال النوافذ لحساب RSI بناءً على نافذة زمنية محددة.
  • **مؤشر الماكد (MACD):** يمكن استخدام دوال النوافذ لحساب خطوط الماكد والإشارة.
  • **استراتيجية بولينجر باندز (Bollinger Bands):** يمكن استخدام دوال النوافذ لحساب الانحراف المعياري وحساب نطاقات بولينجر.
  • **استراتيجية Ichimoku Cloud:** يمكن استخدام دوال النوافذ لحساب مكونات Ichimoku Cloud.
  • **استراتيجية Fibonacci Retracements:** يمكن استخدام دوال النوافذ لتحديد مستويات Fibonacci الديناميكية.
  • **استراتيجية Pivot Points:** يمكن استخدام دوال النوافذ لحساب Pivot Points بناءً على بيانات تاريخية.
  • **استراتيجية Donchian Channels:** يمكن استخدام دوال النوافذ لحساب Donchian Channels.
  • **استراتيجية Parabolic SAR:** يمكن استخدام دوال النوافذ لحساب Parabolic SAR.
  • **استراتيجية Three Moving Averages:** يمكن استخدام دوال النوافذ لحساب ثلاثة متوسطات متحركة مختلفة.
  • **استراتيجية Price Action:** تحليل أنماط الشموع اليابانية باستخدام دوال النوافذ.
  • **استراتيجية Elliott Wave:** تحديد موجات Elliott باستخدام دوال النوافذ.
  • **استراتيجية Gann Angles:** حساب زوايا Gann باستخدام دوال النوافذ.
  • **استراتيجية Harmonic Patterns:** تحديد الأنماط التوافقية باستخدام دوال النوافذ.
  • **تحليل حجم دفتر الأوامر (Order Book Volume Analysis):** تحليل عمق السوق باستخدام دوال النوافذ.
  • **تحليل المشاعر (Sentiment Analysis):** قياس المشاعر السائدة في السوق باستخدام دوال النوافذ.
  • **تحليل الارتباط (Correlation Analysis):** تحديد العلاقات بين الأصول المختلفة باستخدام دوال النوافذ.
  • **تحليل الانحدار (Regression Analysis):** توقع الأسعار المستقبلية باستخدام دوال النوافذ.
  • **التحليل الفني (Technical Analysis):** تطبيق مجموعة واسعة من المؤشرات الفنية باستخدام دوال النوافذ.
  • **إدارة المخاطر (Risk Management):** حساب مقاييس المخاطر المختلفة باستخدام دوال النوافذ.
  • **تحسين المحفظة (Portfolio Optimization):** تحسين تخصيص الأصول باستخدام دوال النوافذ.
  • **التعلم الآلي (Machine Learning):** استخدام دوال النوافذ كمهندسة ميزات (Feature Engineering) لنماذج التعلم الآلي.

الخلاصة

دوال النوافذ هي أداة قوية ومرنة في HiveQL يمكن استخدامها لحل مجموعة واسعة من المشكلات التحليلية. من خلال فهم المفاهيم الأساسية وبناء الجملة، يمكنك الاستفادة من هذه الدوال لتحسين أداء استعلاماتك والحصول على رؤى قيمة من بياناتك. ``` ```

ابدأ التداول الآن

سجّل في IQ Option (الحد الأدنى للإيداع 10 دولار) افتح حساباً في Pocket Option (الحد الأدنى للإيداع 5 دولار)

انضم إلى مجتمعنا

اشترك في قناة Telegram الخاصة بنا @strategybin لتصلك: ✓ إشارات تداول يومية ✓ تحليلات استراتيجية حصرية ✓ تنبيهات اتجاهات السوق ✓ مواد تعليمية للمبتدئين

Баннер