المُدرَّج التكراري
values — Expression يُنتج قيم الإدخال.
المعلمات
number_of_bins — الحد الأقصى لعدد الفئات في المُدرَّج التكراري. تحسب الدالة عدد الفئات تلقائيًا. وتحاول الوصول إلى العدد المحدد من الفئات، ولكن إذا تعذر ذلك، تستخدم عددًا أقل من الفئات.
القيم المُعادة
-
Array من Tuples بالتنسيق التالي:
lower— الحد الأدنى للفئة.upper— الحد الأعلى للفئة.height— الارتفاع المحسوب للفئة.
sequenceMatch
قد تَرِد الأحداث التي تقع في الثانية نفسها ضمن التسلسل بترتيب غير محدد، مما يؤثر في النتيجة.
-
timestamp— العمود الذي يُعتبر أنه يحتوي على بيانات الوقت. أنواع البيانات المعتادة هيDateوDateTime. ويمكنك أيضًا استخدام أيٍّ من أنواع بيانات UInt المدعومة. -
cond1،cond2— الشروط التي تصف تسلسل الأحداث. نوع البيانات:UInt8. يمكنك تمرير ما يصل إلى 32 وسيط شرط. لا تأخذ الدالة في الحسبان إلا الأحداث الموصوفة في هذه الشروط. وإذا كان التسلسل يحتوي على بيانات غير موصوفة في أي شرط، فتتخطاها الدالة.
pattern— سلسلة النمط. راجع بنية النمط.
- 1، إذا تمت مطابقة النمط.
- 0، إذا لم تتم مطابقة النمط.
UInt8.
بنية النمط
-
(?N)— يطابق وسيطة الشرط في الموضعN. تُرقَّم الشروط ضمن النطاق[1, 32]. على سبيل المثال، يطابق(?1)الوسيطة المُمرَّرة إلى المعلَمةcond1. -
.*— يطابق أي عدد من الأحداث. لا تحتاج إلى وسيطات شرطية لمطابقة هذا العنصر من النمط. -
(?t operator value)— يحدّد الزمن بالثواني الذي يجب أن يفصل بين حدثين. على سبيل المثال، يطابق النمط(?1)(?t>1800)(?2)الأحداث التي يفصل بين وقوعها أكثر من 1800 ثانية. ويمكن أن يقع بين هذين الحدثين أي عدد من الأحداث. يمكنك استخدام المعاملات>=,>,<,<=,==.
t:
sequenceCount
قد تَرِد الأحداث التي تقع في الثانية نفسها ضمن التسلسل بترتيب غير معرّف، مما يؤثر في النتيجة.
-
timestamp— العمود الذي يُعتبر أنه يحتوي على بيانات زمنية. تشمل أنواع البيانات المعتادةDateوDateTime. كما يمكنك استخدام أيًّا من أنواع بيانات UInt المدعومة. -
cond1,cond2— شروط تصف سلسلة الأحداث. نوع البيانات:UInt8. يمكنك تمرير ما يصل إلى 32 وسيط شرط. لا تأخذ الدالة في الحسبان إلا الأحداث الموصوفة في هذه الشروط. وإذا احتوى التسلسل على بيانات غير موصوفة في أي شرط، فتتخطّاها الدالة.
pattern— سلسلة النمط. راجع بنية النمط.
- عدد سلاسل الأحداث غير المتداخلة التي تمت مطابقتها.
UInt64.
مثال
لننظر في البيانات الموجودة في الجدول t:
sequenceMatchEvents
قد تَرِد الأحداث التي تقع في الثانية نفسها ضمن التسلسل بترتيب غير محدد، مما يؤثر في النتيجة.
-
timestamp— العمود الذي يُعدّ محتويًا على بيانات الوقت. أنواع البيانات الشائعة هيDateوDateTime. يمكنك أيضًا استخدام أيٍّ من أنواع بيانات UInt المدعومة. -
cond1,cond2— شروط تصف سلسلة الأحداث. نوع البيانات:UInt8. يمكنك تمرير ما يصل إلى 32 وسيطة شرط. لا تأخذ الدالة في الاعتبار إلا الأحداث الموصوفة في هذه الشروط. إذا كان التسلسل يحتوي على بيانات غير موصوفة في أي شرط، فإن الدالة تتخطّاها.
pattern— سلسلة النمط. راجع بنية النمط.
- مصفوفة من الطوابع الزمنية لوسيطات الشروط المطابِقة (?N) من سلسلة الأحداث. يطابق كل موضع في المصفوفة موضع وسيطة الشرط في النمط
t:
windowFunnel
- تبحث الدالة عن البيانات التي تستوفي الشرط الأول في السلسلة، وتضبط عدّاد الأحداث على 1. وهذه هي اللحظة التي تبدأ فيها النافذة المنزلقة.
- إذا حدثت أحداث من السلسلة بشكل متسلسل داخل النافذة، فسيزداد العدّاد. وإذا انقطع تسلسل الأحداث، فلن يزداد العدّاد.
- إذا كانت البيانات تحتوي على عدة سلاسل أحداث بمراحل اكتمال مختلفة، فلن تُخرج الدالة إلا طول أطول سلسلة.
timestamp— اسم العمود الذي يحتوي على الطابع الزمني. أنواع البيانات المدعومة: Date، وDateTime، وأنواع الأعداد الصحيحة غير الموقعة الأخرى (لاحظ أنه رغم أنtimestampيدعم النوعUInt64، فإن قيمته لا يمكن أن تتجاوز الحد الأقصى لـ Int64، وهو 2^63 - 1).cond— الشروط أو البيانات التي تصف سلسلة الأحداث. UInt8.
window— طول النافذة المنزلقة، وهو الفاصل الزمني بين الشرط الأول والشرط الأخير. تعتمد وحدةwindowعلىtimestampنفسه وتختلف وفقًا له. ويُحدَّد ذلك باستخدام التعبيرtimestamp of cond1 <= timestamp of cond2 <= ... <= timestamp of condN <= timestamp of cond1 + window.mode— وسيط اختياري. يمكن تعيين وضع واحد أو أكثر.'strict_deduplication'— إذا تحقق الشرط نفسه ضمن تسلسل الأحداث، فإن هذا الحدث المكرر يوقف المعالجة اللاحقة. ملاحظة: قد يعمل هذا بشكل غير متوقع إذا تحققت عدة شروط للحدث نفسه.'strict_order'— لا يسمح بتدخل أحداث أخرى. على سبيل المثال، في الحالةA->B->D->C، يتوقف عن العثور علىA->B->CعندDويكون الحد الأقصى لمستوى الحدث هو 2.'strict_increase'— يطبّق الشروط فقط على الأحداث ذات الطوابع الزمنية المتزايدة تصاعديًا بشكل صارم.'strict_once'— يحتسب كل حدث مرة واحدة فقط في السلسلة حتى إذا استوفى الشرط عدة مرات.'allow_reentry'— يتجاهل الأحداث التي تنتهك الترتيب الصارم. على سبيل المثال، في الحالة A->A->B->C، يعثر على A->B->C بتجاهل A الزائد ويكون الحد الأقصى لمستوى الحدث هو 3.
Integer.
مثال
حدّد ما إذا كانت فترة زمنية معينة كافية لكي يختار المستخدم هاتفًا ويشتريه مرتين من المتجر الإلكتروني.
عيّن سلسلة الأحداث التالية:
- سجّل المستخدم الدخول إلى حسابه في المتجر (
eventID = 1003). - بحث المستخدم عن هاتف (
eventID = 1007, product = 'phone'). - قدّم المستخدم طلبًا (
eventID = 1009). - أعاد المستخدم الطلب مرة أخرى (
eventID = 1010).
user_id الوصول ضمن التسلسل خلال الفترة بين يناير وفبراير من عام 2019.
Query
Response
allow_reentry مع أنماط إعادة الدخول للمستخدم:
retention
UInt8، تشير إلى ما إذا كان شرط معيّن قد تحقق للحدث.
يمكن تحديد أي شرط كوسيطة (كما في WHERE).
تُطبَّق الشروط، باستثناء الشرط الأول، على شكل أزواج: تكون نتيجة الشرط الثاني true إذا كان الشرطان الأول والثاني true، وتكون نتيجة الشرط الثالث إذا كان الشرطان الأول والثالث true، وهكذا.
الصيغة
cond— تعبير يُرجِع نتيجة من نوعUInt8(1 أو 0).
- 1 — تم استيفاء الشرط لهذا الحدث.
- 0 — لم يتم استيفاء الشرط لهذا الحدث.
UInt8.
مثال
لنأخذ مثالًا على حساب الدالة retention لتحديد زيارات الموقع.
1. أنشئ جدولًا لتوضيح المثال.
Query
Query
Response
uid باستخدام الدالة retention.
Query
Response
Query
Response
r1- عدد الزوار المميزين الذين زاروا الموقع في 2020-01-01 (الشرطcond1).r2- عدد الزوار المميزين الذين زاروا الموقع خلال فترة زمنية محددة بين 2020-01-01 و2020-01-02 (الشرطانcond1وcond2).r3- عدد الزوار المميزين الذين زاروا الموقع خلال فترة زمنية محددة في 2020-01-01 و2020-01-03 (الشرطانcond1وcond3).
uniqUpTo(N)(x)
N. إذا كان عدد قيم الوسيطة المختلفة أكبر من N، فستُرجع هذه الدالة N + 1، وإلا فإنها تحسب القيمة الدقيقة.
يُنصح باستخدامها مع القيم الصغيرة لـ N، حتى 10. الحد الأقصى لقيمة N هو 100.
بالنسبة إلى حالة الدالة التجميعية، تستخدم هذه الدالة مقدارًا من الذاكرة يساوي 1 + N * حجم قيمة واحدة بالبايت.
وعند التعامل مع السلاسل النصية، تخزّن هذه الدالة قيمة hash غير تشفيرية بحجم 8 بايتات؛ ويكون الحساب تقريبيًا للسلاسل النصية.
على سبيل المثال، إذا كان لديك جدول يسجّل كل عبارة بحث يُدخلها المستخدمون على موقعك الإلكتروني. يمثّل كل صف في الجدول عبارةَ بحث واحدة، مع أعمدة لمعرّف المستخدم، وعبارة البحث، والطابع الزمني للاستعلام. يمكنك استخدام uniqUpTo لإنشاء تقرير يعرض فقط الكلمات المفتاحية التي أدت إلى 5 مستخدمين فريدين على الأقل.
uniqUpTo(4)(UserID) عدد قيم UserID الفريدة لكل SearchPhrase، لكنه لا يحسب أكثر من 4 قيم فريدة. إذا كان هناك أكثر من 4 قيم UserID فريدة لعبارة SearchPhrase، فستُرجع الدالة 5 (4 + 1). بعد ذلك، تُصفّي عبارة HAVING قيم SearchPhrase التي يكون فيها عدد قيم UserID الفريدة أقل من 5. ويمنحك هذا قائمة بالكلمات المفتاحية للبحث التي استخدمها 5 مستخدمين مختلفين على الأقل.
sumMapFiltered
sumMapFiltered(keys_to_keep)(keys, values)
المعلمات
keys_to_keep: Array من المفاتيح المستخدمة في التصفية.keys: Array من المفاتيح.values: Array من القيم.
- يعيد Tuple مكوّنًا من مصفوفتين: المفاتيح بترتيب مرتب، والقيم المجمّعة للمفاتيح المقابلة.
Query
Query
Response
sumMapFilteredWithOverflow
sumMapFilteredWithOverflow(keys_to_keep)(keys, values)
المعاملات
keys_to_keep: Array من المفاتيح لاستخدامها في التصفية.keys: Array من المفاتيح.values: Array من القيم.
- تُرجع Tuple من مصفوفتين: المفاتيح بترتيب فرز، والقيم المجمّعة للمفاتيح المقابلة.
sum_map، وندرِج فيه بعض البيانات، ثم نستخدم كلًا من sumMapFilteredWithOverflow وsumMapFiltered والدالة toTypeName لمقارنة النتيجة. ونظرًا لأن requests كان من النوع UInt8 في الجدول المُنشأ، فقد رقّت sumMapFiltered نوع القيم المجمّعة إلى UInt64 لتجنّب overflow، في حين أبقت sumMapFilteredWithOverflow النوع UInt8، وهو غير كبير بما يكفي لتخزين النتيجة، أي إن overflow قد حدث.
Query
Query
Query
Response
Response
sequenceNextNode
SET allow_experimental_funnel_functions = 1.
الصياغة
-
direction— يُستخدم لتحديد الاتجاه.- forward — التحرك إلى الأمام.
- backward — التحرك إلى الخلف.
-
base— يُستخدم لتعيين النقطة المرجعية.- head — تعيين النقطة المرجعية إلى الحدث الأول.
- tail — تعيين النقطة المرجعية إلى الحدث الأخير.
- first_match — تعيين النقطة المرجعية إلى أول
event1مطابق. - last_match — تعيين النقطة المرجعية إلى آخر
event1مطابق.
timestamp— اسم العمود الذي يحتوي على الطابع الزمني. أنواع البيانات المدعومة: Date، وDateTime، وأنواع الأعداد الصحيحة الأخرى غير الموقعة.event_column— اسم العمود الذي يحتوي على قيمة الحدث التالي المراد إرجاعها. أنواع البيانات المدعومة: String وNullable(String).base_condition— الشرط الذي يجب أن تستوفيه النقطة المرجعية.event1,event2, … — شروط تصف سلسلة الأحداث. UInt8.
event_column[next_index]— إذا تمت مطابقة النمط وكانت القيمة التالية موجودة.NULL- إذا لم تتم مطابقة النمط أو لم تكن القيمة التالية موجودة.
Query
Response
forward وhead
backward وtail
forward وfirst_match
backward وlast_match
base_condition