Cloud Monitoring의 Monitoring Query Language에 대한 참조 설명서로, 다음 주제를 다룹니다.
Monitoring Query Language가 액세스하는 시계열 데이터베이스의 기반이 되는 데이터 모델
쿼리의 구조와 의미
쿼리가 만들어지는 연산과 함수 각각에 대한 설명
데이터 모델
Cloud Monitoring은 모니터링 대상이 되는 각 항목(일명 모니터링 리소스)에 대해 수집한 모든 측정값이 포함된 시계열 데이터베이스를 사용합니다. 여기서 데이터베이스의 논리적 구조에 대해 설명합니다.
기본 요소는 모니터링 대상이 되는 모니터링 리소스의 관찰로 데이터를 구성한 시계열입니다.
데이터베이스의 시계열은 관계형 테이블로 논리적으로 구성되며 각 테이블에는 공통된 의미와 구조를 가진 시계열이 있습니다. 데이터를 반환하고 그래프를 생성하고 알림을 계산하는 쿼리에서 이 테이블을 참조합니다.
데이터베이스에는 메타데이터도 포함됩니다. 메타데이터는 모니터링 리소스와 연결된 지연 변경 값으로, 모니터링 리소스 유형을 구현하는 사용자 구성 또는 서비스로 설정합니다.
시계열
시계열은 측정된 값과 그 값이 적용되는 시간을 이르는 일련의 지점에 이름을 붙인 것입니다. 시계열은 시계열 구조를 지정하는 유형, 시계열을 고유하게 명명하는 식별자, 시계열 데이터가 포함된 기록 등 세 부분으로 구성됩니다. 이 세 부분은 이 섹션에서 설명합니다.
시계열 유형은 시계열 식별자와 시계열 기록의 구조를 지정합니다. 다음 두 부분으로 구성됩니다.
모니터링 리소스 유형(여기에 목록 있음) - 모니터링 대상이 되는 특정 종류의 모니터링 리소스를 가리키며, Compute Engine 인스턴스(
gce_instance
) 또는 Cloud SQL 데이터베이스(cloudsql_database
) 등이 이에 속합니다. 해당 유형의 모니터링 리소스의 인스턴스를 고유하게 식별하는 라벨 설명자도 있습니다.측정항목 유형(여기에 목록 있음) - 모니터링 리소스에서 취할 수 있는 특정 종류의 측정값을 말합니다. 예를 들어 Compute Engine 인스턴스가 디스크에서 읽어들이는 바이트 수는
compute.googleapis.com/instance/disk/read_bytes_count
라는 측정항목으로 측정하며, Cloud SQL 데이터베이스의 데이터 사용률은cloudsql.googleapis.com/database/disk/bytes_used
라는 측정항목으로 측정합니다. 측정항목 유형은 측정값의 유형, 측정값의 단위, 시계열의 종류를 지정합니다. 동일한 대상의 서로 다른 측면을 측정하는 시계열을 구분하는 라벨 설명자를 지정할 수 있습니다. 예를 들어command
는appengine.googleapis.com/memcache/operation_count
측정항목에서 계산하는 명령어를 나타냅니다.
모니터링 리소스 유형과 측정항목 유형은 각각 MonitoredResourceDescriptor
및 MetricDescriptor
로 설명되며 해당 유형을 나타냅니다. 여기에는 각각 모니터링 리소스 또는 측정항목 유형의 이름이 포함된 type
필드가 포함됩니다.
시계열 식별자는 시계열의 이름으로, 동일한 유형의 모든 시계열을 고유하게 식별하는 역할을 합니다. 시계열 유형에 속한 모니터링 리소스 유형과 측정항목 유형에 지정된 각 라벨 설명자에 해당하는 일련의 값으로 구성됩니다.
모니터링 리소스 유형의 라벨은 시계열의 측정값을 취한 특정 종류의 모니터링 리소스의 특정 인스턴스를 고유하게 식별합니다. 예를 들어
gce_instance
모니터링 리소스에는 특정 Google Compute Engine 가상 머신을 고유하게 식별하는project_id
,instance_id
,zone
라벨이 있습니다.측정항목 유형의 각 라벨은 시계열에 표시된 특정 측정항목의 특정 유형의 측정값을 식별합니다. 예를 들어
appengine.googleapis.com/memcache/operation_count
측정항목에서 계산하는 명령어의 상태를 나타내는status
는 적중을 계산하는 시계열의'HIT'
값과 부적중을 계산하는 다른 시계열의'MISS'
값을 가질 수 있습니다.
시계열 기록은 각기 어떤 때에, 또는 얼마간의 시간 범위를 두고 각기 하나 또는 여러 개의 값(예: CPU 부하 또는 온도 및 습도)을 동시에 측정한 지점을 시간 순서대로 나타낸 것입니다. 지점에는 다음 두 가지 요소가 있습니다.
범위 - 시간에서 지점의 범위는 항상 존재하는 종료 시간과 존재할 수도 존재하지 않을 수도 있는 시작 시간으로 구성됩니다. 시작 시간이 없는 경우 지점의 범위는 종료 시간으로 지정된 단일 시점입니다. 시작 시간을 지정하는 경우 종료 시간보다 일러야 하며 지점의 범위는 시작 시간에 시작하고 종료 시간에 종료되는 시간 간격입니다.
시계열의 두 지점은 범위가 동일할 수 없습니다. 또한 시계열에서 지점의 범위는 아래 설명된 대로 측정항목 유형에 따라 시계열 종류로 제한됩니다.
값 - 지점의 값은 지점의 범위에 지정된 시간에 적용되는 하나 또는 여러 개의 값(예: CPU 부하 또는 온도 및 습도)을 동시에 측정한 것을 나타냅니다. 측정항목 유형은 각 측정값을 설명하며 각 측정항목의 이름과 값 유형을 지정합니다. 측정값이 여러 개인 경우 특정 순서대로 표시되며 색인에서 해당 순서로 참조할 수 있습니다.
시계열 데이터베이스에 저장된 일반적인 시계열은 각 지점에 하나의 값이 있습니다. 시계열 유형의 측정항목 이름은 URI이고, 단일 값의 이름은 마지막
/
이후 측정항목 이름의 일부입니다. 예를 들어appengine.googleapis.com/memcache/operation_count
측정항목에는operation_count
라는 값 열이 있습니다.쿼리의 결과물인 시계열에는 유형, 이름, 순서를 지정한 점이 여러 개 있을 수 있습니다.
측정항목 유형은 시계열 값의 유형이 Int, Double, Distribution인 경우 측정 단위도 지정할 수 있습니다. 단위는 측정 단위의 통합 코드(UCUM)의 일부를 사용하여 지정됩니다. 예를 들어 밀리초는
ms
, 바이트는By
입니다. 자세한 내용은 측정 단위를 참조하세요.
지점의 각 값에는 시계열 유형의 측정항목 유형으로 지정된 특정 값 유형이 있습니다. 또한 시계열 식별자의 각 라벨에는 시계열 유형의 모니터링 리소스나 측정항목 유형의 라벨 설명자에서 제공하는 값 유형이 있습니다. 값 유형은 다음과 같습니다.
Int: 부호 있는 64비트 정수
String: UTF-8로 인코딩된 유니코드 문자
Bool: 부울 값
Double: 64비트 이더넷 부동 소수점 값
Distribution: Double 값의 모집단(집합)에 대해 요약 설명한 히스토그램과 통계를 포함하는 복잡한 값. 이 값에는 다음 부분이 포함됩니다.
지점 값의 유형은 이 중 한 가지일 수 있습니다. 시계열 식별자 라벨 유형은 String, Int 또는 Bool이어야 합니다.
이러한 유형 외에도 지점의 시작 및 종료 시간에 있거나 쿼리의 시간과 기간을 설명하는 데 사용되는 두 가지 추가 유형이 있습니다.
Date: Unix epoch 이후 거리로 측정하는 특정 시점. 특정 시점을 시간대와 무관하게 표현한 것입니다. 지점의 시작 및 종료 시간이 이 유형입니다.
Duration: 시간의 길이. 이 시간에는 마이크로초 수준까지의 특정 측정 단위가 없지만 Int 또는 Double로 변환될 때 특정 단위(예: 초)를 취합니다.
각 유형의 값 집합(Date 및 Duration 제외)에는 특정 값이 없음을 나타내는 no-value라는 값이 포함됩니다. 이 값은 다음 두 가지 경우에 사용됩니다.
특정 값을 알 수 없는 경우(예를 들어 0으로 나누기와 같이 값의 계산을 방해하는 오류가 있는 경우)
no-value는 시계열 유형에 라벨이 필요하지만 값을 알 수 없는 경우 시계열 식별자의 라벨 값입니다. 이는 측정항목이 수집될 때 값을 알 수 없는 경우, 또는 쿼리에서 시계열이 생성되었고 라벨 값을 생성하는 계산으로 인해 값이 만들어지지 않은 경우에 발생할 수 있습니다. no-value는 고유한 값입니다. 따라서 지정된 라벨의 실제 값이 있는 다른 식별자와 시계열 식별자를 구분합니다.
IEEE NaN과 빈 문자열인 문자열 값과 완전히 다른 값은 없습니다. 한 지점의 값은 no-value가 될 수 없습니다.
시계열 종류에서는 시계열 지점 값의 의미를 설명하고 각 지점의 범위를 제한합니다. 시계열 종류에는 세 가지가 있습니다.
게이지: 게이지 시계열에 있는 지점 값은 해당 지점의 종료 시간에 취한 측정값입니다. 게이지 스트림의 한 지점에는 시작 시간이 없으므로 범위는 단일 시점입니다. 한 지점의 값은 다음 중 하나를 나타낼 수 있습니다.
일부 변수(예: 대기열 길이 또는 사용 중인 메모리 양)에서 취한 샘플
해당 지점의 시간에서 참이고 다음 지점이 될 때까지 참을 유지하는 상태 품질
시계열에서 지점과 그 다음 이른 지점 사이의 기간에 적용되는 일부 수량(평균, 최댓값 등)의 요약
델타: 숫자 값(Int 또는 Double)의 경우 각 지점은 시작 시간(존재하는 경우)과 종료 시간 사이를 말하는 범위에 걸쳐 측정된 값의 변화를 나타냅니다. 분포 값의 경우 지점의 범위에서 발생한 숫자 값의 모집단이 있습니다. Delta 시계열 종류는 Int, Double 또는 Distribution의 값 유형이어야 합니다.
델타 시계열의 경우 두 지점의 범위가 겹칠 수 없으므로 각 지점은 측정된 값(숫자) 또는 값의 분리된 모집단(Distribution)의 독립적인 변화를 나타냅니다. 각 지점의 범위는 그 다음 이른 지점의 범위 직후에 시작되므로 시계열은 해당 시간 범위를 포괄적으로 설명합니다.
누적: 범위가 겹치는 델타 시계열로 간주할 수 있습니다. 두 지점의 범위가 겹치는 경우 시작 시간이 동일해야 한다는 제약이 있습니다. 따라서 각 지점은 시작 시간이 공통된 마지막 지점과 비교하여 측정한 일부 값의 점진적 증가를 나타냅니다.
누적 측정항목은 외부 소스의 데이터에서 시계열을 수집하는 강력한 방법입니다.
소스는 값을 수집할 때마다 카운터 또는 누산기를 재설정할 필요가 없으며 여러 기간으로 쉽게 모니터링할 수 있습니다.
일부 지점이 누락된 경우 누적 횟수는 손실되지 않습니다. 다음 지점에는 누락된 지점의 시작 시간을 포함하여 시작 시간 이후의 모든 카운트가 있습니다. 시간 해상도만 손실됩니다.
그러나 쿼리에서 누적 시계열이 관찰되는 경우는 많지 않습니다. 쿼리에서 반환된 시계열에서의 작업을 간소화하기 위해 누적 시계열을 가져오면 각 지점의 범위가 그 다음 이른 지점에 시작되고 그 값이 그 다음 이른 지점 이후의 변화가 되어 델타 시계열로 자동 변환됩니다. 이렇게 해도 존재하는 정보는 변경되지 않지만 각 지점은 다른 지점과 무관하게 됩니다. (이는
fetch_cumulative
에 의해 재정의될 수 있습니다.)지점에 값이 두 개 이상 있는 시계열의 경우, 각 값에는 게이지 또는 델타만 가능한 시계열 종류가 있습니다. 값에 델타 종류가 있으면 전체 측정항목에 델타 종류가 있습니다(따라서 각 지점에는 시작 및 종료 시간이 생깁니다). 그렇지 않으면 측정항목에 게이지 종류(와 종료 시간만)가 있습니다.
테이블
동일한 시계열 유형(모니터링 리소스 유형 및 측정항목 유형)의 모든 시계열은 논리적으로 관계형 테이블로 구성됩니다. 이 테이블에는 모니터링 리소스 유형 이름과 측정항목 유형 이름이 나란히 쓰여 있는 테이블 이름이 있습니다.
테이블에는 그 안에 포함된 각 시계열의 각 지점에 대해 하나의 행이 있습니다. 테이블에는 다음과 같은 종류의 열이 있습니다.
시계열 식별자 열 - 모니터링 리소스 유형과 측정항목 유형으로 지정한 각 시계열 식별자 라벨의 한 가지 열. 열의 이름은 라벨의 이름(키)이고 열의 유형은 라벨의 값 유형입니다. 모니터링 리소스 라벨과 측정항목 라벨의 이름이 같으면 측정항목 라벨 열의 이름 앞에
metric.
이 추가됩니다.시계열은 해당하는 각 시계열 식별자 열에 대해 동일한 값을 가진 테이블의 모든 행으로 구성됩니다.
시간 열 - 시계열에 있는 지점의 범위에서 파생됨.
end()
함수에서 액세스하는 종료 시간 열은 항상 하나입니다(실제로 열에 이름을 붙이지는 않음). 측정항목이 델타 시계열 종류인 경우start()
함수가 액세스하는 시작 시간 열이 있습니다. 누적 시계열 종류가 있는 측정항목의 시작 시간 열도 있습니다. 두 열 모두 Date 유형의 값을 갖습니다.값 열 - 시계열의 지점 값에 있는 각 값에 해당하는 열. 각 열에는 해당 값에 지정된 이름과 유형이 있으며 값 열은 측정항목 유형에서 지정한 순서와 동일합니다. 값 이름과 이름이 같은 모니터링 리소스 또는 측정항목 라벨이 있는 경우 측정항목 유형에 지정된 값 이름 앞에
value.
를 붙여 열 이름을 구성합니다.
한 시계열의 모든 지점은 시계열 식별자 열의 값이 동일하며 이 열은 시계열을 고유하게 식별합니다. 시계열 열과 종료 시간 열은 테이블의 기본 키를 구성하여 행과 지점을 고유하게 식별합니다.
위는 데이터베이스에 저장된 시계열로 구성된 내장 테이블을 설명합니다. 쿼리는 내장 테이블을 초기 입력으로 취하고 연속 테이블 연산(필터링, 집계, 조인 등)을 수행하여 이 테이블 연산의 결과물로 중간 파생 테이블을 생성합니다.
파생 테이블은 내장 테이블과 구조는 동일하지만 다음과 같은 차이점이 있습니다.
테이블을 생성한 변환이 모든 모니터링 리소스 라벨 열을 보존하는 경우 이 테이블은 계속 모니터링 리소스 유형과 연결됩니다. 그렇지 않으면 모니터링 리소스 유형과 연결되지 않습니다. 이는 메타데이터에 중요합니다(다음 섹션에서 설명).
테이블은 모니터링 리소스 유형과 측정항목 유형이 아닌 테이블 유형으로 설명됩니다. 테이블 유형은 라벨 집합에 시계열 식별자의 모든 열이 포함된다는 점을 제외하면 측정항목 유형과 동일합니다. 테이블의 실제 파생에 따라 시계열 식별자 열은 실제 모니터링 리소스 유형 또는 측정항목 유형으로 지정된 열과 관련이 없을 수 있습니다.
파생 테이블에는 이름이 없습니다.
메타데이터
모니터링 리소스 유형에는 메타데이터 유형이 있으며, 각 유형은 특정 모니터링 리소스 유형의 모든 인스턴스와 값을 연결합니다. 각 메타데이터 유형에는 이름과 값 유형(String, Int 또는 Bool)이 있습니다.
메타데이터의 두 종류는 다음과 같습니다.
시스템 메타데이터 - 모니터링 리소스를 만들고 관리하는 서비스에서 생성됩니다. 시스템 메타데이터의 이름은
metadata.system_labels.<key>
형식입니다. 여기서<key>
는 특정 종류의 메타데이터를 식별합니다.사용자 메타데이터 - 사용자가 특정 모니터링 리소스에 라벨을 첨부할 수 있는 서비스를 사용하는 경우 표시됩니다. 사용자 메타데이터의 이름은
metadata.user_labels.<key>
형태입니다. 여기서<key>
는 사용자가 항목에 연결한 라벨의 키입니다. 예를 들면metadata.user_labels.my_key
입니다. 사용자 메타데이터의 값은 항상 String 유형입니다.
모니터링 리소스와 연결된 테이블(내장 또는 파생)에는 모니터링 리소스 유형과 연결된 각 메타데이터 유형당 하나의 가상 값 열이 있을 수 있습니다. 테이블의 각 행별로 메타데이터 열에는 행의 종료 시간 열에 해당 메타데이터의 값이 있습니다. 이러한 추가 메타데이터 열은 실제로 테이블에 포함되지는 않지만 테이블 행에서 작동하는 표현식의 메타데이터 이름을 지정하여 참조하는 것처럼 쿼리 표현식에서 참조할 수 있습니다.
정렬
시계열은 지점의 종료 시간이 일정한 간격으로만 발생하는 경우 일시적으로 정렬(또는 바로 정렬)됩니다. 시계열의 모든 지점에 종료 시간이 있고 해당 종료 시간이 정렬 기본 시간 전후 정렬 기간의 배수가 되는 경우 시계열을 특정 정렬 기본 시간과 기간으로 정렬합니다. 예를 들어 정렬 기본 시간이 10:03이고 정렬 기간이 5분인 경우 09:48, 09:53, 09:58, 10:03, 10:08 모두 지점의 유효한 종료 시간이 됩니다.
테이블의 시계열에 델타 시계열 종류가 있는 경우 각 지점의 시작 시간은 종료 시간에서 해당 기간의 지속 시간만큼 앞서야 하며 모든 지점의 지속 시간은 길이가 동일하게 됩니다. 시작 시간이 누적인 테이블은 일반적으로 서로 다른 시계열 사이에 지점의 시작 시간을 지정할 수 없기 때문에 정렬할 수 없습니다.
테이블을 구성하는 모든 시계열을 동일한 정렬 시간 및 기간으로 정렬하면 테이블이 해당 시간 및 기간으로 정렬됩니다.
테이블이 정렬되면 서로 다른 시계열의 지점이 시간 순서대로 정렬됩니다. 그러면 서로 다른 시계열을 결합하는 연산을 수행할 수 있습니다. 예를 들어 모든 모니터링 리소스에 대한 일부 측정항목의 합계인 시계열을 가져오려면 개별 시계열의 지점이 '정렬'되어야 합니다. 그런 다음 시계열의 지점 값 결과는 개별 시계열의 지점 값을 합계한 것입니다.
구문 및 의미
어휘 요소
쿼리 텍스트는 다음과 같은 문법 규칙으로 설명되는 일련의 토큰으로 구성됩니다.
- 토큰은 아래 문법에서 대문자로 표시된 모든 기호 중 하나로 설명됩니다.
base_string
이외의 토큰에는 공백이 없습니다. 공백은 공백, 탭, 줄바꿈, 주석입니다. 주석은#
으로 시작되고 줄바꿈으로 끝나는base_string
이 아닌 모든 텍스트입니다.- 토큰 사이의 공백은 토큰을 분리하는 목적을 제외하고 무시됩니다.
- 이 문법을 통해
BARE_NAME
(특정 문맥에서만 인식됨) 이외의 단일 토큰으로 인식되는 경우 두 개의 인접 토큰을 공백으로 구분해야 합니다.
ID : letter { letter_num_under } .
QUOTED_COLUMN : ( 'c' | 'C' ) base_string .
BARE_NAME : ( '/' | letter_num_under ) { letter_num_under | '.' | '/' | '-' } .
NUMBER : digit { digit } [ fraction | '.' ] [ exponent ] | fraction [exponent] .
STRING : [ 'r' | 'R' ] base_string .
DURATION : digit { digit } ( 's' | 'ms' | 'us' | 'm' | 'h' | 'd' | 'w' ) .
DATE : ( 'd' | 'D' ) base_string .
letter_num_under : letter | digit | '_' .
base_string : '\'' any-but-quote '\'' | '"' any-but-quote-quote '"' .
fraction : '.' digit { digit } .
exponent : ( 'e' | 'E' ) [ '-' | '+' ] digit { digit } .
letter - an ASCII letter
digit - an ASCII digit
any-but-quote - any Unicode character except the ASCII control codes or `'`.
any-but-quote-quote - any Unicode character except the ASCII control codes or `"'.
식별자(ID
)는 Monitoring Query Language에 포함된 기본 제공 테이블 연산과 함수의 이름을 지정하고 표현식의 열과 메타데이터 이름을 지정하는 데 사용됩니다. 구문은 ID
가 테이블 연산 또는 함수 이름일 수 있는 위치와 ID
가 열 이름일 수 있는 위치를 구분합니다. 따라서 열 이름으로 사용할 수 없는 '예약된' 식별자는 없습니다. QUOTED_COLUMN
은 식별자로 파싱하지 않을 열의 이름을 지정하는 데 사용됩니다. 예를 들면 c'total cpu'
가 있습니다.
NUMBER
, STRING
, DURATION
, DATE
토큰은 리터럴 값을 식별합니다.
NUMBER
뒤에 리터럴 값의 측정 단위를 STRING
으로 부여하는 unit
이 올 수 있습니다.
STRING
에는 유니코드 문자가 포함될 수 있습니다. r
또는 R
로 프리픽스가 지정되지 않으면 일반 이스케이프 시퀀스가 인식됩니다. DURATION
의 서픽스는 기간(초, 밀리초, 마이크로초, 분, 시, 일, 주)이 지정되는 방법을 나타냅니다. 날짜의 base_string
에는 2010/06/23-19:32:15-07:00
형식의 날짜가 포함됩니다. 여기서 첫 번째 -
는 공백일 수 있고 시간대(-07:00
)는 삭제될 수 있습니다(예: 초, 분 또는 시).
나머지 토큰은 문법에서 따옴표로 묶인 구두점 및 연산자 토큰입니다(예: '^'
또는 '<='
). 이러한 토큰은 ^
, <=
, <
, ==
, =
=~
, >=
, >
, ||
, |
, _
, -
, ,
, ;
, ::
, :
, !=
, <>
, !~
, !
, //
, /
, .
, (
, )
, [
, ]
, {
, }
, *
, &&
, %
, +
입니다.
쿼리 구조
쿼리는 일련의 테이블 연산(table_op
)으로 구성되며, 파이프 연산자(|
)로 결합됩니다. 각 테이블 연산은 테이블을 입력으로 취하고 테이블을 출력으로 생성합니다. 한 테이블 연산의 테이블 출력은 다음 테이블 연산으로 이동되어 자체 테이블 출력을 생성합니다.
query : table_op { '|' table_op } .
table_op : basic_table_op | grouped_table_op | shortcut_table_op .
basic_table_op : ID [ arg { ',' arg } ] .
arg : table_name | expr | map .
grouped_table_op: '{' query { ';' query } '}' .
세 가지 종류의 테이블 연산(table_op
)은 다음과 같습니다.
basic_table_op
는 여기에 설명된 대로 수행할 종류의 작업에 이름을 지정하는ID
로 시작합니다. 그런 다음 테이블 연산의 세부정보를 제공하는 인수(arg
)가 이어집니다. 각 종류의basic_table_op
는 0, 1 또는 다수의 테이블을 입력으로 취하고 하나의 테이블을 출력으로 생성합니다.grouped_table_op
는 순서가 지정된 쿼리 목록으로 구성됩니다. 각 쿼리는 테이블 하나를 생성하며grouped_table_op
결과는 이러한 테이블의 순서가 지정된 목록입니다. 각 쿼리는grouped_table_op
에 대한 입력인 동일한 입력 테이블 0개 이상을 입력으로 사용합니다.shortcut_table_op
는basic_table_op
의 단축키 표기법(여기에서 설명)입니다.
한 table_op
의 테이블 출력은 파이프 연산자(|
)에 의해 다음 table_op
에 입력으로 전달됩니다. 다음은 한 테이블 연산에 의해 파이프 연산자(생성자)의 왼쪽으로 출력된 테이블을 파이프 연산자(소비자)의 오른쪽으로 전달하는 규칙입니다.
테이블 입력이 없는 테이블 연산은 소비자일 수 없습니다.
단일 테이블을 출력하는 생성자와 단일 테이블을 사용하는 소비자의 경우 생성자 출력 테이블은 소비자에 대한 입력입니다.
여러 테이블을 출력하는 생성자와 단일 테이블을 사용하는 소비자의 경우 소비자는 각 입력 테이블에 별도로 적용되며 소비자 테이블 연산의 출력은 각 입력 테이블당 하나의 테이블입니다.
여러 테이블을 출력하는 생성자와 여러 테이블을 사용하는 소비자의 경우 생성된 모든 테이블이 소비자에게 입력됩니다.
단일 테이블을 생성하는 생성자와
grouped_table_op
인 소비자의 경우 단일 테이블은grouped_table_op
에 있는 각query
의 첫 번째 테이블 연산에 대한 입력입니다.grouped_table_op
가 여러 테이블을 생성하는 생성자의 소비자가 되는 것은 유효하지 않습니다.grouped_table_op
에서 각query
의 마지막table_op
는 테이블을 하나만 생성해야 합니다.
테이블 연산의 'arg' 요소는 입력 테이블을 출력 테이블로 처리하는 방법에 대한 정보를 테이블 연산에 제공합니다.
arg
는 다음 세 가지 중 하나일 수 있습니다.
테이블 이름(
table_name
) - 테이블 이름을 지정하거나 Cloud Monitoring 데이터베이스에서 가져올 테이블 이름에 포함됩니다.표현식(
expr
) - 값을 계산하는 수식입니다. 정적으로 알려진 리터럴 값이거나 테이블 연산의 입력 테이블에 있는 하나 이상의 행에서 나온 열 값으로 계산한 값일 수 있습니다.테이블 작업의 출력 테이블에서 열을 계산하는 방법을 설명하는 지도(
map
).map
에는 열 값을 계산하는expr
이 한 개 이상 포함됩니다.
테이블 이름
table_name
은 모니터링 리소스 유형, 측정항목 유형, 그룹 또는 테이블을 지정합니다. 추가 처리를 위해 시계열 데이터베이스에서 테이블을 가져오는 테이블 연산에 사용됩니다.
table_name : name { '::' name } .
name : string | BARE_NAME | ID .
단일 name
은 모니터링 리소스 유형 또는 측정항목 유형(예: 모니터링 리소스 유형 gce_instance
또는 aws_dynamodb_table
또는 측정항목 유형 loadbalancing.googleapis.com/http/backend_latencies
)을 나타냅니다.
모니터링 리소스 유형은 그룹 이름을 사용하거나 모니터링 리소스 유형 이름 뒤에 ::
및 그룹 이름을 사용하여 지정할 수도 있습니다. 그룹이 단일 모니터링 리소스 유형을 지정할 때는 전자 방식을 따를 수 있으며 그렇지 않은 경우에는 후자 방식을 따릅니다.
내장 테이블에는 모니터링 리소스 유형 이름 뒤에 ::
및 측정항목 유형 이름을 사용합니다. 예를 들면 gce_instance :: loadbalancing.googleapis.com/http/backend_latencies
입니다.
표현식
표현식(expr
): 값을 계산하는 수식입니다. 테이블 연산의 인수로 사용되며, 테이블 연산이 입력 테이블에서 수행할 변환을 설명하는 데 도움이 됩니다. expr
은 리터럴 표현식일 수도 있고 동적 표현식일 수도 있습니다.
expr
이 리터럴이면 리터럴 값 및 인수가 리터럴 값인 간단한 함수 호출로만 구성됩니다. 이러한 표현식의 값은 쿼리가 테이블에 적용되기 전에 결정됩니다.
expr
이 동적이면 테이블 열에 대한 참조를 포함할 수 있으며 입력 테이블의 하나 이상의 행에서 값을 계산하는 데 사용됩니다.
동적 표현식에는 세 가지 종류가 있습니다.
값 표현식: 값 표현식은 적용되는 각 입력 테이블 행의 값을 생성합니다. 테이블 열에 대한 참조를 포함할 수 있으며, 이러한 입력 참조는 행의 해당 열 값으로 평가됩니다.
집계 표현식 집계 표현식은 입력 테이블 행 집합 값을 생성합니다. 다음 세 가지 부분으로 나눌 수 있습니다.
각 행의 값을 생성하도록 각 입력 행에 개별적으로 적용되는 값 표현식 하나 이상. 이러한 값 표현식은 집계 함수에 대한 인수입니다.
값 표현식으로 생성된 입력 값 모음을 취해 하나의 결과 값으로 줄이는 하나 이상의 집계 함수
집계 함수에서 나온 값을 취해 전체 표현식의 값을 생성하는 집계 함수에 대한 외부 표현식
예를 들어 집계 표현식
sum(if(status >= 500, val(), 0)) / sum(val())
은 다음과 같은 부분으로 구성됩니다.값 표현식은
if(status >= 500, val(), 0)
및val()
입니다. 이는 각 입력 행에 적용되어 값 컬렉션 두 개를 만듭니다.애그리게이터는 두 개의
sum
함수 호출이며, 각 함수는 인수인 값 표현식으로 생성된 값 모음을 입력으로 취합니다.외부 표현식은 전체 표현식의 값을 생성하기 위해 각
sum
집계 함수의 최종 출력에 적용되는 나누기 연산자(/
)입니다.
정렬 표현식: 정렬 표현식은 정렬 함수에 대한 단일 호출로 구성됩니다. 정렬 함수는 입력 시계열에서 출력 값을 생성하며,
align
에서 정렬 테이블을 생성하는 데 사용됩니다.
각 표현식은 연산자로 연결된 opnd
요소(아래 정의되어 있음)로 구성됩니다.
expr : term { infix_op term } .
term : { prefix_op } opnd .
infix_op : '&&' | '||' | '^'
| '==' | '=' | '!=' | '<>' | '<' | '>' | '<=' | '>=' | '=~' | '!~'
| '+' | '-'
| '*' | '/' | '//' | '%' .
prefix_op : '+' | '-' | '!' .
연산자는 우선순위에 따라 일반적인 방식으로 작동합니다. 다음 표에서는 다섯 개의 그룹으로 연산자를 정렬합니다. 그룹의 모든 연산자는 우선순위가 동일하며 상위 그룹이 더 긴밀하게 결합됩니다. 우선순위가 같은 연산자는 왼쪽에서 오른쪽으로 적용됩니다. 각 연산자는 피연산자에 적용되는 테이블에 지정된 함수에 해당합니다.
연산자 | 함수 | 연산 |
---|---|---|
* / // % |
mul div div rem |
곱하기 나누기 정수 나누기 정수 나머지 |
+ - |
add sub |
더하기 빼기 |
== = != <> <= >= > < =~ !~ |
eq ne le ge gt lt re_full_match ! re_full_match |
같음 비교 같지 않음 비교 작거나 같음 비교 크거나 같음 비교 보다 큼 비교 보다 작음 비교 정규 표현식 전체 일치 정규 표현식 전체 일치 아님 |
&& |
and |
논리 및 |
|| |
or |
논리 또는 |
프리픽스 연산자 +
, -
및 !
는 단항 함수 pos
, neg
및 not
에 해당하며, 각각 이항 연산자 앞에 적용됩니다.
따라서 a < b && a + b + c / -d == 5
는 (a < b) && (((a + b) + (c / (-d))) == 5)
와 동일하며, 이는 and(lt(a, b), eq(add(add(a, b), div(c, neg(d))), 5))
와 같습니다.
연산자는 피연산자(opnd
)에서 작동합니다.
opnd : literal | column_meta_name | '_' | '(' expr ')' | call_chain .
literal : NUMBER [ unit ] | string | DURATION | DATE .
unit : STRING
string : STRING { STRING } .
column_meta_name : id { '.' id } .
id : ID | QUOTED_COLUMN .
각 opnd
는 값을 계산하는 특정한 방식에 해당합니다.
literal
은 지정된 리터럴 토큰의 값입니다.NUMBER 리터럴 뒤에 리터럴 값의 측정 단위를 부여하는
unit
이 올 수 있습니다(예: 33바이트의33 'By'
).string
은 한 개의 문자열 값에 연결되는 하나 이상의STRING
토큰으로 구성됩니다. 따라서'a-' 'b'
는'a-b'
와 같은 값을 가집니다.
column_meta_name
은 입력 테이블에서 열 또는 가상 메타데이터 열의 이름을 지정하고 표현식이 적용되는 입력 행의 해당 열 값으로 평가됩니다._
는 기본값을 나타냅니다. 이는 선택적 정식 인수에 대한 실제 인수로만 제공될 수 있습니다.'(' expr ')'
은expr
의 값을 괄호로 묶은 표현식입니다.call_chain
은 하나 이상의 연쇄 함수 호출입니다.
call_chain : [ ID arg_list ] { '.' call } .
arg_list : '(' [ expr { ',' expr } [ ',' ] ] ')' .
call : ID [ arg_list ] .
call_chain의 각 ID
이름은 인수 0개 이상에 적용되는 함수를 지정합니다. 함수 호출의 인수는 입력 테이블의 값 열에서, 호출 체인의 이전 call
의 결과에서 또는 arg_list
의 expr
값에서 제공될 수 있습니다.
호출 체인이
ID
로 시작하고 그 앞에.
이 없으면 다음arg_list
의expr
에서 호출된 함수에 대한 인수를 제공합니다.예를 들어
add(error_count, 1)
는add
함수를 두 인수인column_meta_name
error_count
및literal
1
에 적용합니다. 이는error_count + 1
과 같습니다.call_chain
이'.' call
로 시작하면 입력 테이블의 값 열이 호출된 함수의 첫 번째 인수입니다.call
에arg_list
가 있으면arg_list
가 추가 인수를 제공합니다.예를 들어 값 열이
num
및den
인 테이블에 적용된.div
는div(num, den)
또는num / den
과 같습니다. 단일 값 열count
가 있는 테이블에 적용된.add(3)
표현식은add(count, 3)
또는count + 3
과 같습니다.호출 체인의 첫 번째가 아닌
call
에서 호출되는 함수는 첫 번째 인수로 사용되며 호출 체인에서 이전에 호출된 함수의 출력이 사용됩니다.call
에arg_list
가 있으면arg_list
가 추가 인수를 제공합니다.예를 들어 단일 값 열
error_count
가 있는 테이블에 적용된.mul(3).div(4)
는div(.mul(3), 4)
와 동일하며, 이는error_count * 3 / 4
또는(error_count * 3) / 4
와 동일한div(mul(error_count, 3), 4)
에 해당합니다.
테이블의 종료 시간 열과 시작 시간 열에는 열 이름이 없습니다.
시간 열 값은 end
함수와 start
함수를 사용하여 액세스합니다.
지도
map
은 출력 행의 열 값을 계산하고 이름을 지정합니다.
map
은 사용 위치에 따라 출력 행의 시계열 식별자 열을 계산하는 시계열 식별자 map
또는 출력 행의 값 열을 계산하는 값 map
이 됩니다.
map : [ modifier ] '[' [ maplet { ',' maplet } ] ']' .
modifier : ID .
maplet : [ column_name ':' ] expr .
column_name : ID | QUOTED_COLUMN .
maplet
의 각 expr
은 출력 열 값을 계산하고 column_name
은 열 이름을 지정합니다. column_name
이 지정되지 않으면 expr
에서 구성됩니다. expr
이 입력 열의 이름인 경우 column_name
이 동일합니다. 함수가 적용되면 이름에 추가됩니다. 예를 들어 sum(error_count / 3)
은 error_count_div_sum
이름을 가져옵니다.
map
이 계산하는 출력 열(시계열 식별자 또는 값)은 map
의 maplet
과 입력 테이블의 해당 열 종류(시계열 식별자 또는 값)에서 제공됩니다. 이 방법은 modifier
에 따라 달라집니다.
modifier
없음 출력 행의 해당 열은map
의maplet
에서 지정된 열로 정확하게 구성됩니다. 열 이름은ID
또는QUOTED_COLUMN
에서 명시적으로 제공되거나expr
형태에서 파생됩니다. 출력 행의 열 값은expr
값입니다.각
maplet
에는 출력 테이블의 모든 열에서 고유한 열 이름(명시 적이거나 파생된 이름)이 있어야 합니다.예를 들어 값 열
num
,den
가 있는 테이블에 값 열map
으로[ratio: num/den]
을 적용하면 값 열ratio
가 있는 출력 테이블이 생성되며, 여기서ratio
는 두 입력 열의 비율입니다.시계열 식별자 열
project_id
,zone
,instance
가 있는 테이블에 시계열 식별자map
으로[zone]
을 적용하면 시계열 식별자 열zone
이 있는 테이블이 생성되며, 이 열의 값은zone
입력 테이블 열과 동일합니다.add
입력 행의 해당 종류(시계열 식별자 또는 값)의 모든 열이 출력 행에 포함됩니다. 또한map
의 각maplet
에는 이름과 값이maplet
로 지정된 추가 출력 열이 있습니다.각
maplet
에는 출력 테이블의 모든 열에서 고유한 열 이름(명시 적이거나 파생된 이름)이 있어야 합니다.예를 들어 값 열
num
및den
이 있는 테이블에add[ratio: num/den]
를 값map
로 적용하면 값 열num
,den
,ratio
이 있는 출력 테이블이 생성되며, 여기서ratio
열 값은 다른 두 열의 비율입니다.update
열 이름이map
의maplet
열 이름과 같지 않은 해당 종류(시계열 식별자 또는 값) 입력 행의 모든 열은 출력 행에 포함됩니다. 또한map
의 각maplet
에는 이름과 값이maplet
로 지정된 추가 출력 열이 있습니다.각
maplet
에는 출력 테이블의 모든 열에서 고유한 열 이름(명시 적이거나 파생된 이름)이 있어야 합니다. 대체되는 입력에서 해당 종류의 열 이름을 지정할 수 있습니다.예를 들어 다음은 시계열 식별자
map
입니다.update[job: re_extract(job, '[^-]*-(.*)', r'\1'), kind: re_extract(job, '([^-]*)-.*', r'\1')]
시계열 식별자 열
user
,job
,zone
이 있는 테이블에서 사용하면 시계열 식별자 열user
,job
,zone
,kind
가 있는 출력 테이블이 생성됩니다.drop
각maplet
은 해당 종류의 입력 열 이름인expr
로 구성되어야 합니다. 출력 열은maplet
의expr
에 이름이 지정된 입력 열을 제외하고 해당 종류의 모든 입력 열로 구성됩니다.각
maplet
에는column_name
이 없어야 하며expr
은 입력 테이블에서 해당 종류의 열 이름만 지정하면 됩니다.예를 들어 시계열 식별자
user
,job
,zone
이 있는 테이블에 시계열 식별자map
으로drop [job, user]
를 적용하면 시계열 식별자 열zone
이 있는 출력 테이블이 생성됩니다.ignore
각maplet
은 열 이름인expr
로 구성되어야 합니다. 이름이 해당 종류의 입력 열 이름이면 열은 출력 열에 표시되지 않습니다.maplet
열 이름에 해당 종류의 입력 테이블 열 이름을 지정하지 않으면maplet
은 아무런 영향을 미치지 않습니다. 따라서 출력 열은maplet
에서expr
에 이름이 지정된 열을 제외하고 해당 종류의 모든 입력 열로 구성됩니다.각
maplet
에는column_name
이 없어야 하며expr
는 단순히 열 이름이어야 하지만 입력 테이블의 열 이름일 필요는 없습니다.maplet
이 입력 테이블의 열 이름을 지정하지 않으면 무시됩니다.예를 들어 시계열 식별자 열이
user
,job
,zone
인 테이블에 시계열 식별자map
로ignore [job, instance]
를 적용하면 시계열 식별자 열user
및zone
이 있는 출력 테이블이 생성됩니다(mapletinstance
무시됨).rename
각maplet
에는 명시적인column_name
이 있어야 하며 입력 테이블에 해당 종류의 열만 참조하는expr
이 있어야 합니다. 출력 열은 입력 테이블에서 해당 종류의 모든 열이지만maplet
의column_name
으로 지정한 새 이름으로maplet
에서 참조되는 경우입니다.각
maplet
의column_name
은 출력 테이블의 열 이름 간에 고유해야 합니다.예를 들어 값 열
num
,den
,ratio
이 있는 테이블에 값 열map
으로rename[numerator : num, denominator : den]
을 적용하면 값 열ratio
,numerator
,denominator
가 있는 출력 테이블이 생성됩니다.
측정 단위
모든 숫자 값(Int, Double, Distribution)에는 해당 값에서 사용되는 측정 단위를 나타내는 단위와 연관된 측정 단위가 있을 수 있습니다. 단위는 측정 단위 통합 코드(UCUM)의 하위 집합을 따르는 문자열로 표현됩니다. 예를 들어 바이트 수를 나타내는 값은 'By' 단위와 바이트의 전송 속도를 나타내는 다른 'By/s' 단위를 가집니다.
단위는 테이블 작업에서 생성된 테이블 열과 표현식의 값에 연결됩니다. 단위는 유형과 동일한 방식으로 열 또는 표현식과 정적으로 연결됩니다. 숫자 유형의 열이나 표현식에는 단위가 연결될 수 있지만 반드시 그럴 필요는 없습니다.
테이블의 열에 연결된 단위는 다음과 같은 소스에서 가져옵니다.
측정항목 설명은 측정항목 값의 단위를 지정할 수 있으며 측정항목을 설명하는 문서(예: 여기)에서 이러한 측정항목을 확인할 수 있습니다.
fetch
및metric
테이블 작업에서 생성되는 테이블의 값 열에는 측정항목 설명이 지정한 단위가 포함됩니다.입력 테이블의 열 사본인 출력 테이블 열은 입력 테이블 열과 동일한 단위를 갖습니다. 예를 들어
filter
테이블 작업에서는 입력 테이블의 모든 열에 있는 단위가 변경되지 않고 출력에 전달됩니다.union
테이블 작업은 여러 테이블을 하나로 결합하며 모든 테이블에는 동일한 열이 있어야 합니다. 입력 테이블의 각 값 열에는 연결된 단위가 없거나 다른 모든 입력 테이블의 열에 연결된 단위와 동일한 단위가 있어야 합니다(있는 경우). 입력 테이블의 열에 대해 단위가 제공된 경우, 해당 열은 출력 테이블의 해당 단위를 가집니다. 입력 테이블에 열에 지정된 단위가 없는 경우 해당 열에는 출력 단위가 없습니다.출력 테이블 열 값을 계산하는
expr
이 포함된 테이블 작업의 경우, 출력 열의 단위는 아래에 설명된 대로 해당expr
에 연결됩니다.
expr
에 연결된 단위는 expr
의 형식에 따라 다릅니다.
자체적인 리터럴 값에는 단위가 없습니다. 하지만 값에 단위를 지정하는 문자열을 통해 (Int 또는 Double) 리터럴에 단위가 지정될 수 있습니다. 따라서
3 "By"
는 유형이 Int이고 단위가 바이트(By
)인 값 3이 있는expr
입니다.단위가 있는 경우 열 참조 표현식은 입력 테이블의 명명된 열에서 단위를 가져옵니다.
함수 및 연산자는 입력 값 단위에서 출력 값에 대한 측정 단위를 가져옵니다. 따라서
amount
의 단위가By
이고time
의 단위가s
이면amount / time
의 단위는By/s
입니다. 두 개의 숫자 인수를 취하는 함수에는 일반적으로 두 인수 모두 단위가 있거나 모두 단위가 없어야 합니다. 각 함수의 문서에서는 해당 함수를 통한 측정 단위 처리 방법을 설명합니다.대부분의 함수에는 단위 동의에 대한 요구사항이 있습니다. 예를 들어
add
에서는 두 피연산자에 단위가 있으면 모두 동일한 단위를 사용해야 합니다. 이러한 요구사항은 각 함수의 문서에 설명되어 있습니다.scale
및cast_units
함수에는 단위별 기능이 있습니다.scale
함수는 단위가 하나인 값을 다른 단위의 값으로 변환하는 배율로 곱합니다. 따라서 단위가 'KiBy'(키비바이트)인expr
ev
의 경우scale(ev, "By")
는ev
를 1024로 나누고 결과 단위By
를 제공합니다. 이는ev * 1024 'By/KiBy'
와 동일합니다.cast_units
함수는 인수의 원래 단위와 관계없이(있는 경우) 지정된 단위가 포함된 인수를 반환합니다. 따라서cast_units(ev, 'By/s')
의 값은ev
값이 변경되지 않지만By/s
단위로 표시됩니다.
MQL에서 지원하는 UCUM 단위의 하위 집합은 다음 문법을 따르는 문자열 값으로 제공됩니다.
digit : '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9'
exponent : [ '+' | '-' ] { digit }
simple_unit : [ PREFIX_SYMBOL ] ATOM_SYMBOL
annotatable : '10^' exponent | simple_unit
component : annotatable [ annotation ] | '1'
annotation : “{” ANNOTATION-STRING “}” | annotatable | annotation
unit : component { '.' component } { '/' component }
simple_unit
은 ATOM_SYMBOL
로 지정된 단위를 지정하며 PREFIX_SYMBOL
로 지정된 배율로 프리픽스가 선택적으로 붙습니다.
ATOM_SYMBOL
는 다음의 기본 측정 단위를 제공합니다.
텍스트 | 의미 |
---|---|
초 | 초 |
분 | 분(60초) |
h | 시간(60분) |
d | 일(24시간) |
주 | 주(7일) |
비트 | 비트 |
제공: | 바이트(8비트) |
% | 10^-2(측정기준 없는 비율 %) |
m | 미터 |
g | 그램 |
K | 켈빈 |
C | 쿨롬 |
Hz | 헤르츠(1/s) |
J | 줄(kg.m.m/s/s) |
W | 와트(kg.m.m/s/s/s)(J/s) |
A | 앰프(C/s) |
V | 볼트(kg.m.m/s/s/C)(J/C) |
PREFIX_SYMBOL
은 이전 기본 단위를 위한 배율을 제공합니다.
텍스트 | 의미 | scale |
---|---|---|
k | 킬로 | 10^3 |
M | 메가 | 10^6 |
G | 기가 | 10^9 |
T | 테라 | 10^12 |
P | 페타 | 10^15 |
E | 엑사 | 10^18 |
Z | 제타 | 10^21 |
Y | 요타 | 10^24 |
m | 밀리 | 10^-3 |
u | 마이크로 | 10^-6 |
n | 나노 | 10^-9 |
p | 피코 | 10^-12 |
f | 펨토 | 10^-15 |
a | 아토 | 10^-18 |
z | 젭토 | 10^-21 |
y | 욕토 | 10^-24 |
KI | 키비 | 2^10 |
Mi | 메비 | 2^20 |
GI | 기비 | 2^30 |
Ti | 테비 | 2^40 |
Pi | 페비 | 2^50 |
측정기준이 없는 단위는 1
또는 10의 거듭제곱(10^2
과 같은 10^ exponent
)으로 지정될 수 있습니다. 단위 1
은 대부분의 카운터 측정항목에 지정된 단위입니다. 이는 또한 측정기준이 없는 비율을 백분율 %
로 조정하는 것을 지원합니다. 따라서 10^-2
과 %
는 같은 단위입니다. 즉, 백분율에 3으로 추가하는 것은 해당 비율에 .03을 추가하는 것과 동일합니다. exponent
는 -128~127의 범위로 제한됩니다.
annotation
은 annotatable
(simple_unit
또는 10의 거듭제곱)에 연결할 수 있으며 단위의 의미를 변경하지 않는 주석입니다. 단위에 연결되지 않은 주석은 1
단위에 연결된 것처럼 처리됩니다. 따라서 {queries}/s
는 1/s
와 동일하며 1
단위가 {queries}
로 데코레이션됩니다.
단위 문자열은 .
또는 /
으로 연결된 여러 component
문자열로 구성될 수 있습니다. .
커넥터는 단위의 곱셈을 나타내며 /
커넥터는 나눗셈을 나타냅니다. 곱셈과 나눗셈은 왼쪽에서 오른쪽으로 적용됩니다. MQL에서 지원하는 UCUM 단위의 하위 집합에서 모든 나눗셈 커넥터는 모든 곱셈 커넥터 뒤에 와야 합니다. 이렇게 하면 m/s/s
를 원하는 경우 속도 단위를 m/s.s
와 같이 작성할 필요가 없습니다.
UCUM 단위에서 m/s.s
는 m.s/s
또는 m
과 동일합니다.
2개의 단위 문자열은 주석에 관계없이 측정기준 및 배율이 같으면 동일합니다. 측정기준 및 배율은 일반적인 방식으로 결정됩니다.
각
component
에는 측정기준이 없거나 시간, 길이, 데이터, 크기, 요금을 조합한 측정기준을 가집니다. 예를 들어bit
및By
에는 모두 측정기준 데이터가 있습니다. 단위 문자열의 측정기준은 각 주석을 해당 측정기준으로 변환하고, 지정된 단위 문자열에 따라 곱하고 나누고, 분자 및 분모에 나타나는 측정기준을 취소하여 발견됩니다. 따라서b.h/s
(초당 비트 시간)에는 데이터와 시간의 곱을 시간으로 나눈 측정기준이 있으며 시간 측정기준은 데이터 측정기준에서 벗어나기 위해 취소합니다.각 주석은 측정기준의 기본 단위에 관련된 배율을 가집니다. 예를 들어
h
(시간)은 기본 단위s
인 시간 측정기준과 3,600(1시간은 3,600초)의 배율 인수를 가집니다. 단위 문자열의 배율 인수는 곱셈과 나눗셈으로 결합된 각component
의 배율 요소의 조합입니다.
원하는 측정 단위의 문자열의 값으로 숫자 리터럴의 단위를 지정할 수 있습니다. 그래서 3 "m/s"
는 값 3
과 m/s
의 단위를 가지며 10.8 "km/h"
는 값 10.8
과 km/h
의 단위와 같은 속도를 나타냅니다.
scale
함수를 사용하여 1개의 단위를 가진 값이 같은 측정기준의 다른 단위를 가지도록 조정할 수 있습니다. 예를 들어 MiBy
및 By
는 각각 배율 8*1024와 8이 포함된 데이터 측정기준을 가집니다(측정기준 데이터의 기본 단위인 bit
기준). MiBy
단위가 있는 값 x
는 표현식 scale(x, "By")
를 통하여 By
단위가 있는 값으로 조정될 수 있습니다. 이 값은 x
를 1024로 곱하여 단위가 By
인 값으로 만듭니다. 이는 x * 1024 "By/MiBy"
, size * 1024 "By/MiBy"
표현식과 동일하며 결과 표현식의 단위는 MiBy.By/MiBy
또는 By
입니다.
scale
함수는 요청된 단위가 조정되는 값의 단위와 측정기준이 동일한지 확인합니다.
size
가 단위가 'KiBy'인 열인 경우 scale(size, "By")
표현식은 size * 1024 "By/KiBy"
와 동일하며 결과 표현식의 단위는 MiBy.By/MiBy
또는 By
입니다.
MQL이 값의 단위를 자동으로 조정하거나 공급하는 경우가 제한된 경우가 있습니다.
동일한 단위(
add
,sub
, 숫자 비교 연산자,if
,or_else
)를 가지는 2개의 인수가 필요한 함수 f의 경우, 두 인수 중 하나는scale
함수의 두 번째 단위 인수가 없는 호출일 수 있습니다. f에 대한 다른 인수의 단위가scale
함수에 대한 인수 단위와 측정기준이 동일하면scale
함수의 두 번째 인수가 f에 대한 다른 인수의 단위로 자동 설정됩니다. 이렇게 하면 f에 대한 두 인수의 단위가 동일하고 f가 작동할 수 있습니다.예를 들어 단위가 다른 두 개의 숫자를 추가하는 것은 의미가 없으므로
+
연산자는 인수마다 동일한 단위를 필요로 합니다.cache_size
에By
단위가 있고heap_size
에MiBy
단위가 있다면scale(cache_size) + heap_size
표현식은scale(cache_size, "MiBy") + heap_size
표현식과 동일합니다.비교 함수의 경우 한 인수가 다른 인수와 측정기준이 동일하지만 배율이 다른 단위를 가진 리터럴인 경우 리터럴은 같은 배율을 가지도록 조정됩니다.
예를 들어 'cache_size'의 단위가
By
면 표현식cache_size < 3 "KiBy"
는 표현식cache_size < 3072 "By"
와 동일합니다.cache_size
가 Int 유형인 경우cache_size < scale(3 "KiBy", "By")
와 동일하지 않습니다. 이는scale
이 결과물을 비교의 정밀도가 떨어질 수 있는 Double 유형으로 변환하기 때문입니다. 이 경우의 정수 확대에서는 특정 비교를 위해 오버플로의 적절한 반올림 및 처리를 고려합니다.mul
의 인수 또는div
의 약수와 같이 단위가 없는 리터럴에는 단위 '1'이 지정됩니다. 이를 통해 단위를 변경할 의도가 없는 조정 작업을 고려합니다(예: 비율이 두 배인 경우 고려). 단위를 변경하려면scale
을 사용하여 변환에 올바른 배율 요소를 자동으로 선택하는 것이 좋습니다.
단위 오류는 쿼리를 평가할 때 경고로 취급되므로 쿼리는 여전히 결과를 생성합니다. 알림을 정의하면 단위 오류가 실제 오류로 처리되며 알림이 정의되지 않습니다.
Duration과 Date는 숫자 유형이 아니며 단위도 없다는 점에 주의해야 합니다. Duration 값 60s
은 숫자가 아닌 시간의 길이이며, 1m
또는 60000ms
의 시간과 정확하게 일치합니다. 표현식 60s
== 60000ms
은 유효하고 참입니다.
시간 단위가 포함된 숫자 값이 다릅니다. 3 'min'
과 180 's'
는 단위가 다른 두 개의 서로 다른 숫자 값(3 및 180)입니다. 조정하지 않으면 비교할 수 없습니다.
scale
함수는 Duration 값과 Date 값을 단위가 있는 Double 값으로 변환합니다. 예를 들어 scale(60s, "min")
, scale(1m, "min")
, scale(60000ms, "min")
은 모두 min
단위를 가지는 double 값 1.0
을 반환합니다.
테이블 연산 단축키
단축키는 기본 테이블 연산을 지정하는 간단한 방법입니다.
shortcut_table_op : shortcut { ',' arg } .
shortcut : table_name | '(' expr ')' | map | DURATION .
단축키 테이블 연산에는 여러 형식이 각 형식에는 기본 테이블 연산을 나타냅니다.
함수 승격 단축키는 일반적인 테이블 연산처럼 보이지만 테이블 연산은 그 대신 함수 이름을 지정하는
ID
로 시작하고, 그다음에 오는arg
요소(모두expr
형식)는 함수에 대한 인수입니다.함수는 그 인수가 되는 테이블 연산을 제공하여 승격합니다. 입력 테이블의 값 열은 마치
.
연산자를 앞세운 것처럼 함수의 첫 번째 인수가 됩니다. 구체적인 승격은 다음과 같습니다.일반 함수는
value
테이블 연산의 인수가 되어 출력 테이블의 단일 값 열을 계산합니다.예를 들어
| add 3
은value [.add(3)]
의 단축키이고| div
는| value [.div]
의 단축키입니다.집계 함수는 첫 번째 인수가 빈
map
([ ]
)인group_by
테이블 연산의 두 번째 인수가 됩니다. 따라서 이 함수는 시계열 식별자 열이 없는 출력 테이블(단일 시계열이 있는 테이블)의 단일 값 열을 계산합니다.예를 들어
| min
은| group_by [], [.min]
의 단축키입니다.정렬 함수는
align
테이블 연산의 인수가 되므로 입력 테이블의 시계열에서 지정된 종류의 정렬을 수행합니다.예를 들어
| delta 10m
은 테이블 연산| align [.delta(10m)]
의 단축키입니다.
이름 지정 단축키는
table_name
으로 시작됩니다.table_name
은 어떤 종류의 사물 이름을 지정하는지에 따라resource
,metric
또는fetch
테이블 연산의 인수로 사용됩니다.예를 들어
| gce_instance
는 테이블 연산| resource gce_instance
의 단축키이고| gce_instance :: compute/instance/cpu/usage_time
은| fetch gce_instance :: compute/instance/cpu/usage_time
의 단축키입니다.필터링 단축키는
filter
테이블 연산의 조건자가 되는 괄호로 묶인expr
로 구성됩니다.예를 들어
| (job == 'search')
는| filter job == 'search'
의 단축키입니다.그룹화 단축키는
group_by
테이블 연산의 첫 번째 인수가 되는map
으로 시작합니다. 출력 테이블의 값 열을 계산하는 집계를 설명하는map
인arg
가 뒤에 올 수 있습니다.예를 들어
| [zone]
은| group_by [zone]
의 단축키입니다.윈도우 단축키는
group_by
테이블 연산의 첫 번째 인수가 되는DURATION
으로 시작합니다. 출력 테이블의 값 열을 계산하는 집계를 설명하는map
인arg
가 와야 합니다.예를 들어
| 10m, [.sum]
은| group_by 10m, [.sum]
의 단축키입니다.기간 단축키는 뒤에
arg
없이DURATION
으로 시작합니다.for
테이블 연산이 되어 쿼리 작업의 전체 범위를 제공합니다.예를 들어
| 10m
은| for 10m
의 단축키입니다.
테이블 연산 및 함수 설명
각 모니터링 쿼리 언어 테이블 작업과 함수 설명은 테이블 입력(테이블 작업용)과 테이블 작업 또는 함수에 제공할 수 있는 인수 유형을 나타내는 문서 서명으로 시작합니다. 이 섹션에서는 이러한 서명의 형식을 설명합니다.
이 서명은 Monitoring Query Language 자체에는 포함되지 않으며 Monitoring Query Language를 설명하는 데 사용됩니다.
테이블 연산 서명은 선택적으로 테이블 연산에 대한 입력 테이블을 설명하는 유형으로 시작하며, 테이블 연산 이름과 테이블 연산에 대한 유효한 인수를 설명하는 인수 목록이 뒤에 옵니다. 예를 들어 pick
테이블 연산의 서명은 다음과 같습니다.
Table | pick
lit-Int,
[ TSIDSel ],
[ Windowed(Num) ]
이 테이블 연산은 입력으로 Table
을 취하며(가장 일반적인 경우),lit-Int, [ TSIDSel ], [Windowed(Num) ]로 설명되는 세 가지 잠재적 인수가 있습니다.
입력 테이블과 |
은 선택사항이며 테이블 작업이 지정되지 않으면 입력 테이블을 사용하지 않습니다. 입력 테이블 사양은 다음 중 하나입니다.
- Table 테이블 연산에 대한 입력은 단일 테이블입니다.
- Table++ 테이블 연산은 두 개 이상의 테이블을 입력으로 사용합니다.
- Resource 테이블 연산은 모니터링 리소스 유형(유형에 특정 모니터링 리소스 유형이 포함된 시계열이 들어 있는 모든 테이블)으로 지정된 테이블 모음을 사용합니다.
- ResourceOrTable Table 또는 Resource가 입력으로 허용됩니다.
테이블 연산의 이름 뒤에 오는 인수 목록의 각 인수 설명자는 다음과 같습니다.
[
]
로 묶여 있을 수 있으며, 이 경우 실제 인수가_
로 지정되거나 실제 인수가 명시적으로 제공된 모든 인수 뒤에 배치되는 경우 생략될 수 있습니다.쿼리를 평가하기 전에 인수 값이 알려진 상수 값임을 나타내는
lit-
프리픽스가 있을 수 있습니다.항상 값 유형의 이름 또는 허용되는 유형의 실제 인수를 설명하는 클래스 유형(아래 설명 참조)이 있습니다.
입력 값의 시계열 종류를 제한하는 시계열 종류를 제공하는 서픽스가 있을 수 있습니다.
인수 설명자 유형 이름은 여기에 설명된 다음 실제 유형 중 하나일 수 있습니다. Bool, Int, Double, Distribution, String, Duration 또는 Date. 이 경우 실제 인수는 동일한 유형의 표현식이어야 합니다.
다음은 실제 인수가 측정항목, 모니터링 리소스 또는 테이블의 이름을 각각 지정하는 table_name
여야 함을 나타냅니다.
- MetricName
- ResourceName
- TableName
인수 설명자는 실제 인수가 다양한 유형 중 하나의 표현식일 수 있음을 나타내는 카테고리의 이름을 지정할 수 있습니다.
- Num Either an Int 또는 Double
- Summable 합산할 수 있는 값의 유형: Int, Double 또는 Distribution
- Comparable: 비교할 수 있는 값 유형: Int, Double, String, Bool, Duration, Date
- ColumnValue: 유효한 열 값인 유형: Int, Double, String, Bool, or Distribution
- Windowed(Num)
within
,ago
또는bottom
함수에 의해 주석이 달릴 수 있는 Num - WindowDuration
window
또는sliding
에 의해 주석이 달릴 수 있는 Duration - BucketSpecification Distribution의 버킷 사양
테이블 작업에는 출력 행 시계열 식별자 열이나 값 열을 지정하는 map
인수가 필요할 수 있습니다. 이는 다음 중 하나로 표시됩니다.
- RowToTSID 출력 테이블의 시계열 식별자 열을 설명하는 지도
- TSIDSel 보관할 시계열 식별자 열의 이름을 지정하는 지도
map
의 각maplet
는 열 이름(ID
또는column_name
)을 지정하는expr
로만 구성되어야 합니다. 예를 들어[zone, name]
은 출력 열이 입력 시계열 식별자 열zone
및name
으로만 구성되고 다른 모든 입력 열은 삭제됩니다. - RowToVal 출력 테이블 값 열을 설명하는 지도 지도가 아닌 표현식이 실제 인수로 제공되는 경우 해당 표현식이 있는 단일 요소 맵으로 승격됩니다.
- RowSetToVal 집계별로 출력 테이블 값 열을 설명하는 지도 지도가 아닌 표현식이 실제 인수로 제공되는 경우 해당 표현식이 있는 단일 요소 맵으로 승격됩니다.
- DefaultColumns
outer_join
기본값 열을 설명하는 지도 지도가 아닌 표현식이 실제 인수로 제공되는 경우 해당 표현식이 있는 단일 요소 맵으로 승격됩니다.
함수 서명은 함수 이름 다음에 함수의 유효한 인수를 설명하는 괄호로 묶은 인수 목록과 함수에서 반환되는 값을 설명하는 반환 유형으로 시작합니다. 예를 들어 fraction_less_than
함수 서명은 다음과 같습니다.
fraction_less_than(
Summable,
lit-Num)
→ Double
이 함수는 Summable 및 lit-Num에 설명된 두 개의 인수를 사용하며 Double 유형의 값을 반환합니다. 인수 목록에는 위에서 설명한 테이블 연산의 요소가 동일합니다. 반환 유형은 반환되는 값이 해당 유형 또는 다음 중 하나임을 나타내는 특정 값 유형일 수 있습니다.
- Num - 함수에 대한 인수가 Double이면 Double, 그렇지 않으면 Int입니다.
- ColumnValue - 함수의 첫 번째 실제 인수와 동일한 유형
- LastArgType - 함수의 마지막 실제 인수와 동일한 유형
- Windowed() - Windowed 실제 인수와 동일한 유형으로, Windowed 유형으로 주석 처리됩니다. Windowed 실제 인수가 Int 유형이면 반환 유형은 Windowed(Int)입니다. (
within
,ago
또는bottom
함수 참조)
함수 인수 설명자 또는 반환 유형에는 인수 또는 결과의 시계열 종류를 제어하는 표시기가 있을 수 있습니다. 이러한 유형은 다음 유형의 서픽스 중 하나로 표시됩니다.
- .Cumulative, .Delta 또는 .Gauge는 실제 인수에 지정된 시계열 종류가 있어야 함을 나타냅니다.
- .CumulativeOK는 실제 인수가 누적일 수 있음을 의미합니다.
- .FirstArgKind는 반환 유형에 대해서만 함수의 첫 번째 인수와 동일한 시계열 종류를 의미합니다.
인수에 시계열 종류 서픽스가 없는 경우 인수는 게이지 또는 델타 시계열 종류여야 합니다. 반환 유형에 시계열 종류 서픽스가 없는 경우 게이지가 됩니다.
함수 서명에는 다음 메모 중 한 개 이상이 포함될 수 있습니다.
- (암시적 행 입력) 함수가 전체 행을 암시적 입력으로 취함을 나타냅니다. 예를 들어
hash_tsid
함수는 입력 행의 시계열 식별자 열의 해시를 생성하지만 이러한 열 값을 명시적 인수로 취하지 않습니다. - (시간 집계만 해당) 집계 함수의 서명에 사용되어 시간 집계를 수행할 때만 함수 서명이 적용됨을 나타냅니다. (그 외에는 함수의 다른 서명이 적용됩니다.) 여기에는 시간 집계와 공간 집계가 모두 동일한 테이블 연산에서 수행되는 경우가 포함됩니다.
- (슬라이딩 시간 집계만 해당) 집계 함수의 서명에 사용되어 슬라이딩 시간 집계를 수행할 때만 함수 서명이 적용됨을 나타냅니다. (그 외에는 함수의 다른 서명이 적용됩니다.) 여기에는 슬라이딩 시간 집계와 공간 집계가 모두 동일한 테이블 연산에서 수행되는 경우가 포함됩니다.
테이블 연산
이 섹션에서는 Monitoring Query Language의 각 기본 테이블 연산에 대해 설명합니다.
- 가져오기
fetch
데이터베이스에서 테이블을 생성합니다.metric
테이블 집합에서 특정 측정항목 유형의 테이블을 생성합니다.fetch_cumulative
데이터베이스에서 누적 시계열의 테이블을 생성합니다.
- 선택
- 행 수정
map
테이블에 있는 각 행의 시계열 식별자와 값 열을 다시 작성합니다.value
테이블에 있는 각 행의 값 열을 다시 작성합니다.time_shift
시계열을 시간 순서대로 이동합니다.
- 시계열 정렬
align
정렬 함수를 사용하여 정렬된 테이블을 생성합니다.
- 집계
group_by
매핑된 시계열 식별자와 시간 범위로 행을 집계합니다.union_group_by
여러 테이블의 행을 집계합니다.unaligned_group_by
정렬되지 않은 매핑된 시계열 식별자로 행을 집계합니다.
- 통합 및 조인
join
여러 테이블의 자연스러운 조인outer_join
두 테이블의 자연스러운 외부 조인union
여러 테이블의 통합
- 시간대 및 기간
every
정렬된 테이블 출력의 기간을 지정합니다.within
쿼리 출력의 시간 범위를 지정합니다.graph_period
시계열 그래프를 그릴 때 원하는 출력 기간을 지정합니다.window
정렬 작업의 기간을 지정합니다.
- 알림
condition
입력 테이블에 부울 조건 열을 추가합니다.absent_for
입력이 없는 조건을 만듭니다.
- 기타
ident
ID 테이블 연산: 입력 테이블에 변동 없음ratio
정렬된 두 입력 테이블의 값 열 비율을 계산합니다.filter_ratio
입력 값 열의 필터링된 두 개 합계의 비율을 계산합니다.filter_ratio_by
입력 값 열의 필터링된 두 개 합계의 그룹화된 비율을 계산합니다.
가져오기
fetch
테이블 연산의 출력은 Cloud Monitoring 시계열 데이터베이스에서 이름으로 검색한 테이블입니다.
resource
테이블 연산의 출력은 이름에 모니터링 리소스 유형이 지정된 모든 테이블의 집합입니다. 각 resource
다음에는 해당 측정항목이 이름에 포함된 단일 테이블을 선택하는 metric
테이블 연산이 와야 합니다. metric
테이블 연산 이전에는 결과 테이블에 포함된 행을 제한하는 filter
테이블 연산이 있을 수 있습니다.
fetch
데이터베이스에서 테이블을 생성합니다.
서명:
fetch
lit-TableName
fetch
작업은 TableName 인수에서 테이블 이름이 이름으로 지정된 테이블을 시계열 데이터베이스에서 가져옵니다.
테이블 이름에 알 수 없는 모니터링 리소스 유형 또는 측정항목 유형 이름이 포함된 경우 오류입니다.
특정 유형의 모니터링 리소스에서 특정 유형의 측정항목이 수집되지 않은 경우 이 테이블은 비어 있게 됩니다.
측정항목이 누적인 경우 테이블을 구성하는 시계열은 델타 시계열로 효과적으로 변환됩니다. 여기서 각 지점은 그 다음 이른 지점 이후의 값 변화를 나타냅니다.
fetch
작업은 모니터링 리소스의 이름만 제공하고 측정항목 이름은 제공하지 않으면서 특정 모니터링 리소스를 기반으로 하는 모든 테이블 집합도 가져올 수 있습니다. 이러한 fetch
작업 다음에는 특정 측정항목의 데이터가 포함된 특정 테이블을 선택하는 metric
작업이 와야 합니다. 이러한 fetch
와 후속 metric
사이에 올 수 있는 유일한 작업은 모니터링 리소스 열을 기준으로 필터링하는 filter
작업입니다.
다음 예와 같이 특정 모니터링 리소스에 대해 둘 이상의 측정항목을 가져오려는 경우 이 fetch
형식이 유용합니다.
fetch gce_instance | filter zone = 'asia-east1-a' |
{ metric compute.googleapis.com/instance/cpu/utilization ;
metric compute.googleapis.com/instance/cpu/reserved_cores
} | join | div
gce_instance | (zone = 'asia-east1-a') |
{ compute.googleapis.com/instance/cpu/utilization ;
compute.googleapis.com/instance/cpu/reserved_cores
} | join | div
이는 다음과 동일합니다.
{ fetch gce_instance :: compute.googleapis.com/instance/cpu/utilization ;
fetch gce_instance :: compute.googleapis.com/instance/cpu/reserved_cores
} | filter zone = 'asia-east1-a' | join | div
metric
테이블 집합에서 특정 측정항목 유형의 테이블을 생성합니다.
서명:
Resource | metric
lit-MetricName
metric
테이블 연산은 측정항목 이름을 지정하지 않은 fetch
테이블 연산으로 생성된 테이블 집합을 받습니다.
lit-MetricName 인수로 지정된 측정항목의 데이터가 포함된 테이블 하나를 선택하고 해당 테이블을 출력으로 생성합니다.
지정된 이름의 측정항목 정의가 없으면 오류입니다. 지정된 측정항목 이름의 데이터가 포함된 입력 테이블이 없으면 빈 테이블이 생성됩니다.
fetch_cumulative
데이터베이스에서 누적 시계열의 테이블을 생성합니다.
서명:
fetch_cumulative
lit-TableName
fetch_cumulative
테이블 연산은 fetch
테이블 연산과 동일합니다. 단, 누적 측정항목은 가져왔을 때 자동으로 델타 측정항목으로 변환되지 않습니다.
선택
선택 테이블 연산은 출력 테이블에 포함할 행을 입력 테이블에서 선택합니다. 출력 테이블의 유형은 입력 테이블의 유형과 정확히 일치합니다.
filter
조건자별로 입력 테이블의 행을 필터링합니다.
서명:
ResourceOrTable | filter
Bool
filter
작업은 단일 입력 테이블 또는 resource
작업으로 이름이 지정된 테이블 모음에서 각 행의 인수 Bool 표현식을 평가합니다. 이 표현식이 true로 평가되는 입력 테이블 또는 테이블의 행이 출력 테이블에 보관됩니다.
입력이 테이블 모음인 경우 모든 리소스에 공통인 모니터링 리소스 라벨만 조건자에서 참조할 수 있습니다.
top
정렬 값 표현식으로 상위 시계열을 선택합니다.
서명: Table | top
lit-Int,
[Windowed(Num) ]
top
테이블 연산은 입력 테이블의 각 시계열에 대한 정렬 값을 계산하고 가장 큰 정렬 값을 사용하여 Int 인수로 지정한 시계열 수를 선택합니다. Windowed 인수 표현식은 정렬 값을 계산합니다.
Windowed(Num) 인수는 값 시간 범위에 속하는 시계열의 행에 적용됩니다. 기본값 시간 범위는 쿼리 시간 범위와 동일합니다. 표현식이 집계 표현식(예: .min
)이면 종료 타임스탬프가 값 범위 내에 있는 모든 행을 집계한 것입니다. 표현식이 값 표현식(예: .val(0)/.val(1)
)이면 값 범위 내에서 가장 늦은 행(있는 경우)에 적용됩니다. 시계열의 값 범위 내에 행이 없거나 Windowed(Num) 인수가 시계열의 값을 생성하지 않는 경우 해당 시계열을 출력에 포함하는 것을 고려하지 않습니다.
within
함수는 Windowed(Num) 인수에서 시작 시간, 기간 또는 종료 시간을 값 범위에 제공하여 범위를 수정하는 데 사용할 수 있습니다.
예:
| top 3
시계열에서 가장 늦은 지점에 대해 가장 큰 값을 가진 세 개의 시계열을 선택합니다.
| top 7, .max
쿼리 범위 내 시계열에 있는 모든 지점의 최댓값을 고려하여 가장 큰 값을 가진 일곱 개의 시계열을 선택합니다.
| top 3, .min.within(-10h, 1h)
그러면 10시간 전부터 1시간 동안 지속되는 범위에 속하는 각 시계열의 행에 min
감소기의 가장 큰 값이 적용된 세 개의 시계열이 선택됩니다.
bottom
정렬 값 표현식으로 하위 시계열을 선택합니다.
Signature:
Table | bottom
lit-Int,
[ Windowed(Num) ]
bottom
테이블 연산은 입력 테이블의 각 시계열에 대한 정렬 값을 계산하고 가장 작은 정렬 값을 사용하여 Int 인수로 지정한 시계열 수를 선택합니다. Windowed 인수 표현식은 정렬 값을 계산합니다.
Windowed(Num) 인수는 값 시간 범위에 속하는 시계열의 행에 적용됩니다. 기본값 시간 범위는 쿼리 시간 범위와 동일합니다. 표현식이 집계 표현식(예: .min
)이면 종료 타임스탬프가 값 범위 내에 있는 모든 행을 집계한 것입니다. 표현식이 값 표현식(예: .val(0)/.val(1)
)이면 값 범위 내에서 가장 늦은 행(있는 경우)에 적용됩니다. 시계열의 값 범위 내에 행이 없거나 Windowed(Num) 인수가 시계열의 값을 생성하지 않는 경우 해당 시계열을 출력에 포함하는 것을 고려하지 않습니다.
within
함수는 Windowed(Num) 인수에서 시작 시간, 기간 또는 종료 시간을 값 범위에 제공하여 범위를 수정하는 데 사용할 수 있습니다.
예:
| bottom 3
시계열에서 가장 늦은 지점에 대해 가장 작은 값을 가진 세 개의 시계열을 선택합니다.
| bottom 7, .min
쿼리 범위 내 시계열에 있는 모든 지점의 최솟값을 고려하여 가장 작은 값을 가진 일곱 개의 시계열을 선택합니다.
| bottom 3, .max.within(10h)
그러면 10시간 전부터 지금까지 지속되는 범위에 속하는 각 시계열의 행에 max
감소기의 가장 작은 값이 적용된 세 개의 시계열이 선택됩니다.
top_by
서로 다른 그룹의 정렬 값 표현식으로 시계열을 선택합니다.
서명: Table | top_by
TSIDSel,
lit-Int,
[ Windowed(Num) ]
top_by
테이블 연산은 TSIDSel 인수로 계산한 동일한 시계열 식별자가 있는 시계열을 그룹화합니다. 각 그룹 내에서 동일한 Int 및 Windowed 인수가 주어지면 top
과 동일한 메서드로 시계열을 선택합니다. 각 그룹별로 그룹의 각 시계열에 대한 정렬 값을 계산하고 가장 큰 정렬 값을 사용하여 Int 인수로 지정한 시계열 수를 선택합니다. Windowed 인수 표현식은 정렬 값을 계산합니다.
Windowed(Num) 인수는 값 시간 범위에 속하는 시계열의 행에 적용됩니다. 기본값 시간 범위는 쿼리 시간 범위와 동일합니다. 표현식이 집계 표현식(예: .min
)이면 종료 타임스탬프가 값 범위 내에 있는 모든 행을 집계한 것입니다. 표현식이 값 표현식(예: .val(0)/.val(1)
)이면 값 범위 내에서 가장 늦은 행(있는 경우)에 적용됩니다. 시계열의 값 범위 내에 행이 없거나 Windowed(Num) 인수가 시계열의 값을 생성하지 않는 경우 해당 시계열을 출력에 포함하는 것을 고려하지 않습니다.
within
함수는 Windowed(Num) 인수에서 시작 시간, 기간 또는 종료 시간을 값 범위에 제공하여 범위를 수정하는 데 사용할 수 있습니다.
예:
| top_by [zone], 1
'영역' 열의 값이 동일한 각 시계열 그룹의 경우 시계열의 가장 늦은 지점에 가장 큰 값을 가진 시계열을 선택합니다.
| top_by [project_id], 2, .max
'project_id' 열의 값이 동일한 각 시계열 그룹의 경우 쿼리 범위 내 시계열에 있는 모든 지점의 최댓값을 고려하여 가장 큰 값을 가진 두 개의 시계열을 선택합니다.
| top_by [zone], 1, .min.within(-10h, 1h)
그러면 '영역' 열의 값이 동일한 각 시계열 그룹의 경우 10시간 전부터 1시간 동안 지속되는 범위에 속하는 각 시계열의 행에 min
감소기의 가장 큰 값이 적용된 시계열이 선택됩니다.
bottom_by
서로 다른 그룹의 정렬 값 표현식으로 시계열을 선택합니다.
서명: Table | bottom_by
TSIDSel,
lit-Int,
[ Windowed(Num) ]
bottom_by
테이블 연산은 TSIDSel 인수로 계산한 동일한 시계열 식별자가 있는 시계열을 그룹화합니다. 각 그룹 내에서 동일한 Int 및 Windowed 인수가 주어지면 bottom
과 동일한 메서드로 시계열을 선택합니다. 각 그룹별로 그룹의 각 시계열에 대한 정렬 값을 계산하고 가장 작은 정렬 값을 사용하여 Int 인수로 지정한 시계열 수를 선택합니다. Windowed 인수 표현식은 정렬 값을 계산합니다.
Windowed(Num) 인수는 값 시간 범위에 속하는 시계열의 행에 적용됩니다. 기본값 시간 범위는 쿼리 시간 범위와 동일합니다. 표현식이 집계 표현식(예: .min
)이면 종료 타임스탬프가 값 범위 내에 있는 모든 행을 집계한 것입니다. 표현식이 값 표현식(예: .val(0)/.val(1)
)이면 값 범위 내에서 가장 늦은 행(있는 경우)에 적용됩니다. 시계열의 값 범위 내에 행이 없거나 Windowed(Num) 인수가 시계열의 값을 생성하지 않는 경우 해당 시계열을 출력에 포함하는 것을 고려하지 않습니다.
within
함수는 Windowed(Num) 인수에서 시작 시간, 기간 또는 종료 시간을 값 범위에 제공하여 범위를 수정하는 데 사용할 수 있습니다.
예:
| bottom_by [zone], 1
'영역' 열의 값이 동일한 각 시계열 그룹의 경우 시계열의 가장 늦은 지점에 가장 작은 값을 가진 시계열을 선택합니다.
| bottom_by [project_id], 2, .max
'project_id' 열의 값이 동일한 각 시계열 그룹의 경우 쿼리 범위 내 시계열에 있는 모든 지점의 최댓값을 고려하여 가장 작은 값을 가진 두 개의 시계열을 선택합니다.
| bottom_by [zone], 1, .min.within(1h)
그러면 '영역' 열의 값이 동일한 각 시계열 그룹의 경우 10시간 전부터 1시간 동안 지속되는 범위에 속하는 각 시계열의 행에 min
감소기의 가장 작은 값이 적용된 시계열이 선택됩니다.
행 수정
map
테이블에 있는 각 행의 시계열 식별자와 값 열을 다시 작성합니다.
서명: Table | map
[ RowToTSID ],
[ RowToVal ]
입력 테이블의 행마다 두 변환이 적용됩니다.
RowToTSID 맵이 제공되면 해당 행의 시계열 식별자 열에 적용되어 해당 출력 행의 시계열 식별자 열을 생성합니다. RowToTSID 맵이 제공되지 않거나
_
로 제공되는 경우 출력 시계열 식별자 열은 입력과 동일합니다.RowToVal 맵이 지정된 경우 입력 행의 값 열에 적용되어 출력 행의 값 열을 생성합니다. RowToVal 맵이 지정되지 않으면 출력 값 열은 입력과 동일합니다.
입력의 서로 다른 두 시계열의 행이 출력에서 동일한 시계열에 매핑되면 동적 오류입니다. 이 경우 입력 시계열 중 하나에서 파생된 행이 출력에서 삭제되고 오류 메시지가 표시됩니다.
RowToTSID 맵에 값 열 또는 시간 열에 대한 참조가 포함된 경우 단일 입력 시계열을 여러 출력 시계열로 분할할 수 있습니다. 따라서 RowToTSID 맵에 값 열 또는 시간 열에 대한 참조가 포함된 경우 값 열이 게이지 또는 델타 시계열 종류인 테이블에만 적용할 수 있습니다
value
테이블에 있는 각 행의 값 열을 다시 작성합니다.
서명:
Table | value
RowToVal
입력 Table의 각 행에 대해 RowToVal 맵이 해당 행의 열에 적용되어 해당 출력 행의 값 열을 생성합니다. 각 출력 행에는 생성된 입력 행과 동일한 시계열 식별자 및 시간 열이 있으며 RowToVal 맵에서 생성된 값 열이 있습니다.
time_shift
시계열을 시간 순서대로 이동합니다.
서명:
Table | time_shift
lit-Duration
입력 테이블의 각 행에는 시간 열에 추가된 Duration 인수로 지정한 기간이 있습니다. 이는 테이블의 각 시계열을 시간 순서대로 이동하는 효과가 있습니다.
입력 테이블이 정렬되면 이동 기간은 입력 테이블 정렬을 유지하는 정렬 기간의 짝수여야 합니다.
시계열 정렬
align
정렬 함수를 사용하여 정렬된 테이블을 생성합니다.
서명:
Table | align
[ Aligner ]
align
테이블 연산은 입력 테이블의 각 시계열에서 정렬된 시계열을 만들기 위해 Aligner 인수에 제공된 정렬 함수를 사용합니다.
정렬 기본 시간은 쿼리 범위의 종료 시간이며 정렬 기간은 다음 세 가지 중 하나로 설정됩니다.
이
align
테이블 연산의 기간을 설정하는every
테이블 연산정렬기 함수를 사용하려면 정렬 기간이 범위 폭과 같아야 합니다(
delta
참조).외부 그래픽 인터페이스에는 특정 정렬 기간이 필요합니다.
정렬된 시계열을 생성하는 특정 방법은 Aligner 인수에 지정된 정렬 함수에 해당합니다.
집계
집계 테이블 연산은 입력 테이블의 행을 그룹으로 나눕니다. 각 입력 행 그룹에 대해 그룹의 공통 시계열 식별자와 시간 열을 계산하고 입력 행을 집계하여 값 출력 열을 만들고 결과 행 식별자, 시간, 값 열이 있는 단일 행을 출력합니다.
세 가지 종류의 집계는 다음과 같습니다.
공간 집계. 이 집계 형식은 각 입력 행의 새 시계열 ID 열을 계산하고 동일한 새 시계열 ID 열과 종료 시간이 있는 모든 행을 그룹화합니다. 이러한 종류의 집계는 일반적으로 정렬 된 입력을 필요로 하므로 서로 다른 시계열의 행이 함께 그룹화됩니다.
시간 집계. 이 집계 형식은 일련의 유효한 정렬된 출력 시간을 계산하고, 행의 원래 종료 시간보다 빠르지 않도록 각 행의 새로운 종료 시간을 계산하여 가장 이른 정렬된 종료 시간을 지정합니다. 시계열 식별자와 종료 시간이 동일한 행은 함께 그룹화됩니다.
슬라이딩 시간 집계. 이 집계 형식은 행이 둘 이상의 그룹에 포함될 수 있다는 점을 제외하면 시간 집계와 유사합니다. 이렇게 하면 기간 집합이 계산되어 각각에 유효한 정렬된 종료 시간의 나중 에지가 있고 고정 폭이 동일합니다. 소속된 각 범위의 나중 에지인 종료 시간이 행에 주어지며, 이 행은 동일한 시계열 식별자와 새 종료 시간을 가진 다른 행과 함께 그룹화됩니다. 범위가 겹치면 행에 두 개 이상의 새로운 종료 시간이 주어질 수 있으므로 두 개 이상의 그룹에 포함될 수 있습니다.
한 번의 테이블 연산에서 공간 집계를 두 가지 형태의 시간 집계 중 하나와 결합할 수 있습니다.
슬라이딩 시간 집계와 슬라이딩이 아닌 시간 집계의 중요한 차이점은 일부 애그리게이터(예: 합계)가 슬라이딩이 아닌 시간 집계에는 델타 시계열 종류로 값을 생성하지만 슬라이딩 시간 집계에는 게이지 종류로 값을 생성한다는 것입니다. 이는 델타 시계열에 있는 두 지점의 시간 범위가 겹칠 수 없기 때문이며, 따라서 슬라이딩 시간 집계의 겹쳐진 입력 범위는 델타 시계열 출력 행의 시간 열에 나타낼 수 없습니다.
새로운 시계열 식별자가 행 하나에 계산되는 경우 새 시계열 식별자는 map 인수로 계산됩니다. 출력 행의 값 열은 각 값 열을 계산하는 집계 표현식이 있는 map 인수로 계산됩니다.
group_by
매핑된 시계열 식별자와 시간 범위로 행을 집계합니다.
서명:
Table | group_by
RowToTSID,
[ RowSetToVal ]
Table | group_by
RowToTSID,
lit-WindowDuration,
[ RowSetToVal ]
Table | group_by
lit-WindowDuration,
[ RowSetToVal ]
group_by
테이블 연산은 시계열 식별자 열, 시간 열 또는 둘 다를 매핑하여 행을 그룹화합니다.
RowToTSID 인수가 지정되고 WindowDuration 인수가 지정되지 않은 경우 입력 테이블의 각 행에 대해 생성된 시계열 식별자를 계산하고 생성된 동일한 시계열 식별자와 종료 시간으로 모든 행을 그룹화합니다.
이 경우 서로 다른 시계열의 지점에서 종료 시간이 동일하려면
group_by
에 정렬된 테이블이 입력으로 필요합니다. 입력 테이블이 정렬되지 않은 경우align
테이블 연산이 자동으로 삽입되어 정렬됩니다.WindowDuration 인수가 지정되고 RowToTSID 인수가 지정되지 않으면 각 시계열 식별자와 모든 정렬된 기간 출력 지점에 행 그룹이 생성됩니다. 한 그룹의 행이 모두 시계열 식별자가 지정되어 있고 종료 시간이 출력 시간과 더 이른 기간에 해당하는 시간 사이의 범위에 속하는 행입니다.
Duration 인수에
sliding
함수 호출(예:sliding(1h)
)이 있으면 기간이 정렬 기간과 다를 수 있습니다. 그렇지 않은 경우 Duration 인수가 정렬 기간과 동일해야 합니다.window()
표현식은 정렬 기간과 동일한 기간을 나타냅니다. 슬라이딩이 아닌 Duration을 명시적으로 지정한 경우 기간이 명시적으로 지정되지 않으면 동일한 기간이 적용됩니다.RowToTSID 및 WindowDuration 인수가 모두 지정된 경우 각 행에 대해 매핑된 새로운 시계열 식별자가 계산되고 매핑된 시계열 식별자가 동일하고 종료 시간이 출력 시간과 더 이른 기간에 해당하는 시간 사이의 범위에 속하는 모든 행에 대해 그룹이 생성됩니다.
그룹에 속한 행의 공통 시계열 식별자와 그룹의 출력 지점 시간인 타임스탬프(WindowDuration이 지정됨) 또는 그룹 내 행의 공통 종료 시간(WindowDuration이 제공되지 않음)이 있는 그룹마다 출력 행이 생성됩니다. 그룹의 값 열은 RowSetToVal 인수에서 생성됩니다. 각 집계 표현식은 세트의 행에 적용되고 결과는 출력 행 값 열입니다.
일부 집계 표현식(예: sum
)은 사용 중인 집계 유형에 따라 델타 또는 게이지 시계열 종류로 출력 값 열을 생성합니다. 이는 사용 중인 시간 집계가 슬라이딩이냐 아니냐에 따라 달라집니다. 이를 위해 집계는 시간 집계와 공간 집계를 모두 결합하는 경우 시간 집계로 처리됩니다.
group_by
테이블 연산은 항상 정렬된 출력 테이블을 생성합니다. WindowDuration 인수를 지정하지 않으면 입력 테이블이 정렬되고 출력 테이블이 동일한 정렬을 갖게 됩니다. WindowDuration 인수를 지정하면 출력 지점이 정렬 지점에만 생성되고 출력 테이블이 정렬됩니다.
표현식에서 RowToTSID 맵 인수에 값 또는 시간 열이 포함된 경우 입력 테이블의 시계열이 출력 테이블에서 여러 시계열로 분할될 수 있습니다.
union_group_by
여러 테이블의 행을 집계합니다.
서명:
Table++ | union_group_by
RowToTSID,
[ RowSetToVal ]
Table++ | union_group_by
RowToTSID,
lit-WindowDuration,
[ RowSetToVal ]
Table++ | union_group_by
lit-WindowDuration,
[ RowSetToVal ]
union_group_by
함수는 여러 입력 테이블에서 입력 행을 취한다는 점을 제외하면 group_by
함수와 똑같이 입력 행을 집계합니다.
union_group_by
에 입력하는 모든 입력 테이블은 열이 동일해야(이름과 유형이 동일하며, 값 열의 경우 시계열 종류가 동일함) 합니다. 정렬된 입력 테이블이 'union_group_by'에 대한 인수에 필요한 경우(지정된 WindowDuration 인수 없음) 모든 입력 테이블은 같은 기간으로 정렬되어야 합니다.
unaligned_group_by
정렬되지 않은 매핑된 시계열 식별자로 행을 집계합니다.
서명:
Table | unaligned_group_by
TSIDSel,
[ RowSetToVal ]
unaligned_group_by
테이블 연산은 group_by
테이블 연산과 동일하지만 입력 테이블을 정렬할 필요가 없습니다.
이렇게 하면 입력 테이블의 각 행에 대해 TSIDSel에서 생성된 시계열 식별자를 계산하고 동일한 시계열 식별자와 종료 시간으로 모든 행을 그룹화합니다. 그룹의 모든 행은 종료 시간이 동일하며 시작 시간도 동일해야 합니다. 그룹의 두 행에서 시작 시간이 다른 경우 동적 오류를 실행하고 행 중 하나를 임의로 선택하여 그룹에서 삭제합니다.
위 행 그룹의 각 그룹에 대해 출력 행을 생성합니다. 출력 행에는 TSIDSel 맵 인수에 의해 생성된 시계열 식별자와 그룹의 입력 행과 동일한 종료 시간(있는 경우)이 포함됩니다. 그룹의 모든 행에 RowSetToVal 맵 인수로 생성된 값 열이 적용되어 있습니다.
unaligned_group_by
테이블 연산에서는 입력 테이블을 정렬할 필요가 없습니다. 그룹에 집계할 여러 행이 없을 수 있다는 뜻입니다. 하나의 출력 시계열로 수집하는 행(모두 동일한 시계열 식별자가 있음)에는 초당 두 개 이상 행을 제공하는 밀도의 종료 시간이 없어야 합니다.
통합 및 조인
join
여러 테이블의 자연스러운 조인
서명:
Table++ | join
join
테이블 연산은 입력 테이블의 시계열 식별자와 종료 시간 열에서 자연스럽게 내부 조인을 수행하여 두 개 이상의 입력 테이블을 가져와 단일 출력 테이블의 행으로 결합합니다.
입력 테이블은 정렬될 뿐 아니라 모두 같은 기간으로 정렬되어야 하며 모두 델타 또는 게이지 시계열이어야 합니다.
출력 테이블에는 다음 요소가 있습니다.
모든 입력 테이블의 모든 고유 시계열 식별자 열에 대한 시계열 식별자 열 하나입니다. 각 열의 유형은 입력 테이블의 해당 열과 동일합니다. 두 테이블에 이름이 같지만 유형이 다른 시계열 식별자 열이 있으면 오류가 발생합니다.
종료 시간 열. 입력 테이블 중에 델타 시계열 종류가 있는 경우 출력 테이블도 델타 시계열 종류이며 시작 시간 열을 갖게 됩니다.
각 입력 테이블 값 열의 값 열입니다. 순서는 테이블을 생성한
grouped_table_op
의 입력 테이블 순서입니다. 서로 다른 입력 테이블 두 개에 같은 이름의 값 열이 있으면 오류가 발생합니다.
조인은 각 입력 테이블의 행 하나로 구성된 모든 튜플을 고려합니다. 다음 조건을 충족하는 튜플마다 출력 행이 생성됩니다.
입력 열에 표시되는 각 시계열 식별자 열 이름에는 해당 열이 있는 튜플의 각 행에 동일한 값이 있습니다.
튜플에 있는 모든 행의 종료 시간은 동일합니다.
이러한 각 출력 행에는 다음과 같은 열 값이 있습니다.
각 시계열 열에는 해당 열이 있는 튜플의 각 행으로 해당 열의 값이 있습니다.
각 시간 열은 입력 튜플의 행과 동일한 값을 갖습니다.
각 값 열에는 값 열이 생성된 튜플의 행과 동일한 값이 있습니다.
outer_join
두 테이블의 자연스러운 외부 조인
서명:
Table++ | outer_join
[ DefaultColumns ],
[ DefaultColumns ]
outer_join
테이블 연산은 입력 테이블 두 개를 취해 입력 테이블의 시계열 식별자와 종료 시간 열에 자연스럽게 외부 조인을 수행하여 단일 출력 테이블의 행으로 결합합니다.
DefaultColumns 인수 중 하나 또는 둘 다 제공되어야 합니다. 각 인수는 하나의 입력 테이블에 해당하며 테이블에 인수를 지정한 경우 다른 테이블의 행과 일치하는 행이 없는 경우 해당 테이블에 행이 생성됩니다. DefaultColumns는 생성된 행의 값 열을 지정합니다. 테이블에 DefaultColumns가 지정된 경우 해당 테이블의 시계열 식별자 열은 다른 테이블의 시계열 식별자에 대한 시계열 중 일부여야 하며, 다른 테이블에 델타 시계열 종류가 있는 경우 델타 시계열 종류만 있을 수 있습니다.
입력 테이블은 정렬될 뿐 아니라 모두 같은 기간으로 정렬되어야 하며 모두 델타 또는 게이지 시계열이어야 합니다.
join
과 마찬가지로 출력 테이블에는 다음 요소가 있습니다.
모든 입력 테이블의 모든 고유 시계열 식별자 열에 대한 시계열 식별자 열 하나입니다. 각 열의 유형은 입력 테이블의 해당 열과 동일합니다. 두 테이블에 이름이 같지만 유형이 다른 시계열 식별자 열이 있으면 오류가 발생합니다.
종료 시간 열. 입력 테이블 중에 델타 시계열 종류가 있는 경우 출력 테이블도 델타 시계열 종류이며 시작 시간 열을 갖게 됩니다.
각 입력 테이블 값 열의 값 열입니다. 순서는 테이블을 생성한
grouped_table_op
의 입력 테이블 순서입니다. 서로 다른 입력 테이블 두 개에 같은 이름의 값 열이 있으면 오류가 발생합니다.
조인은 각 입력 테이블의 행 하나로 구성된 모든 쌍을 고려합니다. 다음 조건을 충족하는 쌍마다 출력 행이 생성됩니다.
입력 열 중 하나에 표시되는 각 시계열 식별자 열 이름에는 해당 열이 있는 쌍의 각 행에 동일한 값이 있습니다.
쌍의 각 행에는 동일한 종료 시간이 있습니다.
이러한 각 출력 행에는 다음과 같은 열 값이 있습니다.
각 시계열 열에는 해당 열이 있는 쌍의 각 행으로 해당 열의 값이 있습니다.
각 시간 열은 입력 쌍의 행과 동일한 값을 갖습니다.
각 값 열에는 값 열이 생성된 쌍의 행과 동일한 값이 있습니다.
위의 쌍 외에도 한 테이블의 행이 다른 테이블의 행과 쌍을 형성할 수 없고 다른 테이블에는 DefaultColumns가 지정된 경우 쌍 하나는 첫 번째 테이블의 행과 다른 테이블의 기본 행으로 생성됩니다. 기본 행은 다음과 같이 구성됩니다.
각 시계열 식별자 열과 시간 열의 값은 첫 번째 테이블 행의 해당 열과 동일합니다.
기본 행의 값 열은 DefaultColumns
map
에 의해 구성되며, 해당map
은 기본 테이블의 각 값 열에 값을 지정해야 합니다.
union
여러 테이블의 통합
서명:
Table++ | union
union
테이블 연산은 두 개 이상의 입력 테이블을 사용하며 모든 입력 테이블의 행을 포함하는 단일 출력 테이블을 생성합니다.
입력 테이블에는 동일한 열이 있어야 합니다(값과 유형이 동일하고 값 열의 경우 시계열 종류가 동일해야 함). 생성된 출력 테이블에는 입력 테이블과 동일한 열이 있습니다. 출력 테이블은 모든 입력 테이블이 공통 기간과 일치하는 경우에만 정렬됩니다.
두 개 이상의 서로 다른 테이블의 스트림에 동일한 시계열 식별자가 있는 경우 동적 오류입니다. 이 경우 중복 시계열 식별자가 있는 스트림 중 하나가 임의로 선택되어 출력에 포함되고 나머지는 삭제됩니다.
시간대 및 기간
테이블에서 시계열을 정렬할 때 사용할 기간은 every
명령어로 설정합니다.
쿼리는 모든 결과를 종료 시간이 쿼리 범위 내에 있는 지점으로 생성합니다. 쿼리 범위의 기간은 시작 시간, 종료 시간, 기간 중 무엇이든 지정할 수 있는 within
테이블 연산으로 설정합니다.
every
정렬된 테이블 출력의 기간을 지정합니다.
서명:
Table | every
lit-Duration
every
테이블 작업에는 Duration 인수에 지정된 입력 기간과 정렬된 입력 테이블이 필요합니다. 이는 다음 방법 중 하나로 처리됩니다.
입력 테이블이 정렬되지 않으면 입력 테이블에 적절한 정렬기 함수를 사용하여
align
작업이 삽입됩니다. 정렬기 함수의 Duration 인수는 지정된 기간의 기본값입니다.테이블이 정렬되었지만 특정 필수 기간이 없는 경우
every
테이블 연산에 입력되는 쿼리가 해당 기간을 생성하도록 조정됩니다.입력 테이블이 특정 기간과 정렬되어 있고 해당 기간이 Duration 인수로 지정된 기간과 다른 경우 오류입니다.
within
쿼리 출력의 시간 범위를 지정합니다.
서명:
Table | within
lit-DateOrDuration,
[ lit-DateOrDuration ]
within
테이블 연산은 쿼리 출력의 시간 범위를 지정합니다.
이렇게 하려면 범위의 가장 이른 시간(시작 시간), 범위의 가장 늦은 시간(종료 시간) 또는 범위의 기간 등 세 가지 값 중 하나 또는 둘을 지정합니다.
within
의 두 인수 중 하나가 양수의 Duration이면 해당 인수가 이 범위의 폭을 설정합니다. 많아도 인수 중 하나는 Duration일 수 있습니다.
첫 번째 인수가 Date인 경우 시작 시간을 지정합니다. 두 번째 인수가 Date인 경우 종료 시간을 지정합니다. 둘 다 Date 값이면 두 번째 값이 첫 번째 값 이후여야 합니다. Date 인수는 Date 리터럴 또는 음수의 Duration 리터럴로 제공될 수 있습니다. 후자의 경우 시간은 쿼리가 실행되기(현재) 이전에 지정된 Duration입니다.
인수가 하나만 제공되면 두 번째 인수는 기본적으로 쿼리가 실행된 시간으로 설정됩니다. 이 경우 첫 번째 인수는 양의 Duration 또는 쿼리가 실행된 시간보다 이른 Date여야 합니다.
graph_period
시계열 그래프를 그릴 때 원하는 출력 기간을 지정합니다.
서명:
Table | graph_period
lit-Duration
graph_period
테이블 연산은 입력 테이블을 변환하여 그래프로 표시하기에 적절하게 만든다. Duration 인수는 그래프에 적합한 점들 사이의 기간을 나타냅니다.
이 작업은 사용자가 쿼리에 명시적으로 추가하지 않으면 측정항목 탐색기에 지정된 쿼리에 자동으로 삽입됩니다. 어느 경우든 측정항목 탐색기는 차트의 실시간 창에 맞게 Duration 인수 값을 설정합니다. graph_period
를 쿼리의 일부로 명시적으로 추가하는 것은 쿼리가 API에 제공되는 경우에만 유효합니다.
graph_period
작업은 Duration 인수를 입력 테이블의 기간과 비교하고 다음 중 하나를 수행합니다.
입력 테이블의 기간이 Duration 인수의 절반 미만인 경우
graph_period
작업은 Duration 인수에 의해 창 및 출력 기간이 주어지는 일시적 축소기로 사용됩니다. 입력 테이블의 각 값 열은 유형에 따라 집계됩니다.숫자 유형의 값 열의 경우 3개의 열이 출력 테이블에 배치되며, 각 열은 입력 열을
min
,mean
,max
애그리게이터로 집계하여 생성됩니다. 출력 열 이름은 입력 열 이름이며 각각.min
,.mean
,.max
가 추가됩니다.Bool 유형의 값 열의 경우 3개의 열이 출력 테이블에 배치되며, 각 열은 입력열을
min
,mean
,max
애그리게이터로 집계하여 생성됩니다. 출력 열 이름은 입력 열 이름이며 각각.all_true
,.mean
,.any_true
가 추가됩니다.Distribution 유형 열의 경우 이름이 동일한 단일 열이
distribution
집계를 통해 생성되어 각 그래프 기간에 속하는 모든 배포 입력 값의 모집단을 결합합니다.
입력 테이블 기간이 Duration 인수보다 두 배 이상인 경우 입력 테이블의 각 지점에 대해 출력 기간에 필요한 시점의 사본이 만들어집니다.
입력 테이블 기간이 Duration 인수의 두 배보다 적고 Duration 인수의 절반보다 크면 입력 테이블은 출력으로 복사됩니다.
입력 테이블에 값 열이 두 개 이상 있거나 String 값 열이 있으면 동작은 정의되지 않습니다. 측정항목 탐색기는 단일 열만 표시하거나 표시할 수 있는 열이 없는 경우 오류가 발생할 수 있습니다.
window
정렬 작업의 기간을 지정합니다.
서명:
Table | window
lit-Duration
window
테이블 작업에는 기간 Duration 인수가 이 window
테이블 작업에서 지정된 Duration 인수와 동일한 정렬기 함수에서 정렬된 입력 테이블이 필요합니다. 이는 다음 방법 중 하나로 처리됩니다.
입력 테이블이 정렬되지 않으면 입력 테이블에 적절한 정렬기 함수를 사용하여
align
작업이 삽입됩니다. 정렬기 함수에 대한 Duration 인수는 이window
테이블 연산의 Duration 인수로 제공됩니다.테이블이 정렬되었지만 테이블을 정렬하는 테이블 연산에 특정 정렬 범위가 없으면 이
window
인수의 Duration이 정렬기 범위 인수로 사용됩니다.입력 테이블이 정렬되고 정렬된 테이블 연산이
window
테이블 연산의 기간 인수와 다른 범위 Duration을 지정하면 오류입니다.
알림
알림 작업은 알림 정책을 정의하는 데 사용됩니다. 이러한 작업은 쿼리의 일부가 아닌 알림을 설치하는 데 사용합니다.
추상적으로 이러한 작업은 두 개의 값 열이 있는 테이블을 생성하는 쿼리를 만드는 방법을 제공합니다. 두 열 중 하나는 알림이 실행 상태이어야 하는지 여부를 나타내는 부울이며 다른 하나는 입력의 가장 최근 값을 주는 입력 값과 동일한 유형의 값을 가져야 하는지를 나타내는 부울입니다.
condition
입력 테이블에 부울 조건 열을 추가합니다.
서명:
Table | condition
Bool
condition
테이블 작업은 각 입력 테이블 행에 부울 값 열을 추가하여 출력 테이블을 만듭니다. 이 열 값은 행에 적용되는 Bool 인수의 값입니다.
알림 쿼리를 만드는 데 사용할 수 있습니다. 출력 테이블에는 알림 조건이 충족되었음을 나타내는 부울 열이 포함됩니다. 알림 기능은 부울 열을 사용하여 알림을 실행할지 여부를 결정합니다.
condition
작업에서는 입력 테이블을 정렬하고 명시적 정렬 범위가 있는 쿼리로 생성해야 합니다. 이는 정렬 작업의 범위 인수(예: | align rate(10m)
) 또는 window
테이블 연산으로 제공됩니다.
예:
fetch gce_instance :: compute.googleapis.com/instance/cpu/usage_time
| window 5m
| condition val() < .5
값 열이 두 개 있는 테이블이 생성됩니다. 첫 번째 열은 입력 테이블 usage_time
값 열이 .5
보다 작으면 true인 Bool 열입니다. 두 번째 열은 입력의 usage_time
값 열의 복사본입니다.
absent_for
입력이 없는 조건을 만듭니다.
서명:
Table | absent_for
lit-Duration
absent_for
테이블 연산은 active
와 signal
의 두 값 열이 있는 테이블을 생성합니다. 테이블 입력에서 데이터가 누락되면 active
열은 참이고 그렇지 않으면 거짓입니다. 이는 입력이 없을 때 알림을 받기 위해 사용하는 조건 쿼리를 만드는 데 유용합니다.
각 입력 시계열에서 absent_for
는 입력과 동일한 시계열 식별자를 사용해 정렬된 출력 시계열을 만듭니다. 정렬 기간은 다음 every
로 지정되거나 기본 기간입니다.
Duration 인수는 시간 제한을 지정합니다. 입력 시계열에 출력 지점의 시간보다 이른 시간 제한 내 지점이 있으면 출력 지점의 active
열이 거짓이 됩니다. 이러한 입력 지점이 없는 경우 active
열은 참이 되고 시간 제한 내에 입력이 없음을 나타냅니다.
입력 테이블에 값 열이 있는 경우 signal
열은 입력 시계열에서 가장 최근 입력 지점의 첫 번째 값 열의 값을 포함합니다(한도 이내 여부와 무관). 입력 테이블에 값 열이 없는 경우 출력 지점의 signal
열은 마지막 입력 지점 이후의 분 수를 나타내는 정수입니다.
각 출력 지점 시간에서 absent_for
테이블 작업은 입력 지점의 24시간 전을 살펴봅니다. 지난 24시간 동안 입력 지점이 없는 경우 해당 시간에는 어떠한 지점도 출력되지 않습니다.
예:
fetch gce_instance :: compute.googleapis.com/instance/cpu/usage_time
| absent_for 8h
가상 머신(gce_instance
)의 각 usage_time
시계열에 대해 absent_for
는 정렬된 시계열을 생성하고, 이 시계열의 출력 지점에서 지난 24시간 이내에 입력 지점이 있지만 지난 8시간 이내에(8h
) 지점이 없을 경우active
열이 참입니다. 이는 적합한 알림 이론입니다.
fetch gce_instance :: compute.googleapis.com/instance/cpu/usage_time
| value [] | absent_for 8h
이전 예시와 유사하지만 | value []
는 입력에서 absent_for
연산까지 값 열을 삭제하므로 마지막 입력 지점부터 signal
열이 시간(분 단위)으로 설정됩니다.
기타
ident
ID 테이블 연산: 입력 테이블에 변동 없음
서명:
Table | ident
ident
테이블 연산은 입력 테이블을 생성하며, 변동이 없습니다.
예:
fetch gce_instance :: compute.googleapis.com/instance/cpu/usage_time |
{ ident ; group_by [zone] } |
join | value [zone_fraction: val(0) / val(1)]
특정 테이블의 각 행에 대해 해당 영역에 있는 모든 인스턴스에서 해당 값의 합계에 대한 값의 비율을 계산합니다.
ratio
정렬된 두 입력 테이블의 값 열 비율을 계산합니다.
서명:
Table++ | ratio
ratio
테이블 연산은 두 개의 정렬된 입력 테이블(각각 분자 테이블 입력과 분모 테이블 입력)을 사용합니다. 두 테이블 입력에는 정확히 숫자 유형의 값 열이 하나 있어야 합니다.
분모 테이블의 시계열 식별자 열은 분자 테이블의 시계열 식별자 열의 하위 집합이어야 합니다. 두 테이블에 동일한 시계열 식별자 열(이름 및 유형)이 있는 경우 비율을 계산할 때 수식에 기본값 0이 사용됩니다.
filter_ratio
입력 값 열의 필터링된 두 개 합계의 비율을 계산합니다.
서명:
Table | filter_ratio
Bool,
[ Bool ]
filter_ratio
테이블 연산은 숫자 유형의 값 열이 정확히 하나인 입력 테이블 하나를 사용합니다. 입력 테이블이 정렬되지 않은 경우 align
테이블 연산이 자동으로 삽입되어 정렬됩니다.
filter_ratio
작업은 지정된 타임스탬프의 모든 입력 행을 집계하고, 분자와 분모 합계를 계산하며, 각 타임스탬프에서 이 합계의 비율로 시계열을 생성합니다. 첫 번째 Bool 인수는 분자 합계에 포함되는 항목을 제어하고 두 번째 Bool 인수는 분모 합계에 포함되는 항목을 제어합니다. 두 번째 인수는 선택사항이며, 지정하지 않으면 기본값은 true
입니다.
Bool 인수는 각 행에서 평가되며, true이면 해당 행의 값 열은 분자(첫 번째 Bool) 또는 분모(두 번째 Bool)의 합계에 포함됩니다.
filter_ratio_by
입력 값 열의 필터링된 두 개 합계의 그룹화된 비율을 계산합니다.
서명:
Table | filter_ratio_by
RowToTSID,
Bool,
[ Bool ]
filter_ratio_by
테이블 연산은 숫자 유형의 값 열이 정확히 하나인 입력 테이블 하나를 사용합니다. 입력 테이블이 정렬되지 않은 경우 align
테이블 연산이 자동으로 삽입되어 정렬됩니다.
filter_ratio_by
작업은 RowToTSID 인수로 계산한 동일한 시계열 식별자가 있는 행을 그룹화합니다. 각 그룹에 대해 분자와 분모 합계를 계산하고 각 타임스탬프에서 이 합계의 비율로 시계열을 생성합니다. 첫 번째 Bool 인수는 분자 합계에 포함되는 항목을 제어하고 두 번째 Bool 인수는 분모 합계에 포함되는 항목을 제어합니다. 두 번째 인수는 선택사항이며, 지정하지 않으면 기본값은 true
입니다.
Bool 인수는 각 행에서 평가되며, true이면 해당 행의 값 열은 분자(첫 번째 Bool) 또는 분모(두 번째 Bool)의 합계에 포함됩니다.
각 그룹당 시계열 하나가 계산되며, 시계열 식별자는 rowToTSID 인수로 계산됩니다.
함수
이 섹션에서는 Monitoring Query Language의 표현식(expr
)에 사용할 수 있는 각 함수를 설명합니다.
- 입력 행 열
val
입력 지점(행)에 있는 값 열의 값end
입력 지점(행)의 종료 시간start
입력 지점(행)의 시작 시간older
시계열의 그 다음 이른 지점(행) 값adjacent_delta
입력 지점과 그 다음 이른 지점 사이의 값 변화adjacent_rate
입력 지점과 그 다음 이른 지점(행) 사이의 변화율hash_tsid
시계열 식별자 열의 해시를 반환합니다.
- 논리
- 비교
- 산술
- 수학
- 문자열
concatenate
문자열 연결string_to_double
String을 Double로 변환합니다.string_to_int64
String을 Int로 변환합니다.ascii_to_lower
ASCII 대문자를 소문자로 변경합니다.ascii_to_upper
ASCII 소문자를 대문자로 변경합니다.utf8_normalize
대소문자 비교에 적합한 유니코드 문자열
- 정규 표현식
re_full_match
정규 표현식이 문자열 값 전체와 일치하면 true입니다.re_partial_match
정규 표현식이 문자열 값의 일부와 일치하면 true입니다.re_extract
다른 문자열의 정규 표현식과 일치하는 값을 추출합니다.re_replace
다른 문자열에서 정규 표현식의 첫 번째 일치 항목을 바꿉니다.re_global_replace
다른 문자열에서 정규 표현식의 모든 일치 항목을 바꿉니다.
- 집계
sum
숫자 값 그룹의 합계distribution
숫자 값 또는 분포 값 그룹의 분포count
값 그룹의 값 개수row_count
발생한 입력 행 수count_true
부울 값 그룹의 true 값 수min
숫자 값 그룹의 최솟값max
숫자 값 그룹의 최댓값diameter
숫자 값 그룹의 최댓값에서 최솟값을 뺀 값mean
숫자 값 그룹의 평균stddev
값 그룹의 표준 편차variance
숫자 값 그룹의 분산covariance
값 쌍의 공분산median
숫자 값 또는 분포 값 그룹의 중앙값percentile
숫자 값 또는 분포 값 그룹의 백분위수fraction_less_than
고정 값보다 작은 값 그룹의 비율fraction_true
true인 부울 값 그룹의 비율any_true
부울 값 그룹의 분리all_true
부울 값 그룹의 결합pick_any
값 그룹의 모든 요소 값(임의로 선택됨)singleton
요소가 하나뿐인 값 그룹의 요소 값unique
값(모두 동일해야 함) 그룹의 공통 값aggregate
모든 유형의 값 그룹에서 가져온 기본 집계 값weighted_distribution
가중치가 적용된 값 그룹의 분포
- 정렬
rate
정렬된 시점에서 변화율을 계산합니다.delta
정렬된 시점의 값 변화를 계산합니다.any_true_aligner
창에서 true 값을 찾아 Bool 시계열을 정렬합니다.count_true_aligner
창에서 true 값을 세어 Bool 시계열을 정렬합니다.delta_gauge
정렬된 시점의 값 변화를 게이지 시계열로 계산합니다.fraction_true_aligner
Bool 시계열을 창에서 true 값 비율로 정렬합니다.int_mean_aligner
창에서 Int 값의 평균을 찾아 정렬합니다.interpolate
정렬된 시점에 보간된 값을 계산합니다.mean_aligner
창에서 값의 평균을 찾아 정렬합니다.next_older
더 이른 시간에서 늦은 시간으로 이동하면서 정렬된 시점입니다.next_younger
더 늦은 시간에서 이른 시간으로 이동하면서 정렬된 시점입니다.
- 단위 조작
scale
다른 측정 단위로 값을 조정합니다.cast_units
값 측정 단위를 설정합니다.
- 기간 범위
- 분포
count_from
분포 값의 값 수sum_from
분포 값의 값 합계mean_from
분포 값의 값 평균stddev_from
분포 값의 표준 편차variance_from
분포 값에 있는 값의 분산median_from
분포 값에 있는 값의 중앙값percentile_from
분포 값의 백분위수fraction_less_than_from
분포에서 고정 값보다 작은 값의 비율bounded_percentile_from
분포 값의 경계 내에 있는 값의 백분위수rebucket
새 버킷 사양으로 변환된 분포 값
- 버킷 지정자
powers_of
버킷 경계가 기하급수적으로 증가하는 버킷 사양fixed_width
버킷 크기가 동일한 버킷 사양custom
버킷 경계 목록의 버킷 사양num_buckets
버킷 사양의 버킷 수를 설정합니다.bounds
첫 번째 버킷의 하한값과 마지막 버킷의 상한값을 설정합니다.lower
버킷 사양에서 첫 번째 버킷의 하한값을 설정합니다.
- 기타
cast_double
Int 값을 Double로 변환합니다.cast_gauge
누적 또는 델타 시계열 값을 게이지로 변환합니다.within
정렬 값 계산의 범위를 지정합니다.
입력 행 열
쿼리의 표현식은 입력 행의 열에서 작동합니다. 일반적으로 이름을 지정하여 열에 액세스합니다. 이 섹션의 함수는 열에 액세스하는 대체 방법을 제공합니다.
시간 열에는 열 이름이 없으며 start
및 end
함수에서 액세스합니다.
값 열은 val
함수를 사용하여 이름 또는 위치별로 액세스할 수 있습니다.
older
함수는 시계열의 그 다음 이른 행에 있는 열에 대한 액세스 권한을 제공합니다.
val
입력 지점(행)에 있는 값 열의 값
서명:
ImplicitRowInput val(
[ lit-Int ] )
→
InputType (암시적 행 입력)
val
함수는 입력 행의 값 열에 액세스할 경우 열 이름을 사용하는 대체 방법을 제공합니다. Int 인수(기본값 0)는 정렬된 값 열 집합(첫 번째 값 열의 0으로 시작)의 색인을 생성하고 색인이 생성된 값 열의 값을 반환합니다. 값 열 이름을 사용하여 얻은 값과 동일한 값입니다.
val
함수가 음수이거나 값 열의 수와 같거나 큰 색인을 표시하는 경우 정적 오류입니다.
end
입력 지점(행)의 종료 시간
서명:
ImplicitRowInput end(
)
→
Date.Gauge (암시적 행 입력)
end
함수는 현재 입력 행의 종료 시간 열에 날짜 값을 반환합니다.
start
입력 지점(행)의 시작 시간
서명:
ImplicitRowInput start(
)
→
Date.Gauge (암시적 행 입력)
start
함수는 현재 입력 행의 시작 시간 열에 날짜 값을 반환합니다. 행에 시작 시간이 없으면(게이지 데이터만으로 구성되어 있으므로) 시작 시간은 no-value를 반환합니다.
older
시계열에서 그 다음 이른 지점(행)의 값입니다.
서명:
older(
ColumnValue.CumulativeOK )
→
FirstArgType.FirstArgKind
older(
Date )
→ Date.FirstArgKind
older
의 인수는 열 이름이거나 열 값(val
, end
, start
)을 지정하는 함수여야 합니다. 반환되는 값은 동일한 시계열의 입력 행에 대한 다음 이른 행의 열 값입니다. 동일한 시계열에 이러한 이른 행이 없으면 older
는 no-value를 반환합니다.
참조된 열은 값, 시간 또는 시계열 식별자 열일 수 있습니다. 시계열 식별자 열인 경우 older
는 동일한 시계열에 이른 행이 없더라도 인수 표현식과 동일한 값을 반환합니다.
adjacent_delta
입력 지점과 그 다음 이른 지점 사이의 값 변화
서명:
ImplicitRowInput adjacent_delta(
)
→
InputType (암시적 행 입력)
adjacent_delta
함수는 단일 숫자(Int 또는 Double) 또는 분포 값 열이 있는 테이블에서 작동합니다.
게이지 시계열에 적용되는 경우, adjacent_delta
는 현재 입력 행의 값 열과 동일한 시계열의 다음 이른 행의 값 열(있는 경우) 간 값의 차이를 반환합니다. 동일한 시계열에 그 다음 이른 행이 없으면 adjacent_delta
는 no-value를 반환합니다. 결과에 게이지 시계열 종류가 있습니다.
델타 시계열에 적용하는 경우 adjacent_delta
는 델타 시계열 종류로 남아 있는 값 열의 값을 반환합니다. 각 출력 지점은 생성된 입력 지점과 동일한 값, 시작 시간, 종료 시간을 갖습니다.
누적 시계열은 쿼리에 거의 사용되지 않지만 누적 시계열에 적용하는 경우 adjacent_delta
는 다음 두 값 중 하나를 반환합니다.
입력 지점의 시작 시간이 그 다음 이른 지점의 종료 시간보다 이른 경우
adjacent_delta
는 입력 지점의 값에서 그 다음 이른 지점의 값을 뺀 값을 반환합니다.입력 지점의 시작 시간이 그 다음 이른 지점의 종료 시간보다 늦은 경우
adjacent_delta
는 입력 지점 값(시작 시간에서 0의 값을 뺀 값)을 반환합니다.
결과 시계열에는 델타 시계열 종류가 있으며, 각 시계열은 원래 시작 시간인 시작 시간 또는 그 다음 이른 입력 지점의 종료 시간 중 더 늦은 쪽을 가리킵니다.
adjacent_rate
입력 지점과 그 다음 이른 지점(행) 사이의 변화율
서명:
ImplicitRowInput adjacent_rate(
)
→
Double.Gauge (암시적 행 입력)
adjacent_rate
함수는 단일 숫자(Int 또는 Double) 또는 분포 값 열이 있는 테이블에서 작동합니다.
게이지 또는 누적 시계열에 적용되는 경우, adjacent_rate
는 현재 입력 행의 값 열과 동일한 시계열의 다음 이른 행의 값 열(있는 경우) 간 값의 변화율을 반환합니다. 이는 값의 차이를 두 행의 종료 시간 차이로 나눈 것입니다. 동일한 시계열에 다음 이른 행이 없으면 adjacent_rate
는 no-value를 반환합니다. 결과에 게이지 시계열 종류가 있습니다.
델타 시계열에 적용하는 경우 adjacent_rate
는 현재 입력 행의 값 열을 해당 행의 시작 시간과 종료 시간의 차이로 나눈 값을 반환합니다.
hash_tsid
시계열 식별자 열의 해시를 반환합니다.
서명:
ImplicitRowInput hash_tsid(
[ lit-Int ] )
→ Int (암시적 행 입력)
hash_tsid
함수는 현재 입력 행의 시계열 식별자 필드에 있는 값의 해시를 반환합니다. 인수가 지정되면 해시의 시드로 사용됩니다.
논리
not
부울 값의 논리적 부정
서명:
not(
Bool )
→ Bool
not
함수는 부울 값을 사용하며, 인수가 false이면 true를 반환하고, 인수가 true이면 false를 반환합니다. 입력 인수가 no-value이면 그것이 결과입니다.
and
두 부울 값의 논리적 and
서명:
and(
Bool,
Bool )
→ Bool
두 입력 값이 모두 true이면 and
함수가 true를 반환하고 그렇지 않으면 false를 반환합니다. 입력 중 하나가 no-value이면 and
는 항상 no-value를 반환합니다.
or
두 부울 값의 논리적 or
서명:
or(
Bool,
Bool )
→ Bool
or
함수는 입력 중 하나가 true이면 true를 반환하고 그렇지 않으면 false를 반환합니다. 입력 중 하나가 no-value이면 or
는 항상 no-value를 반환합니다.
true
부울 값이 true
서명:
ImplicitRowInput true(
)
→
lit-Bool (암시적 행 입력)
이 함수는 리터럴 Bool 값 true
를 반환합니다.
false
부울 값이 false
서명:
ImplicitRowInput false(
)
→
lit-Bool (암시적 행 입력)
이 함수는 리터럴 Bool 값 false
를 반환합니다.
has
설정된 인수에 특정 값이 포함되어 있으면 true
서명:
has(
Set,
lit-ColumnValue )
→ Bool
첫 번째 인수 집합에 두 번째 인수가 요소로 포함되어 있으면 has
함수는 true를 반환합니다.
has_value
인수 표현식이 값을 계산하는 경우 true
서명:
has_value(
ColumnValue )
→ Bool
has_value
함수는 인수가 값으로 평가되면 true를 반환하고, no-value로 평가되면 false를 반환합니다.
if
두 값에서 조건부로 선택되는 값
서명:
if(
Bool,
ColumnValue.Delta,
ColumnValue.Delta(same) )
→
LastArgType.Delta
if(
Bool,
ColumnValue,
ColumnValue(same) )
→ LastArgType
if
함수는 첫 번째 인수의 값(true
또는 false
)에 따라 두 번째 또는 세 번째 인수를 반환합니다.
if
는 첫 번째 Bool 인수를 평가합니다. no-value이면 no-value가 결과입니다. 첫 번째 인수가 true이면 두 번째 인수가 반환되고 첫 번째 인수가 false이면 세 번째 인수가 반환됩니다.
두 번째 또는 세 번째 인수가 no-value일 수도 있지만, Bool 인수가 no-value일 경우 또는 반환된 인수가 no-value일 경우 if
의 결과는 no-value만 됩니다. 결과가 no-value가 아니면서 선택되지 않은 인수가 no-value가 될 수 있습니다.
if
의 두 번째 및 세 번째 인수가 숫자이고 두 인수 중 하나에 단위가 있는 경우 두 인수 모두 단위가 있어야 합니다. 인수에 단위가 있으면 단위가 동일하거나 여기에서 지정된 규칙에 따라 인수 중 하나가 if
적용 전에 조정되도록 허용하여 단위가 동일하도록 해야 합니다.
인수 하나에만 단위가 있거나 두 인수 모두 동일할 수 없는 단위를 가지는 경우 오류가 발생합니다.
if
의 결과에는 조정 가능한 두 번째 인수의 단위가 있습니다.
or_else
값, 또는 값이 아니면 다른 값
서명:
or_else(
ColumnValue,
ColumnValue(same) )
→ LastArgType
or_else
함수는 no-value가 아니면 첫 번째 인수의 값을 반환하고 no-value이면 두 번째 인수의 값이 반환됩니다.
or_else
함수는 두 인수가 모두 no-value인 경우에만 값을 반환합니다.
or_else
의 인수가 숫자이고 두 인수 중 하나에 단위가 있는 경우 두 인수 모두 단위가 있어야 합니다. 인수에 단위가 있으면 단위가 동일하거나 여기에서 지정된 규칙에 따라 인수 중 하나가 or_else
적용 전에 조정되도록 허용하여 단위가 동일하도록 해야 합니다.
인수 하나에만 단위가 있거나 두 인수 모두 동일할 수 없는 단위를 가지는 경우 오류가 발생합니다.
or_else
의 결과에는 첫 번째 인수의 조정 가능한 단위가 있습니다.
비교
비교 연산자는 같은 유형의 두 값 또는 두 숫자(Int 또는 *Double) 값을 비교하여 Bool 값을 반환합니다. 대부분의 함수와 달리 비교 연산자는 no-value를 결코 반환하지 않습니다. 입력이 no-value이면 다른 값보다 큰 특정 값으로 간주됩니다.
eq
같음
서명:
eq(
Num,
Num )
→ Bool
eq(
Comparable,
Comparable(동일) )
→ Bool
첫 번째 Comparable 인수와 두 번째 Comparable 인수를 비교하여 두 인수가 동일하면 true
가 반환되고 동일하지 않으면 false
가 반환됩니다. 인수 하나는 Int이고 다른 인수는 Double인 경우 비교하기 전에 Int 인수가 Double 값으로 변환됩니다.
두 입력 중 하나가 no-value이면 비교가 완료되고 Bool 인수가 반환됩니다. 두 값이 모두 no-value이면 true
, 그렇지 않으면 false
가 반환됩니다. 이렇게 하면 no-value는 그 자신과 동일한 것으로 간주됩니다.
숫자 인수를 비교하기 위해 두 인수 중 하나에 단위가 있으면 두 인수 모두 단위가 있어야 하며 단위가 동일해야 합니다. 결과적으로 Bool 유형에는 단위가 없습니다.
eq
의 인수에 동일한 측정기준을 가진 동일하지 않은 단위가 있는 경우, 한 인수는 단위를 자동으로 조정하여 두 인수의 단위가 동일하도록 만듭니다.
eq
의 인수가 숫자이고 두 인수 중 하나에 단위가 있는 경우 두 인수 모두 단위가 있어야 합니다. 인수에 단위가 있으면 단위가 동일하거나 여기에서 지정된 규칙에 따라 인수 중 하나가 eq
적용 전에 조정되도록 허용하여 단위가 동일하도록 해야 합니다.
인수 하나에만 단위가 있거나 두 인수 모두 동일할 수 없는 단위를 가지는 경우 오류가 발생합니다.
'eq'의 결과로 부울 유형에는 단위가 없습니다.
resource.project_id
열과 리터럴 문자열을 비교할 때는 resource.project_id
열 일치에 설명된 대로 프로젝트 번호와 프로젝트 이름의 차이를 다루도록 특별히 처리해야 합니다.
ne
같지 않음
서명:
ne(
Num,
Num )
→ Bool
ne(
Comparable,
Comparable(동일) )
→ Bool
첫 번째 Comparable 인수와 두 번째 Comparable 인수를 비교하여 두 인수가 동일하면 false
가 반환되고 동일하지 않으면 true
가 반환됩니다. 인수 하나는 Int이고 다른 인수는 Double인 경우 비교하기 전에 Int 인수가 Double 값으로 변환됩니다.
두 입력 중 하나가 no-value이면 비교가 완료되고 Bool 인수가 반환됩니다. 두 값이 모두 no-value이면 false
, 그렇지 않으면 false
가 반환됩니다. 이렇게 하면 no-value는 그 자신과 동일한 것으로 간주됩니다.
ne
의 인수가 숫자이고 두 인수 중 하나에 단위가 있는 경우 두 인수 모두 단위가 있어야 합니다. 인수에 단위가 있으면 단위가 동일하거나 여기에서 지정된 규칙에 따라 인수 중 하나가 ne
적용 전에 조정되도록 허용하여 단위가 동일하도록 해야 합니다.
인수 하나에만 단위가 있거나 두 인수 모두 동일할 수 없는 단위를 가지는 경우 오류가 발생합니다.
'ne'의 결과로 Bool 유형에는 단위가 없습니다.
resource.project_id
열과 리터럴 문자열을 비교할 때는 resource.project_id
열 일치에 설명된 대로 프로젝트 번호와 프로젝트 이름의 차이를 다루도록 특별히 처리해야 합니다.
ge
크거나 같음
서명:
ge(
Num,
Num )
→ Bool
ge(
Comparable,
Comparable(동일) )
→ Bool
첫 번째 Comparable 인수와 두 번째 Comparable 인수를 비교하여 첫 번째 인수가 두 번째 인수보다 크거나 같으면 true
가 반환되고 그렇지 않으면 false
가 반환됩니다. 인수 하나는 Int이고 다른 인수는 Double인 경우 비교하기 전에 Int 인수가 Double 값으로 변환됩니다.
두 입력 중 하나가 no-value이면 비교가 완료되고 Bool 인수가 반환됩니다. 첫 번째 값이 no-value이면 true
, 그렇지 않으면 false
가 반환됩니다. 이렇게 하면 no-value는 다른 값보다 큰 것으로 간주됩니다.
ge
의 인수가 숫자이고 두 인수 중 하나에 단위가 있는 경우 두 인수 모두 단위가 있어야 합니다. 인수에 단위가 있으면 단위는 동일해야 합니다. 단위가 동일하지 않지만 동일한 측정기준을 가지는 경우 인수 중 하나가 여기에 설명된 대로 다른 단위와 동일하도록 자동으로 조정될 수 있습니다. 인수 중 하나에만 단위가 있거나 두 인수에 동일하지 않은 단위가 있고 조정이 되지 않은 경우 오류가 발생합니다.
'ge'의 결과로 Bool 유형에는 단위가 없습니다.
gt
보다 큼
서명:
gt(
Num,
Num )
→ Bool
gt(
Comparable,
Comparable(동일) )
→ Bool
첫 번째 Comparable 인수와 두 번째 Comparable 인수를 비교하여 첫 번째 인수가 두 번째 인수보다 크면 true
가 반환되고 그렇지 않으면 false
가 반환됩니다. 인수 하나는 Int이고 다른 인수는 Double인 경우 비교하기 전에 Int 인수가 Double 값으로 변환됩니다.
두 입력 중 하나가 no-value이면 비교가 완료되고 Bool 인수가 반환됩니다. 두 번째 값이 no-value이면 false
, 그렇지 않으면 true
가 반환됩니다. 이렇게 하면 no-value는 다른 값보다 큰 것으로 간주됩니다.
gt
의 인수가 숫자이고 두 인수 중 하나에 단위가 있는 경우 두 인수 모두 단위가 있어야 합니다. 인수에 단위가 있으면 단위가 동일하거나 여기에서 지정된 규칙에 따라 인수 중 하나가 gt
적용 전에 조정되도록 허용하여 단위가 동일하도록 해야 합니다.
인수 하나에만 단위가 있거나 두 인수 모두 동일할 수 없는 단위를 가지는 경우 오류가 발생합니다.
'gt'의 결과로 Bool 유형에는 단위가 없습니다.
le
작거나 같음
서명:
le(
Num,
Num )
→ Bool
le(
Comparable,
Comparable(동일) )
→ Bool
첫 번째 Comparable 인수와 두 번째 Comparable 인수를 비교하여 첫 번째 인수가 두 번째 인수보다 작거나 같으면 true
가 반환되고 그렇지 않으면 false
가 반환됩니다. 인수 하나는 Int이고 다른 인수는 Double인 경우 비교하기 전에 Int 인수가 Double 값으로 변환됩니다.
두 입력 중 하나가 no-value이면 비교가 완료되고 Bool 인수가 반환됩니다. 두 번째 값이 no-value이면 true
, 그렇지 않으면 false
가 반환됩니다. 이렇게 하면 no-value는 다른 값보다 큰 것으로 간주됩니다.
le
의 인수가 숫자이고 두 인수 중 하나에 단위가 있는 경우 두 인수 모두 단위가 있어야 합니다. 인수에 단위가 있으면 단위가 동일하거나 여기에서 지정된 규칙에 따라 인수 중 하나가 le
적용 전에 조정되도록 허용하여 단위가 동일하도록 해야 합니다.
인수 하나에만 단위가 있거나 두 인수 모두 동일할 수 없는 단위를 가지는 경우 오류가 발생합니다.
'le'의 결과로 Bool 유형에는 단위가 없습니다.
lt
보다 작음
서명:
lt(
Num,
Num )
→ Bool
lt(
Comparable,
Comparable(동일) )
→ Bool
첫 번째 Comparable 인수와 두 번째 Comparable 인수를 비교하여 첫 번째 인수가 두 번째 인수보다 작으면 true
가 반환되고 그렇지 않으면 false
가 반환됩니다. 인수 하나는 Int이고 다른 인수는 Double인 경우 비교하기 전에 Int 인수가 Double 값으로 변환됩니다.
두 입력 중 하나가 no-value이면 비교가 완료되고 Bool 인수가 반환됩니다. 첫 번째 값이 no-value이면 false
, 그렇지 않으면 true
가 반환됩니다. 이렇게 하면 no-value는 다른 값보다 큰 것으로 간주됩니다.
lt
의 인수가 숫자이고 두 인수 중 하나에 단위가 있는 경우 두 인수 모두 단위가 있어야 합니다. 인수에 단위가 있으면 단위가 동일하거나 여기에서 지정된 규칙에 따라 인수 중 하나가 lt
적용 전에 조정되도록 허용하여 단위가 동일하도록 해야 합니다.
인수 하나에만 단위가 있거나 두 인수 모두 동일할 수 없는 단위를 가지는 경우 오류가 발생합니다.
'lt'의 결과로 Bool 유형에는 단위가 없습니다.
산술
산술 연산자를 구현하는 함수
add
두 숫자의 합
서명:
add(
Num.Delta,
Num.Delta )
→
Num.Delta
add(
Num,
Num )
→ Num
add(
Duration,
Duration )
→
Duration
add(
Date,
Duration )
→ Date
add(
Duration,
Date )
→ Date
두 Num 인수의 add
함수는 두 인수의 합을 반환하므로, 두 입력 중 하나가 Double 값이면 Double 값으로, 그렇지 않으면 Int 값으로 반환합니다. 두 입력이 모두 델타 시계열 종류인 경우 출력은 델타 시계열 종류입니다. 그렇지 않으면 출력은 게이지 시계열 종류입니다.
두 개의 Duration 인수에 대한 add
함수는 합계인 기간을 반환합니다.
Date 및 Duration 인수의 add
함수는 Date 인수보다 Duration만큼 늦은 날짜를 반환합니다. Duration이 음수인 경우 결과는 입력 Date보다 이르게 됩니다(시간을 거스름).
add
의 인수가 숫자이고 두 인수 중 하나에 단위가 있는 경우 두 인수 모두 단위가 있어야 합니다. 인수에 단위가 있으면 단위가 동일하거나 여기에서 지정된 규칙에 따라 인수 중 하나가 add
적용 전에 조정되도록 허용하여 단위가 동일하도록 해야 합니다.
인수 하나에만 단위가 있거나 두 인수 모두 동일할 수 없는 단위를 가지는 경우 오류가 발생합니다.
add
의 결과에는 첫 번째 인수의 조정 가능한 단위가 있습니다.
sub
두 숫자의 차이
서명:
sub(
Num.Delta,
Num.Delta )
→
Num.Delta
sub(
Num,
Num )
→ Num
sub(
Duration,
Duration )
→
Duration
sub(
Date,
Duration )
→ Date
sub(
Date,
Date )
→ Duration
두 Num 인수의 sub
함수는 첫 번째 인수에서 두 번째 인수를 뺀 값을 반환하므로, 두 입력 중 하나가 Double 값이면 Double 값으로, 그렇지 않으면 Int 값으로 반환합니다. 두 입력이 모두 델타 시계열 종류인 경우 출력은 델타 시계열 종류입니다. 그렇지 않으면 출력은 게이지 시계열 종류입니다.
Duration 인수 두 개의 sub
함수는 두 인수의 숫자 차이에 해당하는 기간을 반환합니다.
Date 및 Duration 인수의 sub
함수는 Date 인수보다 Duration만큼 이른 날짜를 반환합니다. Duration 인수가 음수인 경우 결과는 입력 Date 인수보다 늦게 됩니다.
sub
의 인수가 숫자이고 두 인수 중 하나에 단위가 있는 경우 두 인수 모두 단위가 있어야 합니다. 인수에 단위가 있으면 단위가 동일하거나 여기에서 지정된 규칙에 따라 인수 중 하나가 sub
적용 전에 조정되도록 허용하여 단위가 동일하도록 해야 합니다.
인수 하나에만 단위가 있거나 두 인수 모두 동일할 수 없는 단위를 가지는 경우 오류가 발생합니다.
sub
의 결과에는 첫 번째 인수의 조정 가능한 단위가 있습니다.
mul
두 숫자의 곱
서명:
mul(
Num.Delta,
lit-Num )
→
Num.Delta
mul(
lit-Num,
Num.Delta )
→
Num.Delta
mul(
Num,
Num )
→ Num
mul(
Duration,
Num )
→ Duration
mul(
Num,
Duration )
→ Duration
두 Num 인수의 mul
함수는 두 인수의 곱을 반환하므로, 두 입력 중 하나가 Double 값이면 Double 값으로, 그렇지 않으면 Int 값으로 반환합니다. 한 입력이 델타 시계열 종류이고 다른 입력이 리터럴이면 출력은 델타 시계열 종류입니다. 그렇지 않으면 출력은 게이지 시계열 종류입니다.
Num 및 Duration 인수의 mul
함수는 Duration 인수에 Duration 유형의 Num을 곱합니다.
두 숫자 인수에 단위가 있으면 두 인수 모두 단위가 있어야 하며 단위가 동일해야 합니다. 인수에 단위가 있으면 결과 단위는 두 인수의 단위 곱이 됩니다. 한 가지 예외는 리터럴에 의한 곱셈입니다. 리터럴에는 명시적으로 지정된 측정 단위가 없을 수 있으므로 다른 인수에 측정 단위가 있으면 리터럴에 1
단위가 지정되며 결과는 다른 인수의 단위를 갖게 됩니다.
div
두 숫자의 비율
서명:
div(
Num.Delta,
lit-Num )
→
Double.Delta
div(
Num,
Num )
→ Double
div(
Duration,
Num )
→ Duration
div(
Duration,
Duration )
→ Double
div(
Date,
Duration )
→ Double
div
함수는 첫 번째 Num 인수를 두 번째 Num 인수로 나누어 그 비율을 Double 값으로 반환합니다.
이 함수는 두 번째 Num 인수가 0이면 결과를 생성하지 않습니다.
div
함수는 첫 번째 인수를 두 번째 인수로 나누어 그 비율을 Double 값으로 반환합니다. 인수가 Date 또는 Duration인 경우 이러한 값의 완전한 내부 정밀성을 나타내는 단위를 사용하여 Date 또는 Duration에 해당하는 실수 값으로 값이 표시됩니다. 결과가 날짜 또는 기간인 경우 비율은 Date 또는 Duration이 나타낼 수 있는 가장 가까운 값으로 반올림한 같은 단위의 값으로 해석됩니다.
Date 값을 Duration 값으로 나눌 때의 경우 결과는 Unix epoch(d'1970/01/01-00:00:00+00:00'
)부터의 Duration 기간 숫자인 Double 값입니다. 따라서 d'2020/06/01-01:20:03' / 1s
는 d'1970/01/01-00:00:00+00:00'
부터 d'2020/06/01-01:20:03'
의 초 값입니다.
div
함수는 두 번째 인수가 0이면 결과를 생성하지 않습니다.
두 숫자 인수에 단위가 있으면 두 인수 모두 단위가 있어야 합니다. 인수에 단위가 있는 경우 결과 단위는 첫 번째 인수의 단위를 두 번째 인수의 단위로 나눈 것입니다. 한 가지 예외는 리터럴에 의한 나눗셈입니다. 리터럴에는 명시적으로 지정된 측정 단위가 없을 수 있으므로 다른 인수에 측정 단위가 있으면 리터럴에 1
단위가 지정되며 결과는 다른 인수의 단위를 갖게 됩니다.
int_div
두 정수를 나눈 몫
서명:
int_div(
Int,
Int )
→ Int
int_div(
Duration,
Int )
→
Duration
int_div(
Duration,
Duration )
→
Int
int_div(
Date,
Duration )
→ Int
int_div
함수는 첫 번째 인수를 두 번째 인수로 나누어 몫을 Int 값으로 반환합니다. 인수가 Date 또는 Duration인 경우 이러한 값의 완전한 내부 정밀성을 나타내는 단위를 사용하여 Date 또는 Duration에 해당하는 정수 값으로 값이 표시됩니다. 결과가 날짜 또는 기간인 경우 숫자 몫은 같은 단위의 값으로 해석됩니다.
Date 값을 Duration 값으로 나눌 때의 경우 결과는 Unix epoch(d'1970/01/01-00:00:00+00:00'
)부터의 Duration 기간 숫자인 Int 값입니다. 따라서 d'2020/06/01-01:20:03' / 1s
는 d'1970/01/01-00:00:00+00:00'
부터 d'2020/06/01-01:20:03'
의 초 값입니다.
int_div
함수는 두 번째 인수가 0이면 결과를 생성하지 않습니다.
두 숫자 인수에 단위가 있으면 두 인수 모두 단위가 있어야 합니다. 인수에 단위가 있는 경우 결과 단위는 첫 번째 인수의 단위를 두 번째 인수의 단위로 나눈 것입니다. 한 가지 예외는 리터럴에 의한 나눗셈입니다. 리터럴에는 명시적으로 지정된 측정 단위가 없을 수 있으므로 다른 인수에 측정 단위가 있으면 리터럴에 1
단위가 지정되며 결과는 다른 인수의 단위를 갖게 됩니다.
abs
절댓값
서명:
abs(
Num )
→ Num
abs
함수는 숫자(Int 또는 *Double) 입력을 사용하며 입력과 크기가 같고 음수가 아닌 동일한 유형의 값을 반환합니다.
abs
의 결과에는 측정 단위가 동일합니다.
neg
숫자의 음수
서명:
neg(
Num )
→ Num
neg(
Duration )
→ Duration
neg
함수는 인수의 음수를 반환합니다.
pos
숫자 입력의 ID
서명:
pos(
Num )
→ Num
pos(
Duration )
→ Duration
pos
함수는 인수 하나를 반환합니다.
rem
두 정수를 나눈 나머지
서명:
rem(
Int,
Int )
→ Int
rem(
Duration,
Duration )
→
Duration
rem
함수는 첫 번째 Int 인수를 두 번째 Int 인수로 나누어 나머지를 Int 값으로 반환합니다.
이 함수는 두 번째 Num 인수가 0이면 결과를 생성하지 않습니다.
Rem
의 결과에 연결된 측정 단위는 첫 번째 인수의 단위(있는 경우)와 동일합니다.
Math
일부 수학 함수
sqrt
제곱근
서명:
sqrt(
Num )
→ Double
sqrt
함수는 Num 인수의 제곱근을 Double 값으로 반환합니다.
Num 인수가 0 미만이면 sqrt
는 결과를 생성하지 않습니다.
sqrt
의 결과에 측정 단위가 없습니다.
log
자연 로그
서명:
log(
Num )
→ Double
log
함수는 Num 인수의 자연 로그를 Double 값으로 반환합니다.
Num 인수가 0 이하이면 log
가 결과를 생성하지 않습니다.
log
의 결과에 측정 단위가 없습니다.
exp
e의 거듭제곱
서명:
exp(
Num )
→ Double
exp
는 Num 인수를 거듭제곱한 e(자연 로그의 밑)를 Double 값으로 반환합니다.
exp
함수는 오버플로 시 실수 값 무한대를 반환합니다.
exp
의 결과에 측정 단위가 없습니다.
power
한 숫자를 다른 숫자로 거듭제곱
서명:
power(
Num,
Num )
→ Double
첫 번째 Num 인수의 값을 두 번째 Num 인수만큼 거듭제곱한 값을 Double 값으로 표시하여 반환합니다. 두 인수 중 하나가 Int이면 작업 전에 Double로 변환됩니다.
power
의 결과에 측정 단위가 없습니다.
int_round
가장 가까운 정수
서명:
int_round(
Double )
→ Int
int_round
함수는 Double 값을 사용하여 가장 가까운 정수 값으로 반올림한 후 Int 값으로 반환합니다. 입력이 값이 아닐 경우 또는 결과가 Int 값으로 표시될 수 없는 경우 결과는 no-value입니다.
int_round
의 결과는 입력과 동일한 측정 단위를 가집니다.
int_floor
하한값 정수
서명:
int_floor(
Double )
→ Int
int_floor
함수는 Double 값을 사용하여 가장 가까운 정수 값으로 마이너스 무한대를 향해 반올림한 후 Int 값으로 반환합니다. 입력이 값이 아닐 경우 또는 결과가 Int 값으로 표시될 수 없는 경우 결과는 no-value입니다.
int_floor
의 결과는 입력과 동일한 측정 단위를 가집니다.
int_ceil
상한값 정수
서명:
int_ceil(
Double )
→ Int
int_ceil
함수는 Double 값을 사용하여 가장 가까운 정수 값으로 무한대를 향해 반올림한 후 Int 값으로 반환합니다. 입력이 no-value일 경우 또는 결과가 Int 값으로 표시될 수 없는 경우 결과는 non-value입니다.
int_ceil
의 결과에 측정 단위가 없습니다.
문자열
String 값을 처리하는 함수.
concatenate
문자열 연결
서명:
concatenate(
String,
String )
→
String
concatenate
함수는 두 String 인수의 연결을 반환합니다.
string_to_double
String을 Double로 변환합니다.
서명:
string_to_double(
String )
→ Double
string_to_double
함수는 입력 String 인수를 부동 소수점 숫자로 파싱하고 Double 값으로 결과를 반환합니다.
문자열이 유효한 부동 소수점 값이 아니면 결과는 no-value입니다.
string_to_double
의 결과에 측정 단위가 없습니다.
string_to_int64
String을 Int로 변환합니다.
서명:
string_to_int64(
String )
→ Int
string_to_int64
함수는 입력 String 인수를 정수 숫자로 파싱하고 결과를 Int 값으로 반환합니다. 문자열이 유효한 정수 값이 아니거나 Int 값으로 표현할 수 없으면 결과는 no-value입니다.
string_to_int64
의 결과에 측정 단위가 없습니다.
ascii_to_lower
ASCII 대문자를 소문자로 변경합니다.
서명:
ascii_to_lower(
String )
→ String
ascii_to_upper
함수는 String 인수를 사용하고 각 대문자 ASCII 문자가 해당 소문자 ASCII 문자로 변환된 경우를 제외하고 동일한 String 값을 반환합니다. 다른 모든 문자는 변경되지 않습니다.
ascii_to_upper
ASCII 소문자를 대문자로 변경합니다.
서명:
ascii_to_upper(
String )
→ String
ascii_to_upper
함수는 String 인수를 사용하며 각 소문자 ASCII 문자가 해당 대문자 ASCII 문자로 변환된 경우를 제외하고 동일한 String 값을 반환합니다. 다른 모든 문자는 변경되지 않습니다.
utf8_normalize
대소문자 비교에 적합한 유니코드 문자열
서명:
utf8_normalize(
String )
→ String
utf8_normalize
함수는 String 인수를 사용하며, 입력이 유효한 utf8로 인코딩된 문자열이라는 가정하에 입력 값의 대소문자 비교에 적합한 String 값을 반환합니다.
정규 표현식
RE2 정규 표현식을 사용하여 일치, 추출, 수정을 수행하는 함수입니다.
re_full_match
정규 표현식이 문자열 값 전체와 일치하면 true입니다.
서명:
re_full_match(
String,
lit-String )
→
Bool
re_partial_match
함수는 문자열 입력과 리터럴 문자열 정규 표현식을 사용하며, 입력 문자열 전체가 정규 표현식과 일치하는 경우 true
를 반환합니다. 그렇지 않으면 입력 문자열 인수가 no-value인 경우에도 false
가 반환됩니다.
resource.project_id
열에서 정규 표현식이 일치할 때는 일치resource.project_id
열에 설명된 대로 프로젝트 번호와 프로젝트 이름의 차이를 다루도록 특별히 처리해야 합니다.
re_partial_match
정규 표현식이 문자열 값의 일부와 일치하면 true입니다.
서명:
re_partial_match(
String,
lit-String )
→ Bool
re_partial_match
함수는 문자열 입력과 리터럴 문자열 정규 표현식을 사용하며, 입력 문자열의 일부가 정규 표현식과 일치하는 경우 true
를 반환합니다. 그렇지 않으면 문자열 인수가 no-value인 경우에도 false
가 반환됩니다.
re_extract
다른 문자열의 정규 표현식과 일치하는 값을 추출합니다.
서명:
re_extract(
String,
[ lit-String ],
[ lit-String ] )
→ String
re_extract
함수는 입력 String 인수와 두 개의 리터럴 String 인수, 즉 정규 표현식과 대체 문자열을 취합니다. 입력 문자열을 정규 표현식 및 대체 문자열의 표현식에 있는 대체 캡처 그룹과 일치시켜서 결과를 구성합니다.
캡처 그룹을 대체한 대체 문자열이 결과입니다.
정규 표현식 인수를 지정하지 않으면 기본값인 '(.*)'로 설정되므로 하나의 캡처 그룹에 첫 번째 인수 문자열 전체가 포함됩니다.
대체 문자열 인수를 지정하지 않으면 기본값인 R"\ 1"로 설정되므로 첫 번째 대체 그룹이 출력 문자열이 됩니다.
입력 문자열이 no-value인 경우 정규 표현식이 일치하지 않거나 캡처 그룹 대체가 작동하지 않으면 no-value가 반환됩니다.
re_replace
다른 문자열에서 정규 표현식의 첫 번째 일치 항목을 바꿉니다.
서명:
re_replace(
String,
lit-String,
lit-String )
→ String
re_replace
함수는 입력 String 인수와 두 개의 리터럴 String 인수, 즉 정규 표현식과 대체 값을 취합니다. 정규 표현식이 입력 문자열의 일부와 일치하는 경우 반환되는 값은 입력 문자열의 첫 번째 일치 항목을 대체 문자열로 바꾸면 만들어집니다.
입력 문자열이 no-value인 경우 또는 일치하는 항목이 없을 경우 반환되는 값은 입력 문자열입니다.
re_global_replace
다른 문자열에서 정규 표현식의 모든 일치 항목을 바꿉니다.
서명:
re_global_replace(
String,
lit-String,
lit-String )
→ String
re_global_replace
함수는 입력 String 인수와 두 개의 리터럴 String 인수, 즉 정규 표현식과 대체 값을 취합니다.
결과는 정규 표현식의 각 분리된 일치(왼쪽에서 오른쪽으로)를 대체 문자열로 바꾸면 입력 문자열에서 만들어집니다.
입력 문자열이 no-value인 경우 또는 일치하는 항목이 없을 경우 반환되는 값은 입력 문자열입니다.
집계
집계 함수는 입력 값 집합을 최종 출력 값으로 결합합니다. 여러 입력 행이 그룹화되고 단일 출력 행으로 집계되면 사용됩니다.
집계 함수는 내부 집계 상태를 유지합니다. 집계 함수의 인수 표현식은 그룹화된 각 입력 행에 한 번씩 평가되며 결과 값(있는 경우)은 집계 함수로 전달되어 내부 상태로 누적됩니다. 그룹의 모든 행에 이 작업을 수행하면 집계 함수가 단일 출력 행의 값 열을 만드는 데 사용할 출력 값을 생성합니다.
예를 들어 memory_usage
열이 있는 행 집합에 적용되는 mean(memory_usage)
은 각 행의 인수 표현식 memory_usage
를 평가하고, 결과 값(생성된 경우)을 mean
집계 함수의 값의 내부 상태(값의 합과 값의 개수일 수 있음)에 통합합니다.
모든 행이 처리되면 mean
감소기는 내부 상태(합계를 개수로 나눈 값)에서 값을 생성합니다.
숫자 또는 Distribution 값을 대상으로 하는 대부분의 집계 함수는 입력의 측정 단위를 출력에 제공합니다. 예외는 다음과 같습니다.
출력에 단위
1
이 있는count
및row_count
출력이 입력의 제곱수인
variance
출력이 두 입력의 단위 곱인
covariance
fraction_less_than
및fraction_true
는 출력에10^2.%
단위를 제공합니다.
sum
숫자 값 그룹의 합계
Signature:
sum(
Num )
→ Num.Delta
(시간 집계만 해당)
sum(
Distribution )
→ Double.Delta
(시간 집계만 해당)
sum(
Num )
→ Num.Gauge
(슬라이딩 시간 집계만 해당)
sum(
Distribution )
→ Double.Gauge
(슬라이딩 시간 집계만 해당)
sum(
Num )
→ Num.FirstArgKind
sum(
Distribution )
→ Double.FirstArgKind
인수 표현식이 숫자(Int 또는 *Double)이면 전달된 값의 합계를 반환합니다.
인수 표현식이 Distribution 값이면 전달된 모든 Distribution 값의 모집단 값 합계를 반환합니다.
일부 입력 행의 경우 인수 표현식이 값으로 평가되지 않거나 무한한 Double 값으로 평가되는 경우 해당 입력 행은 합계에 영향을 주지 않습니다.
숫자(Int 또는 Double) 입력의 경우 결과는 입력 표현식과 동일한 유형( Int* 또는 Double)입니다. Distribution 입력 값의 경우 결과 유형은 Double입니다.
슬라이딩이 아닌 시간 집계를 수행하고 있거나 공간 집계만 수행하고 있고 입력 시계열 종류도 델타인 경우 출력에 델타 시계열 종류가 있습니다.
sum
의 결과에 연결된 측정 단위는 입력의 단위와 동일합니다.
distribution
숫자 값 또는 분포 값 그룹의 분포
서명:
distribution(
Num,
lit-BucketSpecification )
→ Distribution.Delta
(시간 집계만 해당)
distribution(
Num,
lit-BucketSpecification )
→ Distribution.Gauge
distribution(
Distribution )
→
Distribution.Delta (시간 집계만 해당)
distribution(
Distribution )
→
Distribution.Gauge (슬라이딩 시간 집계만 해당)
distribution(
Distribution )
→
Distribution.FirstArgKind
첫 번째 인수가 Num 값이면 입력 값은 lit-Bucketer 인수로 버킷 사양을 지정하는 분포 결과에 수집됩니다.
첫 번째 인수가 Distribution 값이면 분포가 모든 입력 분포의 모집단이 포함된 분포 결과로 병합됩니다. 결과 분포 버킷 사양은 입력 분포 버킷 사양에서 결정됩니다. 버킷 사양이 모두 동일하면 버킷 사양이 사용됩니다. 버킷 사양이 다르면 새로 병합된 버킷 사양이 사용됩니다. 이 병합된 사양은 일반적으로 최소 정밀도 버킷 사양보다 정확하지 않습니다.
일부 입력 행의 경우 첫 번째 인수 표현식이 값으로 평가되지 않거나 무한한 Double로 평가되는 경우 해당 입력 행은 백분위수에 영향을 주지 않습니다.
distribution
의 결과에 연결된 측정 단위는 입력의 단위와 동일합니다.
count
값 그룹의 값 개수
서명:
count(
ColumnValue )
→ Int.Delta
(시간 집계만 해당)
count(
ColumnValue )
→ Int.Gauge
전달된 값 수를 반환합니다. 인수 표현식이 일부 입력 행의 값으로 평가되지 않거나 제한되지 않은 Double 값으로 평가되면 계산되지 않습니다.
슬라이딩이 아닌 시간 집계를 수행하고 있으면 출력에 델타 시계열 종류가 표시됩니다.
count
의 결과에 연결된 측정 단위는 1
입니다.
row_count
발생한 입력 행 수
서명:
ImplicitRowSetInput row_count(
)
→
Int.Delta (시간 집계만 해당)
ImplicitRowSetInput row_count(
)
→
Int.Gauge
row_count
집계 함수는 집계 중인 행의 수를 반환합니다. count
와 달리 row_count
는 인수를 사용하지 않으며, 행에서 값을 계산할 수 있는지 여부를 고려하지 않습니다.
슬라이딩이 아닌 시간 집계를 수행하고 있으면 출력에 델타 시계열 종류가 표시됩니다.
count
의 결과에 연결된 측정 단위는 1
입니다.
count_true
부울 값 그룹의 true 값 수
서명:
count_true(
Bool )
→ Int.Delta
(시간 집계만 해당)
count_true(
Bool )
→ Int
입력 부울 값이 수집되고 결과는 true인 입력 값의 수입니다.
일부 입력 행의 경우 인수 표현식이 값으로 평가되지 않으면 해당 입력 행이 결과에 영향을 미치지 않습니다.
슬라이딩이 아닌 시간 집계를 수행하고 있으면 출력에 델타 시계열 종류가 표시됩니다.
count_true
의 결과에 연결된 측정 단위는 1
입니다.
min
숫자 값 그룹의 최솟값
서명:
min(
Num )
→ Num
그러면 전달된 숫자 값이 수집되고 최솟값이 반환됩니다. 결과 유형이 입력 유형과 동일한 경우입니다.
일부 입력 행의 경우 인수 표현식이 값으로 평가되지 않으면 해당 입력 행이 결과에 영향을 미치지 않습니다.
min
의 결과에 연결된 측정 단위는 입력의 단위와 동일합니다.
max
숫자 값 그룹의 최댓값
서명:
max(
Num )
→ Num
그러면 전달된 숫자 값이 수집되고 최댓값이 반환됩니다. 결과 유형이 입력 유형과 동일한 경우입니다.
일부 입력 행의 경우 인수 표현식이 값으로 평가되지 않으면 해당 입력 행이 결과에 영향을 미치지 않습니다.
max
의 결과에 연결된 측정 단위는 입력의 단위와 동일합니다.
diameter
숫자 값 그룹의 최댓값에서 최솟값을 뺀 값
서명:
diameter(
Num )
→ Num
그러면 전달된 숫자 값이 수집되고 값의 최댓값과 최솟값의 차이가 반환됩니다. 결과 유형이 입력 유형(Int 또는 Double)과 동일한 경우입니다.
일부 입력 행의 경우 인수 표현식이 값으로 평가되지 않으면 해당 입력 행이 결과에 영향을 미치지 않습니다.
diameter
의 결과에 연결된 측정 단위는 입력의 단위와 동일합니다.
mean
숫자 값 그룹의 평균
서명:
mean(
Summable )
→ Double
인수 표현식이 숫자(Int 또는 *Double)이면 전달된 값의 평균을 반환합니다.
인수 표현식이 Distribution 유형이면 모든 분포에 있는 모든 값의 평균을 반환합니다.
일부 입력 행의 경우 인수 표현식이 값으로 평가되지 않거나 무한한 Double 값으로 평가되는 경우 해당 입력 행은 평균에 영향을 주지 않습니다.
mean
의 결과에 연결된 측정 단위는 입력의 단위와 동일합니다.
stddev
값 그룹의 표준 편차
서명:
stddev(
Summable )
→ Double
인수 표현식이 숫자(Int 또는 *Double)이면 전달된 값의 표준 편차를 반환합니다.
인수 표현식이 Distribution 값이면 모든 분포에 있는 모든 값의 표준 편차를 반환합니다.
일부 입력 행의 경우 인수 표현식이 값으로 평가되지 않거나 무한한 Double 값으로 평가되는 경우 해당 입력 행은 표준 편차에 영향을 주지 않습니다.
stddev
의 결과에 연결된 측정 단위는 입력의 단위와 동일합니다.
variance
숫자 값 그룹의 분산
서명:
variance(
Summable )
→ Double
인수 표현식이 숫자(Int 또는 *Double)이면 전달된 값의 표준 편차를 반환합니다.
인수 표현식이 Distribution 유형이면 모든 분포에 있는 모든 값의 분산을 반환합니다.
일부 입력 행의 경우 인수 표현식이 값으로 평가되지 않거나 무한한 Double 값으로 평가되는 경우 해당 입력 행은 분산에 영향을 주지 않습니다.
variance
함수의 결과에 연결된 측정 단위는 없습니다.
covariance
값 쌍의 공분산
서명:
covariance(
Num,
Num )
→ Double
그러면 전달된 숫자(Int 또는 *Double) 값 쌍의 공분산이 반환됩니다.
일부 입력 행의 경우 인수 표현식이 값으로 평가되지 않거나 무한한 Double 값으로 평가되는 경우 해당 입력 행은 공분산에 영향을 주지 않습니다.
covariance
함수의 결과에 연결된 측정 단위는 없습니다.
median
숫자 값 또는 분포 값 그룹의 중앙값
서명:
median(
Summable )
→ Double
인수 표현식이 숫자(Int 또는 *Double)이면 전달된 값의 모집단에 대한 중앙값 추정치를 반환합니다. 중앙값은 10% 차이의 버킷 경계가 있는 모집단의 값에서 분포 값을 만들어 계산하며, 해당 값으로 추정치의 오류를 제한합니다.
중앙값을 추정하기 위해 숫자 입력에서 분산 값을 적용하는 데 사용되는 버킷 사양은 powers_of(1.05).num_buckets(500).lower(.01)
입니다. 여기에는 .01
부터 약 4e+8
까지의 값 범위가 포함됩니다. 이 방법은 많은 사용 사례를 처리하지만 scale
함수를 사용하여 입력을 조정해야 할 수 있습니다. 예를 들면, 숫자 범위가 기가바이트나 테라바이트인 경우에는 By
에서 MiBy
, 또는 'MBy'로 조정해야 합니다.
인수 표현식이 Distribution 값이면 모든 분포에서 병합된 값의 모집단의 예측 중앙값을 반환합니다. 중앙값은 모든 입력 분산을 분포 하나에 병합하고 중앙값을 추정하여 계산됩니다. 중앙값의 정확성은 입력 분포의 버킷 경계에 따라 다릅니다.
일부 입력 행의 경우 인수 표현식이 값으로 평가되지 않거나 무한한 Double 값으로 평가되는 경우 해당 입력 행은 표준 편차에 영향을 주지 않습니다.
median
의 결과에 연결된 측정 단위는 입력의 단위와 동일합니다.
percentile
숫자 값 또는 분포 값 그룹의 백분위수
서명:
percentile(
Summable,
lit-Num )
→
Double
lit-Num 인수는 백분위수(0~100 범위)를 제공합니다.
첫 번째 인수 표현식이 숫자(Int 또는 Double)이면 전달된 값의 모집단에 대한 백분위수 추정치를 반환합니다. 백분위수는 10% 차이의 버킷 경계가 있는 모집단의 값에서 분포 값을 만들어 계산하며, 해당 값으로 추정치의 오류를 제한합니다.
백분위수를 추정하기 위해 숫자 입력에서 분산 값을 적용하는 데 사용되는 버킷 사양은 powers_of(1.05).num_buckets(500).lower(.01)
입니다. 여기에는 .01
부터 약 4e+8
까지의 값 범위가 포함됩니다. 이 방법은 많은 사용 사례를 처리하지만 scale
함수를 사용하여 입력을 조정해야 할 수 있습니다. 예를 들면, 숫자 범위가 기가바이트나 테라바이트인 경우에는 By
에서 MiBy
, 또는 'MBy'로 조정해야 합니다.
인수 표현식이 Distribution 값이면 모든 분포에서 병합된 값의 모집단의 예측 백분위수를 반환합니다. 백분위수는 모든 입력 분산을 분포 하나에 병합하고 백분위수를 추정하여 계산됩니다. 백분위수의 정확성은 입력 분포의 버킷 경계에 따라 다릅니다.
일부 입력 행의 경우 첫 번째 인수 표현식이 값으로 평가되지 않거나 무한한 Double로 평가되는 경우 해당 입력 행은 백분위수에 영향을 주지 않습니다.
percentile
의 결과에 연결된 측정 단위는 입력의 단위와 동일합니다.
fraction_less_than
고정 값보다 작은 값 그룹의 비율
서명:
fraction_less_than(
Summable,
lit-Num )
→ Double
첫 번째 인수가 숫자(Int 또는 *Double) 값이면 lit-Num 인수보다 작은 첫 번째 인수에 전달된 값 모음의 비율을 반환합니다. 이 비율을 계산할 때는 무한 Double 값과 아닌 Int 및 Double 값을 무시합니다.
첫 번째 인수가 Distribution 값인 경우 전달된 모든 분포의 모집단을 결합하고, lit-Num 인수의 값보다 작은 집계 분포의 모집단에서 값의 비율을 추정합니다.
fraction_less_than
의 결과에 연결된 측정 단위는 10^2.%
입니다.
fraction_true
true인 부울 값 그룹의 비율
서명:
fraction_true(
Bool )
→ Double
입력 부울 값이 수집되고 결과는 true인 입력 값의 일부인 0~1 범위의 Double입니다.
일부 입력 행의 경우 인수 표현식이 값으로 평가되지 않으면 해당 입력 행이 결과에 영향을 미치지 않습니다.
fraction_true
의 결과에 연결된 측정 단위는 10^2.%
입니다.
any_true
부울 값 그룹의 분리
서명:
any_true(
Bool )
→ Bool
any_true
함수는 모든 입력 값이 true
이면 true
값을 계산하고, 그렇지 않으면 false
를 반환합니다.
일부 입력 행의 경우 인수 표현식이 값으로 평가되지 않으면 해당 입력 행이 결과에 영향을 미치지 않습니다.
all_true
부울 값 그룹의 결합
서명:
all_true(
Bool )
→ Bool
all_true
함수는 모든 입력 값이 true
이면 true
값을 계산하고 그렇지 않은 경우 false
를 반환합니다.
일부 입력 행의 경우 인수 표현식이 값으로 평가되지 않으면 해당 입력 행이 결과에 영향을 미치지 않습니다.
pick_any
값 그룹의 모든 요소 값(임의로 선택됨)
서명:
pick_any(
ColumnValue )
→ FirstArgType
이 함수는 임의로 지정된 값 중 하나를 반환합니다.
일부 입력 행의 경우 인수 표현식이 값으로 평가되지 않으면 해당 입력 행이 결과에 영향을 미치지 않습니다.
pick_any
의 결과에 연결된 측정 단위는 입력의 단위와 동일합니다(있는 경우).
singleton
요소가 하나뿐인 값 그룹의 요소 값
서명:
singleton(
ColumnValue )
→ FirstArgType
이 함수는 단일 행에서 평가된 인수 표현식 값을 반환합니다. 인수 표현식이 평가되고 이전에 생성된 값으로 평가되더라도 둘 이상의 행에 대한 값을 생성하면 오류입니다.
일부 입력 행의 경우 인수 표현식이 값으로 평가되지 않으면 해당 입력 행이 결과에 영향을 미치지 않습니다.
singleton
의 결과에 연결된 측정 단위는 입력의 단위와 동일합니다.
unique
값(모두 동일해야 함) 그룹의 공통 값
서명:
unique(
Comparable )
→ FirstArgType
unique
함수는 지정된 모든 값과 동일한 값을 반환합니다. 이러한 값이 없으면(서로 다른 값이 최소 두 개 이상 제공) 오류를 생성하고 지정된 값 중 하나를 반환합니다.
일부 입력 행의 경우 인수 표현식이 값으로 평가되지 않으면 해당 입력 행이 결과에 영향을 미치지 않습니다.
unique
의 결과에 연결된 측정 단위는 입력의 단위와 동일합니다.
aggregate
모든 유형의 값 그룹에서 가져온 기본 집계 값
서명:
aggregate(
Num )
→ Num.Delta
(시간 집계만 해당)
aggregate(
Distribution )
→
Distribution.Delta (시간 집계만 해당)
aggregate(
Num )
→ Num.Gauge
(슬라이딩 시간 집계만 해당)
aggregate(
Distribution )
→
Distribution.Gauge (슬라이딩 시간 집계만 해당)
aggregate(
Num )
→ Num.FirstArgKind
aggregate(
Distribution )
→
Distribution.FirstArgKind
aggregate(
Bool )
→ Bool
aggregate(
String )
→ String
aggregate
함수는 입력 유형에 따라 집계를 수행합니다.
Int 및 Double 입력의 경우
sum
애그리게이터와 동일합니다.Distribution 입력의 경우
distribution
애그리게이터와 동일합니다.Bool 입력의 경우
any_true
애그리게이터와 동일합니다.String 입력의 경우
pick_any
애그리게이터와 동일합니다.
weighted_distribution
가중치가 적용된 값 그룹의 분포
서명:
weighted_distribution(
Num,
Int,
lit-BucketSpecification )
→
Distribution.Delta (시간 집계만 해당)
weighted_distribution(
Num,
Int,
lit-BucketSpecification )
→
Distribution.Gauge
입력 값은 lit-Bucketer 인수로 버킷 사양을 지정하는 분포 결과에 수집됩니다. 첫 번째 인수는 분포에 추가하는 값이고 두 번째 인수는 해당 값의 가중치입니다. 가중치가 M
인 N
값은 분포에서 N
값의 M
개 인스턴스로 표시됩니다.
일부 입력 행의 경우 첫 번째 인수 표현식이 값으로 평가되지 않거나 무한한 Double로 평가되는 경우 해당 입력 행은 백분위수에 영향을 주지 않습니다.
weighted_distribution
의 결과에 연결된 측정 단위는 입력의 단위와 동일합니다.
정렬
정렬 함수는 align
테이블 연산에서 시계열의 지점에 타임스탬프가 일정한 간격으로 있는 정렬된 테이블을 생성하는 데 사용됩니다.
정렬기 함수는 명시적 Duration 인수 외에도 입력 시계열과 특정 시점을 취해 특정 시간의 출력 지점을 생성합니다.
interpolate
정렬 함수는 타임스탬프가 출력 타임스탬프를 가로지르는 두 개의 인접 입력 지점에서 값을 보간하여 지정된 시간에 값을 생성합니다.
next_older
및 next_younger
정렬 함수는 타임스탬프가 출력 타임스탬프보다 그 다음 이르거나 그 다음 늦은 입력 시계열의 단일 지점에서 값을 생성합니다.
delta
, rate
, delta_gauge
정렬기 함수는 출력 지점 종료 시간과 그보다 이른 Duration 인수 사이의 기간에 걸쳐 입력 시계열의 시간 경과에 따른 값 변화에 따라 출력을 계산합니다. 값 변경은 다음과 같이 계산됩니다.
따라서 입력 시계열의 값은 언제든지 출력 시간 전과 후의 가장 가까운 지점 사이의 선형 보간으로 계산할 수 있습니다. 지정된 기간의 값 변화는 이 기간의 더 이른 에지와 더 늦은 에지에 있는 보간된 값의 차이입니다.
이 기간의 변화량은 범위가 전적으로 기간 내에 있는 모든 지점의 값을 합한 값이며 범위가 기간과 부분적으로 겹치는 지점의 값 중 할당분입니다.
누적 시계열의 경우 시작 시간이 동일한 두 개의 인접 지점 사이의 값 보간은 두 값 사이의 선형 보간을 통해 이루어집니다. 시작 시간이 서로 다른 두 개의 인접 지점 사이에 있는 보간은(나중 지점의 시작 시간이 두 지점의 종료 시간 사이) 다음 방식으로 처리됩니다.
출력 시간이 더 이른 지점의 종료 시간과 나중 지점의 시작 시간 사이에 있으면 결과는 이전 지점의 값입니다. (더 이른 지점과 재설정 시점 사이에는 변화가 없습니다.)
출력 시간이 나중 지점 시작 및 종료 시간 사이에 있으면 값은 0(시작 시간)과 지점의 값 사이의 선형 보간입니다.
누적 시계열의 경우 특정 기간의 값 변화는 기간의 더 이른 에지와 나중 에지에 있는 보간 값의 차이와 재설정을 위한 수정을 더한 것입니다. 기간 내에 포함되는 각 재설정 시간에서, 해당 시간에 시계열 값이 0으로 재설정되는지 확인하기 위해 재설정 시간 전 지점의 값이 변경 값에 추가됩니다.
집계 정렬기 함수인
mean_aligner
,int_mean_aligner
는 정렬 함수를 너비가 Duration 인수에서 지정되고 이후 에지가 출력 지점의 타임스탬프인 기간에 포함되는 입력 지점에 적용합니다. 이 집계 결과는 출력 지점의 값입니다.정렬 함수 출력의 측정 단위는 일반적으로 입력의 단위와 동일합니다. 예외는 다음과 같습니다.
rate
의 출력은 입력의 단위를 단위 's'로 나눈 단위를 가집니다.count_true_aligner
의 출력은1
단위를 가집니다.fraction_true_aligner
의 출력은10^2.%
단위를 가집니다.
rate
정렬된 시점에서 변화율을 계산합니다.
서명:
ImplicitRowInput rate(
[ lit-Duration ] )
→ Double.Gauge (암시적 행 입력)
rate
정렬기는 숫자(Int 또는 *Double) 유형의 단일 값 열이 있는 입력 시계열에서 작동합니다. 항상 Double 유형과 게이지 시계열 종류의 단일 값 열이 있는 출력 테이블을 생성합니다.
rate
정렬기는 여기에 설명된 대로 범위에서 시계열의 값 변화를 계산하고 이를 범위의 폭(초)으로 나눕니다. 이 기간은 출력 지점 시간부터 더 이른 Duration 매개변수 시간까지 연장합니다.
Duration 인수의 기본값은 정렬 기간입니다. '델타' 정렬기 함수와 달리 정렬 기간 및 범위 폭이 일치하지 않아도 됩니다.
delta
정렬된 시점의 값 변화를 계산합니다.
서명:
ImplicitRowInput delta(
[ lit-Duration ] )
→ InputType.Delta
(암시적 행 입력)
delta
정렬기는 Summable 유형(Int, Double 또는 Distribution)의 단일 값 열이 있는 입력 시계열에서 작동하며, 출력은 값 열이 동일한 유형이지만 델타 시계열 종류를 가진 시계열입니다.
'delta_gauge' 정렬기는 출력 시간과 더 이른 Duration 인수 간의 시간 간격에 대한 입력 시계열 값의 변경을 계산합니다. 출력 지점의 시작 시간은 출력 시간(지점의 종료 시간)보다 이른 Duration 인수입니다.
delta
정렬기는 Duration 인수가 정렬에 사용되는 정렬 기간과 동일해야 한다는 요구사항이 있습니다. Duration 인수의 기본값은 정렬 기간입니다.
any_true_aligner
창에서 true 값을 찾아 Bool 시계열을 정렬합니다.
서명:
ImplicitRowInput
any_true_aligner(
[ lit-Duration ] )
→
Bool.Gauge (암시적 행 입력)
any_true_aligner
함수는 Bool 유형의 단일 값 열로 입력 테이블에 작동하고 Bool유형과 게이지 시계열 종류의 단일 값 열로 출력 테이블을 생성합니다.
Duration 인수는 해당 출력 지점의 시간에 종료되는 각 출력 지점의 기간을 제공합니다. Duration 인수를 지정하지 않으면 정렬 기간이 기본적으로 설정됩니다. 출력 지점의 값은 기간의 입력 지점이 true이면 true
이고 그렇지 않으면 false
입니다.
count_true_aligner
창에서 true 값을 세어 Bool 시계열을 정렬합니다.
서명:
ImplicitRowInput
count_true_aligner(
[ lit-Duration ] )
→
Int.Gauge (암시적 행 입력)
count_true_aligner
함수는 Bool 유형의 단일 값 열로 입력 테이블에 작동하고 Int유형과 게이지 시계열 종류의 단일 값 열로 출력 테이블을 생성합니다.
Duration 인수는 해당 출력 지점의 시간에 종료되는 각 출력 지점의 기간을 제공합니다. Duration 인수를 지정하지 않으면 정렬 기간이 기본적으로 설정됩니다. 출력 지점의 값은 값이 true
인 기간의 입력 지점 수입니다.
delta_gauge
정렬된 시점의 값 변화를 게이지 시계열로 계산합니다.
서명:
ImplicitRowInput delta_gauge(
[ lit-Duration ] )
→ InputType.Gauge
(암시적 행 입력)
delta_gauge
정렬기는 Summable 유형(Int, Double 또는 Distribution)의 단일 값 열이 있는 입력 시계열에서 작동하며, 출력은 값 열이 동일한 유형이지만 게이지 시계열 종류를 가진 시계열입니다.
delta_gauge
정렬 는 여기에 설명된 대로 기간 동안 입력 시계열의 값 변화를 계산합니다. 이 기간은 출력 지점 시간부터 더 이른 Duration 매개변수 시간까지 연장합니다.
Duration 인수의 기본값은 정렬 기간입니다. '델타' 정렬기 함수와 달리 정렬 기간 및 범위 폭이 일치하지 않아도 됩니다.
fraction_true_aligner
Bool 시계열을 창에서 true 값 비율로 정렬합니다.
서명:
ImplicitRowInput fraction_true_aligner(
[ lit-Duration ] )
→ Double.Gauge (암시적 행 입력)
fraction_true_aligner
함수는 Bool 유형의 단일 값 열로 입력 테이블에 작동하고 Double유형과 게이지 시계열 종류의 단일 값 열로 출력 테이블을 생성합니다.
Duration 인수는 해당 출력 지점의 시간에 종료되는 각 출력 지점의 기간을 제공합니다. Duration 인수를 지정하지 않으면 정렬 기간이 기본적으로 설정됩니다. 출력 포인트의 값은 값이 true
인 창의 모든 입력 포인트의 비율입니다.
int_mean_aligner
창에서 Int 값의 평균을 찾아 정렬합니다.
서명:
ImplicitRowInput
int_mean_aligner(
[ lit-Duration ] )
→
Int.Gauge (암시적 행 입력)
int_mean_aligner
함수는 Int 유형의 단일 값 열과 게이지 또는 Delta 시계열 종류가 있는 입력 테이블에서 작동합니다. Int 유형과 게이지 시계열 종류의 단일 값 열이 있는 출력 테이블을 생성합니다.
Duration 인수는 해당 출력 지점의 시간에 종료되는 각 출력 지점의 기간을 제공합니다. Duration 인수를 지정하지 않으면 정렬 기간이 기본적으로 설정됩니다. 출력 지점 값은 위 기간에 속하는 입력 테이블 값 지점의 평균으로, 가장 가까운 정수 값으로 반올림됩니다.
interpolate
정렬된 시점에 보간된 값을 계산합니다.
서명:
ImplicitRowInput interpolate(
[ lit-Duration ] )
→ InputType.Gauge
(암시적 행 입력)
interpolate
정렬기는 숫자(Int 또는 *Double) 유형의 단일 값 열과 게이지 시계열 종류가 있는 입력 테이블에서 작동합니다.
동일한 유형 및 시계열 종류의 단일 값 열이 있는 출력 테이블을 생성합니다.
interpolate
정렬기 함수의 출력 시간이 입력 시계열에 있는 지점의 종료 시간과 동일한 경우 출력 지점에 사용됩니다. 그렇지 않은 경우 interpolate
정렬기는 종료 시간이 가장 가까운 이른 지점의 출력 시간과 출력 시간을 가리키는 입력 지점을 고려합니다. 이러한 지점이 Duration 인수 내에 있는 경우 출력 값은 출력 시간의 지점 사이 선형 보간입니다. 출력 시간보다 이른 입력 지점이 없거나 출력 시간보다 늦은 입력 지점이 없거나 두 입력 지점이 상호 Duration 인수 내에 없는 경우 출력 값이 생성되지 않습니다.
Duration 인수의 기본값은 정렬 기간의 두 배입니다.
mean_aligner
창에서 값의 평균을 찾아 정렬합니다.
서명:
ImplicitRowInput mean_aligner(
[ lit-Duration ] )
→ Double.Gauge (암시적 행 입력)
mean_aligner
함수는 숫자 유형의 단일 값 열이 있는 입력 테이블에서 작동합니다. (Int 또는 Double) 및 게이지 또는 델타 시계열 종류. Double 유형 및 게이지 시계열 종류의 단일 값 열이 있는 출력 테이블이 생성됩니다.
Duration 인수는 해당 출력 지점의 시간에 종료되는 각 출력 지점의 기간을 제공합니다. Duration 인수를 지정하지 않으면 정렬 기간이 기본적으로 설정됩니다. 출력 지점 값은 위의 기간에 속하는 입력 테이블 값 지점의 평균 값입니다.
next_older
더 이른 시간에서 늦은 시간으로 이동하면서 정렬된 시점입니다.
서명:
ImplicitRowInput next_older(
[ lit-Duration ] )
→ InputType.Gauge
(암시적 행 입력)
next_older
정렬기는 모든 유형의 값 열이 있지만 모두 게이지 시계열 종류가 있는 시계열에서 작동합니다. 동일한 유형 및 시계열 종류의 출력 열을 생성합니다.
next_older
정렬기는 종료 시간이 출력 시간보다 늦지 않고 종료 시간이 출력 시간에서 Duration 인수보다 멀지 않은 가장 최근 입력 지점을 찾아서 출력 지점을 만듭니다. 이러한 입력 지점이 없으면 출력 지점이 생성되지 않습니다.
Duration 인수의 기본값은 정렬 기간의 두 배입니다.
next_younger
더 늦은 시간에서 이른 시간으로 이동하면서 정렬된 시점입니다.
서명:
ImplicitRowInput next_younger(
[ lit-Duration ] )
→ InputType.Gauge
(암시적 행 입력)
next_younger
정렬기는 모든 유형의 값 열이 있지만 모두 게이지 시계열 종류가 있는 시계열에서 작동합니다. 동일한 유형 및 시계열 종류의 출력 열을 생성합니다.
next_younger
정렬기는 종료 시간이 출력 시간보다 이르지 않고 종료 시간이 출력 시간에서 Duration 인수보다 멀지 않은 가장 이른 입력 지점을 찾아서 출력 지점을 만듭니다. 이러한 입력 지점이 없으면 출력 지점이 생성되지 않습니다.
Duration 인수의 기본값은 정렬 기간의 두 배입니다.
단위 조작
이러한 함수는 적용되는 표현식의 단위를 변경합니다.
scale
다른 측정 단위로 값을 조정합니다.
서명:
scale(
Num,
[ lit-String ] )
→
Double
scale(
Duration,
[ lit-String ] )
→
Double
scale(
Date,
[ lit-String ] )
→
Double
scale
함수는 첫 번째 인수의 값을 반환하고 필요한 경우 double로 변환한 다음 두 번째 인수에 의해 지정된 단위를 포함하도록 조정될 수 있습니다.
두 번째 인수를 지정하지 않을 경우 여기에 설명된 대로 자동 조정이 호출되지 않는 경우를 제외하고는 단위를 변경하지 않고 scale
함수는 첫 번째 인수를 double로 변환하기만 합니다. 이 경우 두 번째 인수가 암시적으로 제공되며 scale
은 일반적으로 두 개의 인수를 사용하는 것처럼 동작합니다.
두 번째 인수가 지정된 경우 첫 번째 인수가 조정될 단위에 대해 유효한 UCUM 코드 문자열이어야 합니다. 이 경우 반환되는 값은 입력 값과 동일한 실제 수량을 나타내지만 두 번째 인수로 제공되는 단위로 표현됩니다. 이는 인수를 적절한 배율 요소로 곱하면 됩니다.
예를 들어 scale(3 "min", "s")
표현식은 분 단위(min
) 값 3
을 초 단위(s
) 값 180
으로 변환합니다. 서로 다른 단위로 표현되는 동일한 시간입니다.
첫 번째 인수에 단위가 없거나 첫 번째 인수의 단위에 두 번째 인수로 지정되는 단위 코드와 동일한 측정기준이 없으면 오류가 발생합니다. 측정기준이 동일하지 않으면 첫 번째 인수를 두 번째 인수로 지정된 측정기준을 가지도록 조정할 수 없습니다.
예를 들어, 3킬로미터를 m/s 단위로 조정하려고 하면 킬로미터의 측정항목은 '거리'이고 m/s의 측정항목은 '시간별 거리'이므로 scale(3 "km", "m/s")
라고 하는 오류가 발생합니다. 거리를 속도를 변환할 수 있는 배율이 없습니다. 이를 위해서는 거리를 시간 단위로 나누어야 합니다. 예를 들어 scale(3 "km" / 10
"min", "m/s")
는 .3 "km/min"
을 5 "m/s"
로 확장합니다.
첫 번째 인수가 Date 또는 Duration 인수인 경우 두 번째 인수는 시간 단위(예: "s"
, "h"
, "wk"
)를 제공해야 합니다. 반환 값은 두 번째 인수로 지정된 단위의 첫 번째 인수 값의 시간을 지정하는 Double 값입니다. Date 값의 경우 Unix epoch를 기준으로 하는 시간입니다.
예를 들어 scale(1m, "s")
은 단위가 s
인 60.0
값이며 scale(d'1970/01/01-01:00:00+00', "h")
는 단위가 'h'인 1.0
값입니다(Unix epoch의 1시간).
cast_units
값 측정 단위를 설정합니다.
서명:
cast_units(
Summable,
lit-String )
→
FirstArgType
cast_units
함수는 첫 번째 인수의 변경되지 않은 값을 반환하지만 두 번째 인수 문자열로 지정된 값에 대한 측정 단위를 설정합니다.
문자열은 원하는 단위의 값 UCUM 코드 문자열이어야 합니다. 이 함수를 적용하기 전에 첫 번째 인수의 모든 단위가 무시됩니다.
기간 범위
기간 범위 함수는 주기적 계산을 위해 입력 지점을 선택하는 데 사용된 범위 폭을 지정하는 WindowsDuration 인수에 Duration 실제 인수를 전달할 때 인수에 주석 처리를 합니다. 이러한 인수는 정렬된 시계열을 출력하는 group_by
테이블 연산으로 전달됩니다. window
및 sliding
함수는 출력 정렬 기간에 따라 입력 범위 폭을 제한합니다.
window
함수는 정렬 기간과 범위 폭이 동일해야 하므로 입력 지점 범위가 겹치지 않음을 나타냅니다.
sliding
함수는 정렬 기간이 범위 폭보다 작을 수 있으므로 입력 창이 겹침을 나타냅니다.
window
정렬 기간과 동일한 기간을 나타냅니다.
서명:
window(
[ lit-Duration ] )
→
lit-WindowDuration
window
함수는 정렬된 시계열을 생성하는 계산에 사용된 범위 폭을 지정하는 WindowDuration 인수에 Duration 실제 인수를 전달할 때 인수에 주석 처리를 합니다. 범위 폭과 출력 정렬 기간은 모두 Duration 인수와 동일해야 합니다.
Duration 인수를 지정하지 않으면 범위 폭을 출력 정렬 기간으로 지정합니다.
예를 들어 테이블 연산 |
group_by
window(5m), .mean
은 출력 종료 시간의 5분 이내에 속하는 입력 지점의 평균 값인 출력 지점을 생성합니다. window
함수는 5m
범위 폭을 주석 처리하여 group_by
의 정렬 기간도 5분으로 설정합니다. 테이블 연산 | group_by window(), .mean
에서도 범위 폭이 출력 정렬 기간과 동일해야 하지만 이 값을 지정해야 하는 것은 아닙니다.
sliding
분리되지 않고 슬라이딩하는(겹치는) 범위를 나타냅니다.
서명:
sliding(
lit-Duration )
→ lit-SlidingDuration
sliding
함수는 정렬된 시계열을 생성하는 계산에 사용된 범위 폭을 지정하는 WindowDuration 인수에 Duration 실제 인수를 전달할 때 인수에 주석 처리를 합니다. 범위 폭이 Duration 인수가 되어야 하며 정렬 기간이 더 길어지면 안 됩니다(하지만 더 짧아지는 것은 허용됨).
예를 들어 테이블 연산 |
group_by
sliding(5m), .mean
은 출력 종료 시간의 5분 이내에 속하는 입력 지점의 평균 값인 출력 지점을 생성합니다. 5m
범위 폭을 주석 처리하는 sliding
함수는 group_by
의 정렬 기간이 5분 이하일 수 있음을 나타냅니다. 1분 정렬을 나타내는 | every 1m
테이블 연산이 있는 경우 각 5분 기간 중 4분은 그 다음 이른 출력 지점의 기간과 겹칩니다.
유통
count_from
분포 값의 값 수
서명:
count_from(
Distribution.CumulativeOK )
→
Int.FirstArgKind
count_from
함수는 입력 분포 값에 있는 값의 모집단 크기를 반환합니다.
count_from
의 결과에 연결된 측정 단위는 1
입니다.
sum_from
분포 값의 값 합계
서명:
sum_from(
Distribution.CumulativeOK )
→
Double.FirstArgKind
sum_from
함수는 입력 분포 값에 포함된 모든 값의 합계를 반환합니다.
sum_from
의 결과는 입력과 동일한 측정 단위를 가집니다.
mean_from
분포 값의 값 평균
서명:
mean_from(
Distribution )
→ Double
mean_from
함수는 입력 분포 값에 포함된 모든 값의 산술 평균을 반환합니다.
mean_from
의 결과는 입력과 동일한 측정 단위를 가집니다.
stddev_from
분포 값의 표준 편차
서명:
stddev_from(
Distribution )
→ Double
stddev_from
함수는 입력 분포 값에 포함된 값의 모집단 분산을 반환합니다.
stddev_from
의 결과는 입력과 동일한 측정 단위를 가집니다.
variance_from
분포 값에 있는 값의 분산
서명:
variance_from(
Distribution )
→ Double
variance_from
함수는 입력 분포 값에 포함된 값의 모집단 분산을 반환합니다.
'variation_from' 함수의 결과에는 측정 단위가 없습니다.
median_from
분포 값에 있는 값의 중앙값
서명:
median_from(
Distribution )
→ Double
median_from
함수는 입력 분포 값에 포함된 값의 모집단에 대한 중앙값 추정치를 반환합니다.
median_from
의 결과는 입력과 동일한 측정 단위를 가집니다.
percentile_from
분포 값의 백분위수
서명:
percentile_from(
Distribution,
lit-Num )
→ Double
percentile_from
함수는 입력 분포 값에 포함된 값의 모집단에 대한 백분위수 추정치를 반환합니다. Num 인수는 0에서 100 사이의 숫자로 추정하는 백분위수를 제공합니다.
percentile_from
의 결과는 입력과 동일한 측정 단위를 가집니다.
fraction_less_than_from
분포에서 고정 값보다 작은 값의 비율
서명:
fraction_less_than_from(
Distribution,
lit-Num )
→ Double
fraction_less_than_from
함수는 입력 분포 값에 포함된 값 중 Num 인수보다 작은 모집단의 비율 추정치를 반환합니다.
fraction_less_than
의 결과에 연결된 측정 단위는 10^2.%
입니다.
bounded_percentile_from
분포 값의 경계 내에 있는 값의 백분위수
서명:
bounded_percentile_from(
Distribution,
lit-Num,
[ lit-Num ],
[ lit-Num ] )
→
Double
bounded_percentile_from
함수는 입력 분포에 포함된 값의 하위 집합에서 작동합니다. 추정치는 두 번째 Num 매개변수(지정되는 경우)보다 크고 세 번째 Num 매개변수(지정되는 경우)보다 작거나 같은 값의 모집단으로 만듭니다. 두 번째 및 세 번째 Num 인수 중 하나 이상을 지정해야 하며, 둘 다 지정하면 두 번째는 세 번째 인수보다 작아야 합니다.
그러면 값의 추정 모집단에 대한 백분위수가 반환됩니다. 첫 번째 Num 인수는 0에서 100 사이의 숫자로 추정하는 백분위수를 제공합니다.
bounded_percentile_from
의 결과는 입력과 동일한 측정 단위를 가집니다.
rebucket
새 버킷 사양으로 변환된 분포 값
서명:
rebucket(
Distribution,
lit-BucketSpecification )
→ Distribution
그러면 입력 분포 값이 두 번째 인수 BucketSpecification에 지정된 버킷 사양의 분포 값으로 변환됩니다.
그러면 버킷에서 계산된 값이 버킷 범위에 균등하게 분산된다는 가정하에 입력 분포의 각 버킷에서 출력 분포 버킷으로 개수가 분산됩니다. 출력 분포는 입력 분포와 동일한 총 개수를 갖지만 개수는 출력 분포 버킷에 다르게 분산됩니다. 출력 분포는 입력 분포와 동일한 합계, 평균, 표준 편차를 갖습니다.
버킷 지정자
분포 값은 버킷으로 구성된 히스토그램을 포함합니다. 각 버킷은 값의 범위와 연결되어 있으며 해당 범위에 속하는 Distribution의 값 수를 포함합니다. 모든 분포에는 Distribution 값에서 버킷의 경계를 설명하는 버킷 사양이 있습니다. 이 섹션의 함수는 버킷 사양을 생성합니다.
powers_of
버킷 경계가 기하급수적으로 증가하는 버킷 사양
서명:
powers_of(
lit-Num )
→
lit-BucketSpecification
powers_of
함수는 각 버킷의 상한값이 고정 계수(Num 인수로 제공됨)에 하한값을 곱한 값에 해당하는 버킷 사양을 반환합니다. 따라서 버킷 크기가 기하급수적으로 증가하고 백분위수 계산 오류는 true 값의 상수 요소로 제한됩니다.
이 함수는 버킷의 수 또는 첫 번째 버킷의 하한값을 설정하지 않습니다. 두 버킷 모두 'num_buckets'와 'lower'로 지정해야 하며 그렇지 않으면 기본값(버킷 30개, 하한값 1.0)을 취합니다.
버킷 사양이 powers_of
에 의해 지정되는 경우 하한값은 0보다 커야 합니다.
다음 예시는 크기가 값 100부터 시작하여 1.1 속도로 크게 증가하는 버킷 50개가 있는 버킷 사양을 제공합니다. 따라서 버킷 경계는 1, 1.1, 1.21, 1.331 등입니다.
powers_of(1.1).num_buckets(30).lower(100.0)
fixed_width
버킷 크기가 동일한 버킷 사양
서명:
fixed_width(
lit-Num )
→
lit-BucketSpecification
fixed_width
함수는 하한값보다 많은 각 버킷의 상한값(Num 인수로 지정함)이 고정된 버킷 사양을 반환합니다. 따라서 버킷 크기가 고정됩니다.
이 함수는 버킷의 수 또는 첫 번째 버킷의 하한값을 설정하지 않습니다. 두 버킷 모두 'num_buckets'와 'lower'로 지정해야 하며 그렇지 않으면 기본값(버킷 30개, 하한값 1.0)을 취합니다.
다음 예시에서는 크기가 1인 버킷 100개의 버킷 사양을 제공하며 1부터 시작합니다. 이는 백분율 값의 분포에 적합한 사양입니다.
fixed_width(1).num_buckets(100)
custom
버킷 경계 목록의 버킷 사양
서명:
custom(
lit-Num... )
→
lit-BucketSpecification
custom
함수는 명시적으로 지정된 버킷 경계가 있는 버킷 사양을 반환합니다. 이 함수는 오름차순으로 지정해야 하는 여러 개의 숫자 인수를 받습니다. 첫 번째 버킷의 하한값은 첫 번째 인수로 지정되고 마지막 버킷의 상한값은 마지막 인수로 지정됩니다. 각 중간 인수는 이전 버킷의 상한값과 다음 버킷의 상한값을 제공합니다.
이렇게 하면 버킷 사양이 완전히 결정되어 버킷 수와 각 버킷의 정확한 경계가 제공됩니다.
다음 예시에서는 3개의 버킷이 있는 버킷 사양을 제시합니다. 첫 번째는 경계가 3, 27이고, 두 번째는 27, 105이고 세 번째는 105, 277입니다.
custom(3,27,105,277)
num_buckets
버킷 사양의 버킷 수를 설정합니다.
서명:
num_buckets(
lit-BucketSpecification,
lit-Num )
→ lit-BucketSpecification
num_buckets
함수는 버킷 수가 결정되지 않은 버킷 사양에 적용하면 Num 인수로 지정된 많은 버킷이 있는 버킷 사양을 반환합니다. 입력 버킷 사양의 다른 모든 부분은 유지됩니다.
버킷 수가 이미 결정된 버킷 사양에 num_buckets
를 적용하면 오류가 발생합니다.
bounds
첫 번째 버킷의 하한값과 마지막 버킷의 상한값을 설정합니다.
서명:
bounds(
lit-BucketSpecification,
lit-Num,
lit-Num )
→ lit-BucketSpecification
bounds
함수는 첫 번째 버킷의 하한값이나 마지막 버킷의 상한값이 없는 버킷 사양에 적용하면 첫 번째 Num 인수로 첫 번째 버킷의 하한값을 지정하고 두 번째 Num 인수로 마지막 버킷의 상한값을 지정한 버킷 사양을 반환합니다. 입력 버킷 사양의 다른 모든 부분은 유지됩니다.
첫 번째 버킷의 하한값 또는 마지막 버킷의 상한값이 이미 결정된 버킷 사양에 bounds
를 적용하면 오류가 발생합니다.
lower
버킷 사양에서 첫 번째 버킷의 하한값을 설정합니다.
서명:
lower(
lit-BucketSpecification,
lit-Num )
→ lit-BucketSpecification
num_buckets
함수는 첫 번째 버킷의 하한값이 결정되지 않은 버킷 사양에 적용하면 Num 인수로 지정된 첫 번째 버킷의 하한값이 있는 버킷 사양을 반환합니다. 입력 버킷 사양의 다른 모든 부분은 유지됩니다.
첫 번째 버킷의 하한값이 이미 결정된 버킷 사양에 lower
를 적용하면 오류가 발생합니다.
기타
cast_double
Int 값을 Double로 변환합니다.
서명:
cast_double(
Num.CumulativeOK )
→
Double.FirstArgKind
cast_double
함수는 단일 Int 인수를 사용하여 가장 가까운 Double 값을 반환합니다.
cast_double
의 결과는 입력과 동일한 측정 단위를 가집니다.
cast_gauge
누적 또는 델타 시계열 값을 게이지로 변환합니다.
서명:
cast_gauge(
ColumnValue.CumulativeOK )
→
FirstArgType.Gauge
cast_gauge
함수는 인수 값을 반환하지만 값의 시계열 종류를 게이지로 변경합니다.
이로 인해 델타 시계열 종류가 있는 값 열 없는 출력 테이블이 되면 출력 테이블에 시작 시간 열이 없습니다.
cast_gauge
의 결과는 입력과 동일한 측정 단위를 가집니다.
within
정렬 값 계산의 범위를 지정합니다.
서명:
within(
ColumnValue,
[ lit-DateOrDuration ],
[ lit-DateOrDuration ] )
→
Windowed.FirstArgKind
within
함수는 top
또는 bottom
테이블 연산의 Windowed(Num) 정렬 값 인수에 결합된 표현식을 데코레이션합니다. 이 함수는 세 개 값(범위의 가장 이른(시작) 시간, 가장 늦은(종료) 시간 또는 기간) 중 하나 또는 두 개를 지정하여 정렬 값 표현식이 평가되는 범위를 지정합니다.
within
의 두 인수 중 하나가 양수의 Duration이면 해당 인수가 이 범위의 폭을 설정합니다. 많아도 인수 중 하나는 이러한 Duration일 수 있습니다.
첫 번째 인수가 Date인 경우 시작 시간을 지정합니다.
두 번째 인수가 Date인 경우 종료 시간을 지정합니다. 둘 다 Date 값이면 두 번째 값은 첫 번째 값보다 늦은 시점이어야 합니다. Date 인수는 Date 리터럴 또는 음수의 Duration 리터럴로 제공될 수 있습니다. 후자의 경우 시간은 외부 쿼리 범위의 종료 시간 이전에 지정된 Duration입니다(within
테이블 연산 참조).
첫 번째 인수를 지정하지 않으면 기본값은 외부 쿼리 범위의 시작 시간으로 설정됩니다. 두 번째 인수를 지정하지 않으면 기본값은 외부 쿼리 범위의 종료 시간으로 설정됩니다.
예를 들어 .mean().within(1h,-2h)
는 종료 시간이 1시간 폭의 범위 이내에 있고 2시간 전에 끝나는 입력 시계열의 모든 지점에 max
감소기를 적용해야 함을 나타냅니다.
mean
애그리게이터는 종료 시간이 이 범위에 있는 모든 입력 지점에 적용됩니다.
예를 들어 max(val()).within(10m)
은 종료 시간이 쿼리 종료 시간과 10분 이른 시간 사이 내에 있는 입력 시계열의 모든 지점에 max
감소기를 적용해야 함을 나타냅니다.
max
애그리게이터는 종료 시간이 이 범위에 있는 모든 입력 지점에 적용됩니다.
테이블 연산 및 함수 색인
모든 테이블 연산 및 함수에 대한 색인입니다.
abs
절댓값absent_for
입력이 없는 조건을 만듭니다.add
두 숫자의 합adjacent_delta
입력 지점과 그 다음 이른 지점 사이의 값 변화adjacent_rate
입력 지점과 그 다음 이른 지점(행) 사이의 변화율aggregate
모든 유형의 값 그룹에서 가져온 기본 집계 값align
정렬 함수를 사용하여 정렬된 테이블을 생성합니다.all_true
부울 값 그룹의 결합and
두 부울 값의 논리적 andany_true
부울 값 그룹의 분리any_true_aligner
창에서 true 값을 찾아 Bool 시계열을 정렬합니다.ascii_to_lower
ASCII 대문자를 소문자로 변경합니다.ascii_to_upper
ASCII 소문자를 대문자로 변경합니다.bottom
정렬 값 표현식으로 하위 시계열을 선택합니다.bottom_by
서로 다른 그룹의 정렬 값 표현식으로 시계열을 선택합니다.bounded_percentile_from
분포 값의 경계 내에 있는 값의 백분위수bounds
첫 번째 버킷의 하한값과 마지막 버킷의 상한값을 설정합니다.cast_double
Int 값을 Double로 변환합니다.cast_gauge
누적 또는 델타 시계열 값을 게이지로 변환합니다.cast_units
값 측정 단위를 설정합니다.concatenate
문자열 연결condition
입력 테이블에 부울 조건 열을 추가합니다.count
값 그룹의 값 개수count_from
분포 값의 값 수count_true
부울 값 그룹의 true 값 수count_true_aligner
창에서 true 값을 세어 Bool 시계열을 정렬합니다.covariance
값 쌍의 공분산custom
버킷 경계 목록의 버킷 사양delta
정렬된 시점의 값 변화를 계산합니다.delta_gauge
정렬된 시점의 값 변화를 게이지 시계열로 계산합니다.diameter
숫자 값 그룹의 최댓값에서 최솟값을 뺀 값distribution
숫자 값 또는 분포 값 그룹의 분포div
두 숫자의 비율end
입력 지점(행)의 종료 시간eq
같음every
정렬된 테이블 출력의 기간을 지정합니다.exp
e의 거듭제곱false
부울 값이 falsefetch
데이터베이스에서 테이블을 생성합니다.fetch_cumulative
데이터베이스에서 누적 시계열의 테이블을 생성합니다.filter
조건자별로 입력 테이블의 행을 필터링합니다.filter_ratio
입력 값 열의 필터링된 두 개 합계의 비율을 계산합니다.filter_ratio_by
입력 값 열의 필터링된 두 개 합계의 그룹화된 비율을 계산합니다.fixed_width
버킷 크기가 동일한 버킷 사양fraction_less_than
고정 값보다 작은 값 그룹의 비율fraction_less_than_from
분포에서 고정 값보다 작은 값의 비율fraction_true
true인 부울 값 그룹의 비율fraction_true_aligner
Bool 시계열을 창에서 true 값 비율로 정렬합니다.ge
크거나 같음graph_period
시계열 그래프를 그릴 때 원하는 출력 기간을 지정합니다.group_by
매핑된 시계열 식별자와 시간 범위로 행을 집계합니다.gt
보다 큼has
설정된 인수에 특정 값이 포함되어 있으면 truehas_value
인수 표현식이 값을 계산하는 경우 truehash_tsid
시계열 식별자 열의 해시를 반환합니다.ident
ID 테이블 연산: 입력 테이블에 변동 없음if
두 값에서 조건부로 선택되는 값int_ceil
상한값 정수int_div
두 정수를 나눈 몫int_floor
하한값 정수int_mean_aligner
창에서 Int 값의 평균을 찾아 정렬합니다.int_round
가장 가까운 정수interpolate
정렬된 시점에 보간된 값을 계산합니다.join
여러 테이블의 자연스러운 조인le
작거나 같음log
자연 로그lower
버킷 사양에서 첫 번째 버킷의 하한값을 설정합니다.lt
보다 작음map
테이블에 있는 각 행의 시계열 식별자와 값 열을 다시 작성합니다.max
숫자 값 그룹의 최댓값mean
숫자 값 그룹의 평균mean_aligner
창에서 값의 평균을 찾아 정렬합니다.mean_from
분포 값의 값 평균median
숫자 값 또는 분포 값 그룹의 중앙값median_from
분포 값에 있는 값의 중앙값metric
테이블 집합에서 특정 측정항목 유형의 테이블을 생성합니다.min
숫자 값 그룹의 최솟값mul
두 숫자의 곱ne
같지 않음neg
숫자의 음수next_older
더 이른 시간에서 늦은 시간으로 이동하면서 정렬된 시점입니다.next_younger
더 늦은 시간에서 이른 시간으로 이동하면서 정렬된 시점입니다.not
부울 값의 논리적 부정num_buckets
버킷 사양의 버킷 수를 설정합니다.older
시계열의 그 다음 이른 지점(행) 값or
두 부울 값의 논리적 oror_else
값, 또는 값이 아니면 다른 값outer_join
두 테이블의 자연스러운 외부 조인percentile
숫자 값 또는 분포 값 그룹의 백분위수percentile_from
분포 값의 백분위수pick_any
값 그룹의 모든 요소 값(임의로 선택됨)pos
숫자 입력의 IDpower
한 숫자를 다른 숫자로 거듭제곱powers_of
버킷 경계가 기하급수적으로 증가하는 버킷 사양rate
정렬된 시점에서 변화율을 계산합니다.ratio
정렬된 두 입력 테이블의 값 열 비율을 계산합니다.re_extract
다른 문자열의 정규 표현식과 일치하는 값을 추출합니다.re_full_match
정규 표현식이 문자열 값 전체와 일치하면 true입니다.re_global_replace
다른 문자열에서 정규 표현식의 모든 일치 항목을 바꿉니다.re_partial_match
정규 표현식이 문자열 값의 일부와 일치하면 true입니다.re_replace
다른 문자열에서 정규 표현식의 첫 번째 일치 항목을 바꿉니다.rebucket
새 버킷 사양으로 변환된 분포 값rem
두 정수를 나눈 나머지row_count
발생한 입력 행 수scale
다른 측정 단위로 값을 조정합니다.singleton
요소가 하나뿐인 값 그룹의 요소 값sliding
분리되지 않고 슬라이딩하는(겹치는) 범위를 나타냅니다.sqrt
제곱근start
입력 지점(행)의 시작 시간stddev
값 그룹의 표준 편차stddev_from
분포 값의 표준 편차string_to_double
String을 Double로 변환합니다.string_to_int64
String을 Int로 변환합니다.sub
두 숫자의 차이sum
숫자 값 그룹의 합계sum_from
분포 값의 값 합계time_shift
시계열을 시간 순서대로 이동합니다.top
정렬 값 표현식으로 상위 시계열을 선택합니다.top_by
서로 다른 그룹의 정렬 값 표현식으로 시계열을 선택합니다.true
부울 값이 trueunaligned_group_by
정렬되지 않은 매핑된 시계열 식별자로 행을 집계합니다.union
여러 테이블의 통합union_group_by
여러 테이블의 행을 집계합니다.unique
값(모두 동일해야 함) 그룹의 공통 값utf8_normalize
대소문자 비교에 적합한 유니코드 문자열val
입력 지점(행)에 있는 값 열의 값value
테이블에 있는 각 행의 값 열을 다시 작성합니다.variance
숫자 값 그룹의 분산variance_from
분포 값에 있는 값의 분산weighted_distribution
가중치가 적용된 값 그룹의 분포window
정렬 기간과 동일한 기간을 나타냅니다.window
정렬 작업의 기간을 지정합니다.within
정렬 값 계산의 범위를 지정합니다.within
쿼리 출력의 시간 범위를 지정합니다.