Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

دوال للعمل مع السلاسل الزمنية

الدوال أدناه مُصمَّمة للاستخدام مع دوال التجميع timeSeries*() مثل timeSeriesInstantRateToGrid, timeSeriesLastToGrid, وغيرها.

seriesDecomposeSTL

استُحدث في: v24.1.0

يفكّك بيانات السلاسل الزمنية باستخدام STL (إجراء تفكيك الاتجاه الموسمي المعتمد على Loess) إلى مكوّن موسمي واتجاه ومكوّن متبقٍّ.

الصيغة

seriesDecomposeSTL(series, period)

الوسائط

القيمة المعادة

تُرجع مصفوفة تتكوّن من أربع مصفوفات، حيث تحتوي المصفوفة الأولى على المكوّنات الموسمية، والثانية على الاتجاه، والثالثة على المكوّن المتبقي، والرابعة على مكوّن خط الأساس (الموسمي + الاتجاه). Array(Array(Float32), Array(Float32), Array(Float32), Array(Float32))

أمثلة

تفكيك بيانات السلاسل الزمنية باستخدام STL

SELECT seriesDecomposeSTL([10.1, 20.45, 40.34, 10.1, 20.45, 40.34, 10.1, 20.45, 40.34, 10.1, 20.45, 40.34, 10.1, 20.45, 40.34, 10.1, 20.45, 40.34, 10.1, 20.45, 40.34, 10.1, 20.45, 40.34], 3) AS print_0
┌─print_0────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ [[-13.529999,-3.1799996,16.71,-13.53,-3.1799996,16.71,-13.53,-3.1799996,16.71,-13.530001,-3.18,16.710001,-13.530001,-3.1800003,16.710001,-13.530001,-3.1800003,16.710001,-13.530001,-3.1799994,16.71,-13.529999,-3.1799994,16.709997],[23.63,23.63,23.630003,23.630001,23.630001,23.630001,23.630001,23.630001,23.630001,23.630001,23.630001,23.63,23.630001,23.630001,23.63,23.630001,23.630001,23.63,23.630001,23.630001,23.630001,23.630001,23.630001,23.630003],[0,0.0000019073486,-0.0000019073486,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,-0.0000019073486,0,0],[10.1,20.449999,40.340004,10.100001,20.45,40.34,10.100001,20.45,40.34,10.1,20.45,40.34,10.1,20.45,40.34,10.1,20.45,40.34,10.1,20.45,40.34,10.100002,20.45,40.34]] │
└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

seriesOutliersDetectTukey

أُضيفت في: v24.2.0

تكتشف القيم الشاذة في بيانات السلاسل الزمنية باستخدام Tukey Fences.

الصيغة

seriesOutliersDetectTukey(series[, min_percentile, max_percentile, K])

المعاملات

  • series — مصفوفة من القيم الرقمية. Array((UInt8/16/32/64)) أو Array(Float*)
  • min_percentile — اختياري. الحد الأدنى للمئين المُستخدَم لحساب المدى بين الربيعين (IQR). يجب أن تكون القيمة ضمن النطاق [0.02,0.98]. القيمة الافتراضية هي 0.25. Float*
  • max_percentile — اختياري. الحد الأقصى للمئين المُستخدَم لحساب المدى بين الربيعين (IQR). يجب أن تكون القيمة ضمن النطاق [0.02,0.98]. القيمة الافتراضية هي 0.75. Float*
  • K — اختياري. قيمة ثابتة غير سالبة لاكتشاف القيم الشاذة الطفيفة أو الأشد. القيمة الافتراضية هي 1.5. Float*

القيمة المُعادة

تعيد مصفوفة بالطول نفسه لمصفوفة الإدخال، بحيث تمثل كل قيمة درجة لاحتمال وجود شذوذ في العنصر المقابل في السلسلة. وتشير الدرجة غير الصفرية إلى شذوذ محتمل. Array(Float32)

أمثلة

الاكتشاف الأساسي للقيم الشاذة

SELECT seriesOutliersDetectTukey([-3, 2, 15, 3, 5, 6, 4, 5, 12, 45, 12, 3, 3, 4, 5, 6]) AS print_0
┌─print_0────────────────────────────┐
│ [0,0,0,0,0,0,0,0,0,27,0,0,0,0,0,0] │
└────────────────────────────────────┘

