الانتقال إلى المحتوى الرئيسي
عند العمل مع بيانات السلاسل الزمنية، قد تظهر فجوات في البيانات بسبب القيم المفقودة أو فترات عدم النشاط. وعادةً لا نريد أن تظهر هذه الفجوات عند إجراء استعلام على البيانات. في هذه الحالة، قد تكون عبارة WITH FILL مفيدة. يوضح هذا الدليل كيفية استخدام WITH FILL لملء الفجوات في بيانات السلاسل الزمنية.

الإعداد

تخيّل أن لدينا الجدول التالي الذي يخزّن البيانات الوصفية للصور المُولَّدة بواسطة خدمة صور قائمة على الذكاء الاصطناعي التوليدي:
لنستورد بعض السجلات:

الاستعلام حسب bucket

سنستعرض الصور التي أُنشئت بين 00:24:03 و00:24:04 في 24 مارس 2023، لذا لنُنشئ بعض المعلمات لهاتين النقطتين الزمنيتين:
بعد ذلك، سنكتب استعلامًا يُجمِّع البيانات في bucket قدرها 100 مللي ثانية ويُرجع عدد الصور المُنشأة ضمن كل bucket:
تتضمن مجموعة النتائج فقط قيم bucket التي أُنشئت فيها صورة، ولكن في تحليل السلاسل الزمنية، قد نرغب في إرجاع كل bucket بطول 100 مللي ثانية، حتى إن لم تكن تحتوي على أي سجلات.

WITH FILL

يمكننا استخدام عبارة WITH FILL لملء هذه الفجوات. وسنحدّد أيضًا STEP، وهو حجم الفجوات التي نريد ملأها. وتكون القيمة الافتراضية هنا ثانية واحدة لأنواع DateTime، لكننا نريد ملء فجوات بطول 100ms، لذا سنستخدم فاصلًا زمنيًا مقداره 100ms بوصفه قيمة الخطوة:
يمكننا أن نرى أن الفجوات قد مُلئت بقيم 0 في العمود count.

WITH FILL…FROM

ومع ذلك، ما تزال هناك فجوة في بداية النطاق الزمني، ويمكننا معالجة ذلك بتحديد FROM:
يمكننا أن نرى من النتائج أن جميع قيم bucket من 00:24:03.000 إلى 00:24:03.500 باتت تظهر الآن.

WITH FILL…TO

ما زالت بعض قيم bucket مفقودة من نهاية النطاق الزمني، لكن يمكننا ملؤها بتحديد قيمة TO. TO ليست شاملة، لذا سنضيف مقدارًا صغيرًا إلى وقت الانتهاء للتأكد من تضمينه:
تم الآن ملء جميع الفجوات، وأصبح لدينا سجل لكل bucket بطول 100 مللي ثانية من 00:24:03.000 إلى 00:24:05.000.

العدّ التراكمي

لنفترض أننا نريد الآن تتبّع العدد التراكمي للصور المُنشأة عبر الـ buckets. يمكننا القيام بذلك بإضافة عمود cumulative، كما هو موضح أدناه:
قيم العمود التراكمي لا تظهر بالشكل الذي نريده.

WITH FILL…INTERPOLATE

كل الصفوف التي تحتوي على 0 في العمود count تكون قيمة العمود التراكمي فيها أيضًا 0، بينما نفضّل أن يستخدم هذا العمود القيمة السابقة من العمود cumulative. يمكننا تحقيق ذلك باستخدام البند INTERPOLATE، كما هو موضح أدناه:
هذا يبدو أفضل بكثير. والآن، لوضع اللمسة الأخيرة عليه، لنُضِف مخططًا شريطيًا باستخدام الدالة bar، مع عدم نسيان إضافة عمودنا الجديد إلى عبارة INTERPOLATE.
آخر تعديل في ٢٥ يونيو ٢٠٢٦