الدوال أدناه مُصمَّمة للاستخدام مع دوال التجميع timeSeries*() مثل
timeSeriesInstantRateToGrid,
timeSeriesLastToGrid,
وغيرها.
seriesDecomposeSTL
استُحدث في: v24.1.0
يفكّك بيانات السلاسل الزمنية باستخدام STL (إجراء تفكيك الاتجاه الموسمي المعتمد على Loess) إلى مكوّن موسمي واتجاه ومكوّن متبقٍّ.
الصيغة
seriesDecomposeSTL(series, period)الوسائط
series— مصفوفة من القيم الرقميةArray((U)Int8/16/32/64)أوArray(Float*)period— عدد صحيح موجبUInt8/16/32/64
القيمة المعادة
تُرجع مصفوفة تتكوّن من أربع مصفوفات، حيث تحتوي المصفوفة الأولى على المكوّنات الموسمية، والثانية على الاتجاه، والثالثة على المكوّن المتبقي، والرابعة على مكوّن خط الأساس (الموسمي + الاتجاه). 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— مصفوفة من القيم العددية.Array((U)Int8/16/32/64)أوArray(Float*)
القيمة المُعادة
تُرجِع قيمة حقيقية تساوي فترة بيانات السلاسل الزمنية 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— مجموعة الوسوم الوجهة.UInt64src_group— مجموعة الوسوم المصدر.UInt64tag_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— مجموعة الوسوم الوجهة.UInt64src_group— مجموعة الوسوم المصدر.UInt64tags_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)الوسائط
القيمة المعادة
تُرجِع قيمة وسم محدد. 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— بداية الشبكة.DateTime64أوDateTimeأوUInt32end_timestamp— نهاية الشبكة.DateTime64أوDateTimeأوUInt32step— خطوة الشبكة بالثوانيDecimal64أوDecimal32أوUInt32/64values— مصفوفة من القيمArray(Float*)أوArray(Nullable(Float*))
القيمة المعادة
تعيد قيماً من مصفوفة القيم المصدر، مدمجة مع الطوابع الزمنية على شبكة زمنية منتظمة يحددها 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— مجموعة من الوسوم.UInt64dest_tag— اسم وسم لنتيجة الربط، وسيُضاف إلىgroup.Stringseparator— فاصل يُدرج بين القيم المربوطة.Stringsrc_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)الوسيطات
start_timestamp— بداية النطاق.DateTime64أوDateTimeأوUInt32end_timestamp— نهاية النطاق.DateTime64أوDateTimeأوUInt32step— خطوة النطاق بالثواني.UInt32/64أوDecimal32/64
القيمة المُعادة
تُرجِع نطاقًا من الطوابع الزمنية. 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— مجموعة من الوسوم.UInt64tags_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)الوسيطات
القيمة المعادة
مجموعة جديدة من الوسوم من دون الوسم المحدد. 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— مجموعة من الوسوم.UInt64tags_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— مجموعة من الوسوم.UInt64dest_tag— اسم وسم الوجهة الذي ستُحفَظ فيه المجموعة الناتجة.Stringreplacement— نمط استبدال، ويمكن أن يحتوي على1 أو2 أو $name للإشارة إلى المجموعات الملتقطة في التعبير النمطي 'regex'.Stringsrc_tag— اسم وسم تُستخدم قيمته لمطابقة التعبير النمطي 'regex'.Stringregex— تعبير نمطي.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.Anytags_array— مصفوفة من الأزواج (tag_name, tag_value).Array(Tuple(String, String))أوNULLseparate_tag_name_i— اسم وسم.StringأوFixedStringseparate_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, ...)الوسيطات
tags_array— مصفوفة من الأزواج (tag_name, tag_value).Array(Tuple(String, String))أوNULLtag_name_i— اسم وسم.StringأوFixedStringtag_value_i— قيمة الوسم.StringأوFixedStringأوNullable(String)
القيمة المُعادة
يُرجع مجموعة وسوم مرتبطة بالوسوم المحددة. 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, ...)الوسيطات
tags_array— مصفوفة من الأزواج (tag_name، tag_value).Array(Tuple(String, String))أوMap(String, String)أوNULLtag_name_i— اسم وسم.StringأوFixedStringtag_value_i— قيمة وسم.StringأوFixedStringأوNullable(String)
القيمة المُعادة
تُرجع خريطة تربط أسماء الوسوم بقيمها، مرتبة حسب اسم الوسم، من دون أسماء وسوم مكررة أو قيم وسوم فارغة.
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()UInt8group— مجموعة وسوم.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)