اكتشاف القيم الشاذة بمعلمات مخصصة

SELECT seriesOutliersDetectTukey([-3, 2, 15, 3, 5, 6, 4.50, 5, 12, 45, 12, 3.40, 3, 4, 5, 6], 0.2, 0.8, 1.5) AS print_0
┌─print_0──────────────────────────────┐
│ [0,0,0,0,0,0,0,0,0,19.5,0,0,0,0,0,0] │
└──────────────────────────────────────┘

seriesPeriodDetectFFT

أُضيف في: v23.12.0

يحدّد فترة بيانات السلاسل الزمنية المعطاة باستخدام FFT - تحويل فورييه السريع

الصيغة

seriesPeriodDetectFFT(series)

الوسائط

القيمة المُعادة

تُرجِع قيمة حقيقية تساوي فترة بيانات السلاسل الزمنية series. وتكون NaN عندما يكون عدد نقاط البيانات أقل من أربع. Float64

أمثلة

اكتشاف الفترة باستخدام نمط بسيط

SELECT seriesPeriodDetectFFT([1, 4, 6, 1, 4, 6, 1, 4, 6, 1, 4, 6, 1, 4, 6, 1, 4, 6, 1, 4, 6]) AS print_0
┌─print_0─┐
│       3 │
└─────────┘

اكتشاف الدورية باستخدام نمط معقّد

SELECT seriesPeriodDetectFFT(arrayMap(x -> abs((x % 6) - 3), range(1000))) AS print_0
┌─print_0─┐
│       6 │
└─────────┘

timeSeriesCopyTag

أُضيفت في: v26.1.0

تنسخ وسمًا محددًا من مجموعة وسوم (src_group) إلى مجموعة أخرى (dest_group). وتستبدل الدالة أي قيم سابقة للوسم المنسوخ في dest_group. إذا لم يكن الوسم المنسوخ موجودًا في src_group، فستزيله الدالة من dest_group أيضًا. وتحاكي الدالة منطق النسخ في مُعدِّلات Prometheus group left/group right.

الصيغة

timeSeriesCopyTag(dest_group, src_group, tag_to_copy)

الوسائط

  • dest_group — مجموعة الوسوم الوجهة. UInt64
  • src_group — مجموعة الوسوم المصدر. UInt64
  • tag_to_copy — اسم الوسم المراد نسخه. String

القيمة المُعادة

تعيد مجموعة وسوم تتضمن الوسوم من dest_group بالإضافة إلى الوسوم المنسوخة من src_group. UInt64

أمثلة

مثال

