以下の関数は、次のような timeSeries*() 集約関数と組み合わせて使用することを想定しています。
timeSeriesInstantRateToGrid、
timeSeriesLastToGrid
などです。
seriesDecomposeSTL
導入バージョン: v24.1.0
STL (Seasonal-Trend Decomposition Procedure Based on Loess) を使用して、時系列データを季節性、トレンド、残差の各成分に分解します。
構文
seriesDecomposeSTL(series, period)引数
series— 数値の配列Array((U)Int8/16/32/64)またはArray(Float*)period— 正の整数UInt8/16/32/64
戻り値
4つの配列からなる配列を返します。1つ目の配列には季節成分、2つ目の配列にはトレンド、3つ目の配列には残差成分、4つ目の配列にはベースライン (季節成分 + トレンド) が含まれます。 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*
戻り値
入力配列と同じ長さの配列を返します。各値は、series 内の対応する要素に異常の可能性があることを示すスコアを表します。スコアがゼロ以外の場合は、異常の可能性を示します。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 - Fast Fourier transform を使用して、指定された時系列データの周期を検出します
構文
seriesPeriodDetectFFT(series)引数
series— 数値の配列です。Array((U)Int8/16/32/64)またはArray(Float*)
戻り値
時系列データの周期に相当する実数値を返します。データ点の数が 4 未満の場合は 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
指定したタグを、1 つのタググループ (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 のタグに、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, ...] を、タプルの配列
[(start_timestamp, x1), (start_timestamp + step, x2), (start_timestamp + 2 * step, x3), ...] に変換します。
現在のタイムスタンプは、end_timestamp を超えるまで step ずつ増加します。
値の数がタイムスタンプの数と一致しない場合、この関数は例外をスローします。
[x1, x2, x3, ...] 内の NULL 値 はスキップされますが、現在のタイムスタンプは引き続き増加します。
たとえば、[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] を含む 1 要素の配列を返します。
関数 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
タグ src_tag の値に対して正規表現 regex を照合します。
一致した場合、返されるグループ内のタグ dest_tag の値は replacement を展開したものとなり、
入力に含まれる元のタグもそのまま保持されます。
この関数は、Prometheus の関数
label_replace() のロジックを模倣しています。
構文
timeSeriesReplaceTag(group, dest_tag, replacement, src_tag, regex)引数
group— タググループ。UInt64dest_tag— 結果のタググループを格納する宛先タグの名前。Stringreplacement— 置換パターン。正規表現 'regex' のキャプチャグループを参照するために、1、2、または $name を含めることができます。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。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。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。Array(Tuple(String, String))、Map(String, String)、またはNULLtag_name_i— タグ名。StringまたはFixedStringtag_value_i— タグの値。String、FixedString、またはNullable(String)
戻り値
タグ名でソートされ、重複したタグ名や空のタグの値を含まない、タグ名をタグの値にマッピングするmapを返します。
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)引数
戻り値
0 を返します。UInt8
例
グループごとに1つの系列
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同じタグを持つ2つの系列
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)