العربية

أطلق العنان لقوة بيانات السلاسل الزمنية باستخدام دوال النافذة. هذا الدليل يغطي المفاهيم الأساسية والأمثلة العملية والتقنيات المتقدمة لتحليل البيانات.

تحليلات السلاسل الزمنية: إتقان دوال النافذة لرؤى البيانات

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

فهم بيانات السلاسل الزمنية

بيانات السلاسل الزمنية هي تسلسل لنقاط بيانات مفهرسة بترتيب زمني. يمكن لنقاط البيانات تمثيل مقاييس مختلفة، مثل:

يتضمن تحليل بيانات السلاسل الزمنية تحديد الأنماط والاتجاهات والموسمية، والتي يمكن استخدامها لتوقع القيم المستقبلية، واكتشاف الحالات الشاذة، وتحسين العمليات التجارية.

مقدمة إلى دوال النافذة

تسمح لك دوال النافذة، المعروفة أيضًا بتجميعات النافذة أو الدوال التحليلية، بإجراء حسابات على مجموعة من الصفوف المتعلقة بالصف الحالي، دون تجميع الصفوف في مجموعة نتائج واحدة مثل الدوال التجميعية التقليدية (مثل SUM، AVG، COUNT). هذه القدرة مفيدة بشكل خاص لتحليل السلاسل الزمنية، حيث تحتاج غالبًا إلى حساب المتوسطات المتحركة، والمجاميع التراكمية، والمقاييس الأخرى المستندة إلى الوقت.

تتكون دالة النافذة عادةً من المكونات التالية:

  1. الدالة: العملية الحسابية المراد إجراؤها (مثل AVG، SUM، RANK، LAG).
  2. عبارة OVER: تحدد نافذة الصفوف المستخدمة في الحساب.
  3. عبارة PARTITION BY (اختياري): تقسم البيانات إلى أقسام، ويتم تطبيق دالة النافذة على كل قسم بشكل مستقل.
  4. عبارة ORDER BY (اختياري): تحدد ترتيب الصفوف داخل كل قسم.
  5. عبارة ROWS/RANGE (اختياري): تحدد إطار النافذة، وهو مجموعة الصفوف بالنسبة للصف الحالي المستخدمة في الحساب.

المفاهيم الأساسية وبناء الجملة

1. عبارة OVER()

عبارة OVER() هي جوهر دالة النافذة. تحدد نافذة الصفوف التي ستعمل عليها الدالة. عبارة OVER() بسيطة بدون وسيطات ستعتبر مجموعة النتائج بأكملها هي النافذة. على سبيل المثال:

مثال SQL:

SELECT
  date,
  sales,
  AVG(sales) OVER ()
FROM
  sales_data;

يحسب هذا الاستعلام متوسط المبيعات عبر جميع التواريخ في جدول sales_data.

2. PARTITION BY

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

مثال SQL:

SELECT
  date,
  product_id,
  sales,
  AVG(sales) OVER (PARTITION BY product_id)
FROM
  sales_data;

يحسب هذا الاستعلام متوسط المبيعات لكل منتج على حدة.

3. ORDER BY

تحدد عبارة ORDER BY ترتيب الصفوف داخل كل قسم. هذا ضروري لحساب المجاميع التشغيلية والمتوسطات المتحركة والمقاييس الأخرى المستندة إلى الوقت.

مثال SQL:

SELECT
  date,
  sales,
  SUM(sales) OVER (ORDER BY date)
FROM
  sales_data;

يحسب هذا الاستعلام المجموع التراكمي للمبيعات بمرور الوقت.

4. ROWS/RANGE

تحدد عبارتا ROWS و RANGE إطار النافذة، وهو مجموعة الصفوف بالنسبة للصف الحالي المستخدمة في الحساب. تحدد عبارة ROWS إطار النافذة بناءً على رقم الصف الفعلي، بينما تحدد عبارة RANGE إطار النافذة بناءً على قيم عمود ORDER BY.

مثال ROWS:

SELECT
  date,
  sales,
  AVG(sales) OVER (ORDER BY date ROWS BETWEEN 2 PRECEDING AND CURRENT ROW)
FROM
  sales_data;

يحسب هذا الاستعلام المتوسط المتحرك للمبيعات على مدار الأيام الثلاثة الماضية (بما في ذلك اليوم الحالي).

مثال RANGE:

