아래 함수는 timeSeriesInstantRateToGrid,
timeSeriesLastToGrid 등의
timeSeries*() 집계 함수와 함께 사용하도록 설계되었습니다.
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개의 배열로 구성된 배열을 반환합니다. 첫 번째 배열에는 계절 성분, 두 번째 배열에는 추세, 세 번째 배열에는 잔차 성분, 네 번째 배열에는 베이스라인(계절 + 추세) 성분이 포함됩니다. 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에서 해당 요소의 잠재적인 이상치 점수를 나타냅니다. 점수가 0이 아니면 이상치일 가능성이 있음을 의미합니다. 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*)
반환 값
시계열 데이터의 주기와 동일한 실수 값을 반환합니다. 데이터 포인트 수가 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
지정한 태그를 한 태그 그룹(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, ...]을 튜플 배열
[(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
지정된 시계열(time series) 식별자에 연결된 태그의 이름과 값을 반환합니다. 관련 항목: 함수 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
태그 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
쿼리 Context에 지정된 시계열 식별자와 태그 집합 사이의 매핑을 저장합니다. 이후 쿼리 실행 중 함수 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을 검사하여 참이면 다음 메시지와 함께 예외를 발생시킵니다.
Multiple series have the same tags <tags>, duplicate series in the same result set are not allowed.
condition이 거짓이면 이 함수는 0을 반환합니다.
이 함수는 throwIf()와 유사하지만,
서로 다른 오류 코드를 사용하며 오류 메시지 포맷도 다르게 지정됩니다.
구문
timeSeriesThrowDuplicateSeriesIf(condition, group)인수
반환 값
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)