SELECT timeSeriesTagsToGroup([('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS dest_group,
       timeSeriesTagsToGroup([('code', '404'), ('message', 'Page not found')], '__name__', 'http_codes') AS src_group,
       timeSeriesCopyTag(dest_group, src_group, '__name__') AS result_group,
       timeSeriesGroupToTags(result_group)
┌─dest_group─┬─src_group─┬─result_group─┬─timeSeriesGroupToTags(result_group)───────────────────────┐
│          1 │         2 │            3 │ [('__name__','http_codes'),('env','dev'),('region','eu')] │
└────────────┴───────────┴──────────────┴───────────────────────────────────────────────────────────┘

timeSeriesCopyTags

أُضيف في: v26.1.0

ينسخ الوسوم المحددة من مجموعة وسوم (src_group) إلى مجموعة أخرى (dest_group). تستبدل الدالة أي قيم سابقة للوسوم المنسوخة في dest_group. إذا كان بعض الوسوم المنسوخة غير موجود في src_group، فستحذفه الدالة من dest_group أيضًا. تحاكي الدالة منطق النسخ في مُعدِّلات prometheus group left/group right.

الصيغة

timeSeriesCopyTags(dest_group, src_group, tags_to_copy)

الوسائط

  • dest_group — مجموعة الوسوم الوجهة. UInt64
  • src_group — مجموعة الوسوم المصدر. UInt64
  • tags_to_copy — أسماء الوسوم المراد نسخها. Array(String)

القيمة المُعادة

تُعيد مجموعة وسوم تتضمن الوسوم من dest_group بالإضافة إلى الوسوم المنسوخة من src_group. UInt64

أمثلة

مثال

SELECT timeSeriesTagsToGroup([('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS dest_group,
       timeSeriesTagsToGroup([('code', '404'), ('message', 'Page not found')], '__name__', 'http_codes') AS src_group,
       timeSeriesCopyTags(dest_group, src_group, ['__name__', 'code', 'env']) AS result_group,
       timeSeriesGroupToTags(result_group)
┌─dest_group─┬─src_group─┬─result_group─┬─timeSeriesGroupToTags(result_group)────────────────────────┐
│          1 │         2 │            3 │ [('__name__','http_codes'),('code','404'),('region','eu')] │
└────────────┴───────────┴──────────────┴────────────────────────────────────────────────────────────┘

timeSeriesExtractTag

قُدِّمت في: v26.1.0

تستخرج قيمة وسم محدد من المجموعة. وتُرجِع NULL إذا لم يُعثر عليه. انظر أيضًا الدالة timeSeriesGroupToTags().

الصيغة

timeSeriesExtractTag(group)

الوسائط

  • group — مجموعة من الوسوم. UInt64
  • tag_to_extract — اسم الوسم المراد استخراجه من المجموعة String

القيمة المعادة

تُرجِع قيمة وسم محدد. Nullable(String)

أمثلة

مثال

SELECT timeSeriesTagsToGroup([('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS group,
       timeSeriesExtractTag(group, '__name__'),
       timeSeriesExtractTag(group, 'env'),
       timeSeriesExtractTag(group, 'instance')
┌─group─┬─timeSeriesExtractTag(group, '__name__')─┬─timeSeriesExtractTag(group, 'env')─┬─timeSeriesExtractTag(group, 'instance')─┐
│     1 │ http_requests_count                     │ dev                                │ ᴺᵁᴸᴸ                                    │
└───────┴─────────────────────────────────────────┴────────────────────────────────────┴─────────────────────────────────────────┘

timeSeriesFromGrid

أُضيف في: v25.8.0

يحوّل مصفوفة من القيم [x1, x2, x3, ...] إلى مصفوفة من Tuples [(start_timestamp, x1), (start_timestamp + step, x2), (start_timestamp + 2 * step, x3), ...].

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

يتم تخطي قيم NULL في [x1, x2, x3, ...]، ولكن يستمر مع ذلك زيادة الطابع الزمني الحالي. على سبيل المثال، بالنسبة إلى [value1, NULL, x2] تُرجع الدالة [(start_timestamp, x1), (start_timestamp + 2 * step, x2)].

البنية

timeSeriesFromGrid(start_timestamp, end_timestamp, step, values)

الوسيطات

القيمة المعادة

تعيد قيماً من مصفوفة القيم المصدر، مدمجة مع الطوابع الزمنية على شبكة زمنية منتظمة يحددها start_timestamp وstep. Array(Tuple(DateTime64, Float64))

أمثلة

مثال على الاستخدام

SELECT timeSeriesFromGrid('2025-06-01 00:00:00'::DateTime64(3), '2025-06-01 00:01:30.000'::DateTime64(3), 30, [10, 20, NULL, 30]) AS result;
┌─result─────────────────────────────────────────────────────────────────────────────────────────┐
│ [('2025-06-01 00:00:00.000',10),('2025-06-01 00:00:30.000',20),('2025-06-01 00:01:30.000',30)] │
└────────────────────────────────────────────────────────────────────────────────────────────────┘

timeSeriesGroupToSamplingKey

تم تقديمه في: v26.4.0

يعيد مفتاح أخذ عينات UInt64 ثابتًا مشتقًا من وسوم مجموعة محددة.

القيمة حتمية: فالوسوم المدخلة المتطابقة تُنتج دائمًا المفتاح نفسه. وهو مخصّص ليكون مفتاح ترتيب لعمليات أخذ العينات مثل limitk وlimit_ratio.

الصيغة

timeSeriesGroupToSamplingKey(group)

الوسائط

  • group — مجموعة من الوسوم. UInt64

القيمة المُعادة

قيمة تجزئة UInt64 ثابتة مشتقة من الوسوم المرتبطة بالمجموعة. UInt64

أمثلة

مثال

SELECT timeSeriesTagsToGroup([('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS group,
       timeSeriesGroupToSamplingKey(group) AS sampling_key
┌─group─┬─────────sampling_key─┐
│     1 │ 15511321834549144507 │
└───────┴──────────────────────┘

timeSeriesGroupToTags

أُضيفت في: v26.1.0

تعيد أسماء الوسوم وقيمها المرتبطة بمجموعة محددة. راجع أيضًا الدالة timeSeriesTagsToGroup().

الصيغة

timeSeriesGroupToTags(group)

الأسماء المستعارة: timeSeriesTagsGroupToTags

الوسائط

  • group — مجموعة من الوسوم. UInt64

القيمة المُعادة

تُرجع مصفوفة من الأزواج (tag_name, tag_value). تكون المصفوفة المُعادة مرتبة دائمًا حسب tag_name، ولا تتضمن أبدًا tag_name نفسه أكثر من مرة. Array(Tuple(String, String))

أمثلة

مثال

SELECT timeSeriesTagsToGroup([('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS group,
       timeSeriesGroupToTags(group) AS sorted_tags,
       timeSeriesTagsToGroup(sorted_tags) AS same_group,
       throwIf(same_group != group)
┌─group─┬─sorted_tags────────────────────────────────────────────────────────┬─same_group─┬─throwIf(notEquals(same_group, group))─┐
│     1 │ [('__name__','http_requests_count'),('env','dev'),('region','eu')] │          1 │                                     0 │
└───────┴────────────────────────────────────────────────────────────────────┴────────────┴───────────────────────────────────────┘

timeSeriesIdToGroup

قُدِّمت في: v26.1.0

تعيد أسماء الوسوم وقيمها المرتبطة بمُعرّف محدد لسلسلة زمنية. انظر أيضًا الدالة timeSeriesStoreTags().

الصيغة

timeSeriesIdToGroup(id)

الأسماء المستعارة: timeSeriesIdToTagsGroup

الوسائط

  • id — معرّف سلسلة زمنية. يجب أن يكون من النوع نفسه الذي استُخدم عند استدعاء timeSeriesStoreTags(). Any

القيمة المعادة

تعيد مجموعة من الوسوم المرتبطة بالمعرّف id لسلسلة زمنية. UInt64

أمثلة

مثال

SELECT 8374283493092 AS id,
       timeSeriesStoreTags(id, [('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS same_id,
       throwIf(same_id != id),
       timeSeriesIdToGroup(same_id) AS group,
       timeSeriesGroupToTags(group)
┌────────────id─┬───────same_id─┬─throwIf(notEquals(same_id, id))─┬─group─┬─timeSeriesGroupToTags(group)───────────────────────────────────────┐
│ 8374283493092 │ 8374283493092 │                               0 │     1 │ [('__name__','http_requests_count'),('env','dev'),('region','eu')] │
└───────────────┴───────────────┴─────────────────────────────────┴───────┴────────────────────────────────────────────────────────────────────┘

timeSeriesIdToTags

أُضيف في: v25.8.0

يعيد الوسوم المرتبطة بمُعرّف محدد لسلسلة زمنية. راجع أيضًا الدالة timeSeriesStoreTags().

البنية

timeSeriesIdToTags(id)

الوسيطات

  • id — معرّف سلسلة زمنية. يجب أن يكون من النوع نفسه المستخدم عند استدعاء timeSeriesStoreTags(). Any

القيمة المعادة

تُرجِع مصفوفة من الأزواج (tag_name, tag_value). تكون المصفوفة المعادة مرتبة دائمًا حسب tag_name، ولا تحتوي أبدًا على tag_name نفسه أكثر من مرة. Array(Tuple(String, String))

أمثلة

مثال

SELECT 8374283493092 AS id,
       timeSeriesStoreTags(id, [('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS same_id,
       throwIf(same_id != id),
       timeSeriesIdToTags(same_id)
┌────────────id─┬───────same_id─┬─throwIf(notEquals(same_id, id))─┬─timeSeriesIdToTags(same_id)────────────────────────────────────────┐
│ 8374283493092 │ 8374283493092 │                               0 │ [('__name__','http_requests_count'),('env','dev'),('region','eu')] │
└───────────────┴───────────────┴─────────────────────────────────┴────────────────────────────────────────────────────────────────────┘

timeSeriesJoinTags

أُضيفت في: v26.1.0

تجمع هذه الدالة قيم الوسوم المحددة والمستخرجة من مجموعة وسوم. وتُدرِج فاصلاً بين القيم المجمّعة وتُرجع مجموعة وسوم جديدة يُضبط فيها الوسم dest_tag على القيمة المجمّعة. وتحاكي هذه الدالة منطق دالة Prometheus label_join().

البنية

timeSeriesJoinTags(group, dest_tag, separator, src_tags)

الوسائط

  • group — مجموعة من الوسوم. UInt64
  • dest_tag — اسم وسم لنتيجة الربط، وسيُضاف إلى group. String
  • separator — فاصل يُدرج بين القيم المربوطة. String
  • src_tags — أسماء وسوم المصدر التي تحتوي على القيم التي سيجري ربطها. Array(String)

القيمة المُعادة

يعيد مجموعة وسوم جديدة مع تعيين الوسم dest_tag إلى نتيجة الربط. UInt64

أمثلة

مثال

SELECT timeSeriesTagsToGroup([('__name__', 'up'), ('job', 'api-server'), ('src1', 'a'), ('src2', 'b'), ('src3', 'c')]) AS group,
       timeSeriesJoinTags(group, 'foo', ',', ['src1', 'src2', 'src3']) AS result_group,
       timeSeriesGroupToTags(result_group)
┌─group─┬─result_group─┬─timeSeriesGroupToTags(result_group)─────────────────────────────────────────────────────────────┐
│     1 │            2 │ [('__name__','up'),('foo','a,b,c'),('job','api-server'),('src1','a'),('src2','b'),('src3','c')] │
└───────┴──────────────┴─────────────────────────────────────────────────────────────────────────────────────────────────┘

timeSeriesMetricTypeToSuffixes

أُضيف في: v26.8.0

يعيد لواحق أسماء المقاييس لعائلة مقاييس من نوع Prometheus معيّن.

بنية

timeSeriesMetricTypeToSuffixes(type)

وسيطات

  • type — نوع مقياس Prometheus (counter، gauge، histogram، summary، …). String

القيمة المُعادة

تعيد لواحق عائلة من هذا النوع. Array(String)

أمثلة

مثال

SELECT timeSeriesMetricTypeToSuffixes('histogram') AS suffixes;
┌─suffixes────────────────────┐
│ ['_bucket','_count','_sum'] │
└─────────────────────────────┘

timeSeriesRange

أُضيف في: v25.8.0

يُنشئ نطاقًا من الطوابع الزمنية [start_timestamp, start_timestamp + step, start_timestamp + 2 * step, …, end_timestamp].

إذا كان start_timestamp مساويًا لـ end_timestamp، فستُرجِع الدالة مصفوفة من عنصر واحد تحتوي على [start_timestamp].

الدالة timeSeriesRange() مشابهة للدالة range.

البنية

timeSeriesRange(start_timestamp, end_timestamp, step)

الوسيطات

القيمة المُعادة

تُرجِع نطاقًا من الطوابع الزمنية. Array(DateTime64)

أمثلة

مثال على الاستخدام

SELECT timeSeriesRange('2025-06-01 00:00:00'::DateTime64(3), '2025-06-01 00:01:00'::DateTime64(3), 30)
┌─timeSeriesRange(CAST('2025-06-01 00:00:00', 'DateTime64(3)'), CAST('2025-06-01 00:01:00', 'DateTime64(3)'), 30)─┐
│ ['2025-06-01 00:00:00.000','2025-06-01 00:00:30.000','2025-06-01 00:01:00.000']                                 │
└─────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

timeSeriesRemoveAllTagsExcept

أُضيفت في: v26.1.0

يزيل كل الوسوم من مجموعة وسوم باستثناء الوسوم المحددة. راجع أيضًا الدالة timeSeriesRemoveTag(), timeSeriesRemoveTags().

الصياغة

timeSeriesRemoveAllTagsExcept(group, tags_to_keep)

الوسيطات

  • group — مجموعة من الوسوم. UInt64
  • tags_to_keep — أسماء الوسوم المطلوب الاحتفاظ بها في المجموعة. Array(String)

القيمة المُعادة

مجموعة جديدة من الوسوم لا يُحتفَظ فيها إلا بالوسوم المحددة. UInt64

أمثلة

مثال

SELECT timeSeriesTagsToGroup([('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS group,
       timeSeriesRemoveAllTagsExcept(group, ['env']) AS result_group,
       timeSeriesGroupToTags(result_group)
┌─group─┬─result_group─┬─timeSeriesGroupToTags(result_group)─┐
│     1 │            2 │ [('env','dev')]                     │
└───────┴──────────────┴─────────────────────────────────────┘

timeSeriesRemoveTag

أُضيف في: v26.1.0

يزيل وسمًا محددًا من مجموعة من الوسوم. إذا لم يكن هذا الوسم موجودًا في المجموعة، فستُعاد المجموعة كما هي. انظر أيضًا الدالة timeSeriesRemoveTags()، timeSeriesRemoveAllTagsExcept().

الصيغة

timeSeriesRemoveTag(group, tag_to_remove)

الوسيطات

  • group — مجموعة من الوسوم. UInt64
  • tag_to_remove — اسم الوسم المراد إزالته من المجموعة. String

القيمة المعادة

مجموعة جديدة من الوسوم من دون الوسم المحدد. UInt64

أمثلة

مثال

SELECT timeSeriesTagsToGroup([('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS group_of_3,
       timeSeriesRemoveTag(group_of_3, '__name__') AS group_of_2,
       timeSeriesGroupToTags(group_of_2),
       timeSeriesRemoveTag(group_of_2, 'env') AS group_of_1,
       timeSeriesGroupToTags(group_of_1),
       timeSeriesRemoveTag(group_of_1, 'region') AS empty_group,
       timeSeriesGroupToTags(empty_group)
┌─group_of_3─┬─group_of_2─┬─timeSeriesGroupToTags(group_of_2)─┬─group_of_1─┬─timeSeriesGroupToTags(group_of_1)─┬─empty_group─┬─timeSeriesGroupToTags(empty_group)─┐
│          1 │          2 │ [('env','dev'),('region','eu')]   │          3 │ [('region','eu')]                 │           0 │ []                                 │
└────────────┴────────────┴───────────────────────────────────┴────────────┴───────────────────────────────────┴─────────────┴────────────────────────────────────┘

timeSeriesRemoveTags

أُضيفت في: v26.1.0

تزيل الوسوم المحددة من مجموعة وسوم. إذا لم تكن بعض الوسوم المحددة موجودة في مجموعة الوسوم، فستتجاهلها الدالة. راجع أيضًا الدالة timeSeriesRemoveTag(), timeSeriesRemoveAllTagsExcept().

البنية

timeSeriesRemoveTags(group, tags_to_remove)

الوسيطات

  • group — مجموعة من الوسوم. UInt64
  • tags_to_remove — أسماء الوسوم المطلوب إزالتها من المجموعة. Array(String)

القيمة المعادة

مجموعة وسوم جديدة من دون الوسوم المحددة. UInt64

أمثلة

مثال

SELECT timeSeriesTagsToGroup([('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS group_of_3,
       timeSeriesRemoveTags(group_of_3, ['env', 'region']) AS group_of_1,
       timeSeriesGroupToTags(group_of_1),
       timeSeriesRemoveTags(group_of_1, ['__name__', 'nonexistent']) AS empty_group,
       timeSeriesGroupToTags(empty_group)
┌─group_of_3─┬─group_of_1─┬─timeSeriesGroupToTags(group_of_1)────┬─empty_group─┬─timeSeriesGroupToTags(empty_group)─┐
│          1 │          2 │ [('__name__','http_requests_count')] │           0 │ []                                 │
└────────────┴────────────┴──────────────────────────────────────┴─────────────┴────────────────────────────────────┘

timeSeriesReplaceTag

أُضيف في: v26.1.0

يطابق التعبير النمطي regex قيمة الوسم src_tag. إذا تحقق تطابق، فستكون قيمة الوسم dest_tag في المجموعة المُعادة هي الناتج عن توسيع replacement، إلى جانب الوسوم الأصلية في الإدخال. تحاكي هذه الدالة منطق دالة prometheus label_replace().

الصيغة

timeSeriesReplaceTag(group, dest_tag, replacement, src_tag, regex)

الوسيطات

  • group — مجموعة من الوسوم. UInt64
  • dest_tag — اسم وسم الوجهة الذي ستُحفَظ فيه المجموعة الناتجة. String
  • replacement — نمط استبدال، ويمكن أن يحتوي على 1 أو 2 أو $name للإشارة إلى المجموعات الملتقطة في التعبير النمطي 'regex'. String
  • src_tag — اسم وسم تُستخدم قيمته لمطابقة التعبير النمطي 'regex'. String
  • regex — تعبير نمطي. String

القيمة المُعادة

مجموعة وسوم جديدة قد يُضاف إليها dest_tag. UInt64

أمثلة

مثال

SELECT timeSeriesTagsToGroup([('__name__', 'up'), ('job', 'api-server'), ('service', 'a:c')]) AS group,
       timeSeriesReplaceTag(group, 'foo', '$1', 'service', '(.*):.*') AS result_group,
       timeSeriesGroupToTags(result_group)
┌─group─┬─result_group─┬─timeSeriesGroupToTags(result_group)────────────────────────────────────┐
│     1 │            2 │ [('__name__','up'),('foo','a'),('job','api-server'),('service','a:c')] │
└───────┴──────────────┴────────────────────────────────────────────────────────────────────────┘

timeSeriesStoreTags

أُضيف في: v25.8.0

يخزّن في سياق الاستعلام تعيينًا بين معرّف محدد لسلسلة زمنية ومجموعة من الوسوم. يمكن استخدام الدالتين timeSeriesIdToTags() وtimeSeriesIdToGroup() للوصول إلى هذا التعيين لاحقًا أثناء تنفيذ الاستعلام.

بنية

timeSeriesStoreTags(id, tags_array, separate_tag_name_1, separate_tag_value_1, ...)

الوسائط

  • id — معرّف سلسلة زمنية. يمكن أن يكون من أي نوع قابل للمقارنة. يتم تخطي الصفوف ذات المعرّفات NULL. Any
  • tags_array — مصفوفة من الأزواج (tag_name, tag_value). Array(Tuple(String, String)) أو NULL
  • separate_tag_name_i — اسم وسم. String أو FixedString
  • separate_tag_value_i — قيمة وسم. String أو FixedString أو Nullable(String)

القيمة المُعادة

يُرجع معرّف سلسلة زمنية (أي الوسيط الأول فقط).

أمثلة

مثال

SELECT 8374283493092 AS id,
       timeSeriesStoreTags(id, [('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS same_id,
       throwIf(same_id != id),
       timeSeriesIdToTags(same_id),
       timeSeriesGroupToTags(timeSeriesIdToGroup(same_id))
┌────────────id─┬───────same_id─┬─throwIf(notEquals(same_id, id))─┬─timeSeriesIdToTags(same_id)────────────────────────────────────────┬─timeSeriesGroupToTags(timeSeriesIdToGroup(same_id))────────────────┐
│ 8374283493092 │ 8374283493092 │                               0 │ [('__name__','http_requests_count'),('env','dev'),('region','eu')] │ [('__name__','http_requests_count'),('env','dev'),('region','eu')] │
└───────────────┴───────────────┴─────────────────────────────────┴────────────────────────────────────────────────────────────────────┴────────────────────────────────────────────────────────────────────┘

timeSeriesTagsToGroup

قُدِّمت في: v26.1.0

تُرجع مجموعة من الوسوم المرتبطة بالوسوم المحددة. إذا عُثر على مجموعة الوسوم نفسها عدة مرات أثناء تنفيذ الاستعلام، فستُرجع الدالة المجموعة نفسها. إذا كانت مجموعة الوسوم فارغة، فستُرجع الدالة دائمًا 0. انظر أيضًا الدالة timeSeriesGroupToTags().

البنية

timeSeriesTagsToGroup(tags_array, tag_name_1, tag_value_1, tag_name2, tag_value2, ...)

الوسيطات

القيمة المُعادة

يُرجع مجموعة وسوم مرتبطة بالوسوم المحددة. UInt64

أمثلة

مثال

SELECT timeSeriesTagsToGroup([('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS group1,
       timeSeriesTagsToGroup([], '__name__', 'http_failures') AS group2,
       timeSeriesTagsToGroup([]) AS empty_group,
       timeSeriesTagsToGroup([], '__name__', 'http_failures') AS same_group2,
       throwIf(same_group2 != group2),
       timeSeriesGroupToTags(group2)
┌─group1─┬─group2─┬─empty_group─┬─same_group2─┬─throwIf(notEquals(same_group2, group2))─┬─timeSeriesGroupToTags(group2)──┐
│      1 │      2 │           0 │           2 │                                       0 │ [('__name__','http_failures')] │
└────────┴────────┴─────────────┴─────────────┴─────────────────────────────────────────┴────────────────────────────────┘

timeSeriesTagsToMap

أُضيف في: v26.8.0

يدمج مصفوفة من أزواج (tag_name, tag_value) مع وسيطات منفصلة لأسماء العلامات وقيمها في خريطة واحدة. تُفرَز النتيجة حسب اسم العلامة، وتُزال أسماء العلامات المكررة والعلامات ذات القيم الفارغة.

البنية

timeSeriesTagsToMap(tags_array, tag_name_1, tag_value_1, tag_name_2, tag_value_2, ...)

الوسيطات

القيمة المُعادة

تُرجع خريطة تربط أسماء الوسوم بقيمها، مرتبة حسب اسم الوسم، من دون أسماء وسوم مكررة أو قيم وسوم فارغة. Map(String, String)

أمثلة

مثال

SELECT timeSeriesTagsToMap([('region', 'eu'), ('env', 'dev')], '__name__', 'http_requests_count') AS tags
┌─tags─────────────────────────────────────────────────────────┐
│ {'__name__':'http_requests_count','env':'dev','region':'eu'} │
└──────────────────────────────────────────────────────────────┘

timeSeriesThrowDuplicateSeriesIf

أُضيفت في: v26.2.0

تتحقق الدالة من condition، وإذا كانت true فإنها تطرح استثناءً بالرسالة التالية Multiple series have the same tags <tags>, duplicate series in the same result set are not allowed. إذا كانت condition هي false، فتعيد الدالة 0. تشبه هذه الدالة throwIf()، لكنها تستخدم رمز خطأ مختلفًا وتنسّق رسالة الخطأ بطريقة مختلفة.

البنية

timeSeriesThrowDuplicateSeriesIf(condition, group)

الوسيطات

  • condition — الشرط المراد التحقق منه، ويحتوي عادةً على الدالة count() UInt8
  • group — مجموعة وسوم. UInt64

القيمة المُعادة

تعيد 0. UInt8

أمثلة

سلسلة واحدة لكل مجموعة

CREATE TABLE test(tags Array(Tuple(String, String))) engine=Memory;

INSERT INTO test VALUES ([('__name__', 'up')]);

SELECT timeSeriesThrowDuplicateSeriesIf(count() > 1, timeSeriesTagsToGroup(tags))
FROM test
GROUP BY timeSeriesTagsToGroup(tags);
0

سلسلتان تحملان الوسوم نفسها

INSERT INTO test VALUES ([('__name__', 'up')]);

SELECT timeSeriesThrowDuplicateSeriesIf(count() > 1, timeSeriesTagsToGroup(tags))
FROM test
GROUP BY timeSeriesTagsToGroup(tags);
Received exception:
Code: 768. DB::Exception: Multiple series have the same tags {'__name__': 'up'}, duplicate series in the same result set are not allowed. (DUPLICATE_TIME_SERIES)
Navigation