SELECT
  date,
  sales,
  AVG(sales) OVER (ORDER BY date RANGE BETWEEN INTERVAL '2' DAY PRECEDING AND CURRENT ROW)
FROM
  sales_data;

يحسب هذا الاستعلام المتوسط المتحرك للمبيعات على مدار اليومين الماضيين (بما في ذلك اليوم الحالي). لاحظ أن `RANGE` يتطلب عمودًا مرتبًا يكون من نوع بيانات رقمي أو تاريخ/وقت.

دوال النافذة الشائعة لتحليل السلاسل الزمنية

1. المتوسط المتحرك

المتوسط المتحرك هو تقنية شائعة الاستخدام لتنعيم التقلبات قصيرة الأجل في بيانات السلاسل الزمنية وإبراز الاتجاهات طويلة الأجل. يتم حسابه عن طريق حساب متوسط القيم عبر نافذة زمنية محددة.

مثال SQL:

SELECT
  date,
  sales,
  AVG(sales) OVER (ORDER BY date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS moving_average_7_days
FROM
  sales_data;

يحسب هذا الاستعلام المتوسط المتحرك للمبيعات لمدة 7 أيام.

مثال Python (باستخدام Pandas):

import pandas as pd

# بافتراض أن لديك إطار بيانات Pandas يسمى 'sales_df' مع أعمدة 'date' و 'sales'

sales_df['moving_average_7_days'] = sales_df['sales'].rolling(window=7).mean()

مثال تطبيق عالمي: يمكن لمتاجر التجزئة متعددة الجنسيات استخدام متوسط متحرك لمدة 30 يومًا لتنعيم تقلبات المبيعات اليومية وتحديد اتجاهات المبيعات الأساسية عبر مناطق مختلفة.

2. المجموع التراكمي

يحسب المجموع التراكمي، المعروف أيضًا بالمجموع التشغيلي، مجموع القيم حتى الصف الحالي. إنه مفيد لتتبع القيمة الإجمالية المتراكمة بمرور الوقت.

مثال SQL:

SELECT
  date,
  sales,
  SUM(sales) OVER (ORDER BY date) AS cumulative_sales
FROM
  sales_data;

يحسب هذا الاستعلام المجموع التراكمي للمبيعات بمرور الوقت.

مثال Python (باستخدام Pandas):

import pandas as pd

# بافتراض أن لديك إطار بيانات Pandas يسمى 'sales_df' مع أعمدة 'date' و 'sales'

sales_df['cumulative_sales'] = sales_df['sales'].cumsum()

مثال تطبيق عالمي: يمكن لشركة تجارة إلكترونية دولية استخدام المبيعات التراكمية لتتبع إجمالي الإيرادات المتولدة من إطلاق منتج جديد في أسواق مختلفة.

3. التقدم والتأخر (Lead and Lag)

تسمح لك دالتا LEAD و LAG بالوصول إلى البيانات من الصفوف اللاحقة أو السابقة، على التوالي. وهي مفيدة لحساب التغييرات من فترة إلى أخرى، وتحديد الاتجاهات، ومقارنة القيم عبر فترات زمنية مختلفة.

مثال SQL:

SELECT
  date,
  sales,
  LAG(sales, 1, 0) OVER (ORDER BY date) AS previous_day_sales,
  sales - LAG(sales, 1, 0) OVER (ORDER BY date) AS sales_difference
FROM
  sales_data;

يحسب هذا الاستعلام فرق المبيعات مقارنة باليوم السابق. تسترجع الدالة `LAG(sales, 1, 0)` قيمة المبيعات من الصف السابق (الإزاحة 1)، وإذا لم يكن هناك صف سابق (على سبيل المثال، الصف الأول)، فإنها تُرجع 0 (القيمة الافتراضية).

مثال Python (باستخدام Pandas):

import pandas as pd

# بافتراض أن لديك إطار بيانات Pandas يسمى 'sales_df' مع أعمدة 'date' و 'sales'

sales_df['previous_day_sales'] = sales_df['sales'].shift(1)
sales_df['sales_difference'] = sales_df['previous_day_sales'].fillna(0)

مثال تطبيق عالمي: يمكن لشركة طيران عالمية استخدام دوال التقدم والتأخر لمقارنة مبيعات التذاكر لنفس المسار عبر أسابيع مختلفة وتحديد تقلبات الطلب المحتملة.

4. الترتيب والترتيب الكثيف (Rank and Dense Rank)

تقوم دالتا RANK() و DENSE_RANK() بتعيين رتبة لكل صف داخل قسم بناءً على الترتيب المحدد. RANK() تعين رتبًا بفجوات (مثل 1، 2، 2، 4)، بينما DENSE_RANK() تعين رتبًا بدون فجوات (مثل 1، 2، 2، 3).

مثال SQL:

SELECT
  date,
  sales,
  RANK() OVER (ORDER BY sales DESC) AS sales_rank,
  DENSE_RANK() OVER (ORDER BY sales DESC) AS sales_dense_rank
FROM
  sales_data;

يرتب هذا الاستعلام قيم المبيعات بترتيب تنازلي.

مثال تطبيق عالمي: يمكن لسوق عالمي عبر الإنترنت استخدام دوال الترتيب لتحديد المنتجات الأكثر مبيعًا في كل بلد أو منطقة.

التقنيات والتطبيقات المتقدمة

1. دمج دوال النافذة

يمكن دمج دوال النافذة لإجراء حسابات أكثر تعقيدًا. على سبيل المثال، يمكنك حساب المتوسط المتحرك للمجموع التراكمي.

مثال SQL:

SELECT
  date,
  sales,
  AVG(cumulative_sales) OVER (ORDER BY date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS moving_average_cumulative_sales
FROM
  (
    SELECT
      date,
      sales,
      SUM(sales) OVER (ORDER BY date) AS cumulative_sales
    FROM
      sales_data
  ) AS subquery;

2. استخدام دوال النافذة مع التجميع المشروط

يمكنك استخدام دوال النافذة بالاقتران مع التجميع المشروط (مثل استخدام عبارات CASE) لإجراء حسابات بناءً على شروط محددة.

مثال SQL:

SELECT
  date,
  sales,
  AVG(CASE WHEN sales > 100 THEN sales ELSE NULL END) OVER (ORDER BY date ROWS BETWEEN 6 PRECEDING AND CURRENT ROW) AS moving_average_high_sales
FROM
  sales_data;

يحسب هذا الاستعلام المتوسط المتحرك للمبيعات فقط للأيام التي تزيد فيها المبيعات عن 100.

3. تحليل مكونات السلاسل الزمنية

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

4. اكتشاف الحالات الشاذة

يمكن استخدام دوال النافذة لاكتشاف الحالات الشاذة في بيانات السلاسل الزمنية عن طريق حساب المتوسطات المتحركة والانحرافات المعيارية. يمكن تمييز نقاط البيانات التي تقع خارج نطاق معين (على سبيل المثال، +/- 3 انحرافات معيارية عن المتوسط المتحرك) كحالات شاذة.

أمثلة عملية عبر الصناعات

1. المالية

2. التجزئة

3. التصنيع

4. الرعاية الصحية

اختيار الأداة المناسبة

تتوفر دوال النافذة في أدوات معالجة البيانات ولغات البرمجة المختلفة، بما في ذلك:

يعتمد اختيار الأداة على احتياجاتك الخاصة وخبرتك التقنية. يعد SQL مناسبًا للبيانات المخزنة في قواعد البيانات العلائقية، بينما تعد Python و Spark أكثر مرونة لمعالجة مجموعات البيانات الكبيرة وإجراء التحليل المعقد.

أفضل الممارسات

الخلاصة

تعد دوال النافذة أداة قوية لتحليل السلاسل الزمنية، مما يتيح لك حساب المتوسطات المتحركة والمجاميع التراكمية وقيم التقدم/التأخر والمقاييس الأخرى المستندة إلى الوقت. من خلال إتقان دوال النافذة، يمكنك فتح رؤى قيمة من بيانات السلاسل الزمنية الخاصة بك واتخاذ قرارات أكثر استنارة. سواء كنت تقوم بتحليل البيانات المالية أو بيانات المبيعات أو بيانات المستشعرات أو بيانات حركة مرور الويب، يمكن أن تساعدك دوال النافذة في تحديد الأنماط والاتجاهات والحالات الشاذة التي يصعب اكتشافها باستخدام تقنيات التجميع التقليدية. من خلال فهم المفاهيم وبناء الجملة الأساسية لدوال النافذة واتباع أفضل الممارسات، يمكنك الاستفادة منها بفعالية لحل مجموعة واسعة من المشكلات الواقعية عبر مختلف الصناعات.