Monitoring Query Language 참조

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라는 측정항목으로 측정합니다. 측정항목 유형은 측정값의 유형, 측정값의 단위, 시계열의 종류를 지정합니다. 동일한 대상의 서로 다른 측면을 측정하는 시계열을 구분하는 라벨 설명자를 지정할 수 있습니다. 예를 들어 commandappengine.googleapis.com/memcache/operation_count 측정항목에서 계산하는 명령어를 나타냅니다.

모니터링 리소스 유형과 측정항목 유형은 각각 MonitoredResourceDescriptorMetricDescriptor로 설명되며 해당 유형을 나타냅니다. 여기에는 각각 모니터링 리소스 또는 측정항목 유형의 이름이 포함된 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로 변환될 때 특정 단위(예: 초)를 취합니다.

각 유형의 값 집합(DateDuration 제외)에는 특정 값이 없음을 나타내는 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_opbasic_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, negnot에 해당하며, 각각 이항 연산자 앞에 적용됩니다.

따라서 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_listexpr 값에서 제공될 수 있습니다.

  • 호출 체인이 ID로 시작하고 그 앞에 .이 없으면 다음 arg_listexpr에서 호출된 함수에 대한 인수를 제공합니다.

    예를 들어 add(error_count, 1)add 함수를 두 인수인 column_meta_name error_countliteral 1에 적용합니다. 이는 error_count + 1과 같습니다.

  • call_chain'.' call로 시작하면 입력 테이블의 값 열이 호출된 함수의 첫 번째 인수입니다. callarg_list가 있으면 arg_list가 추가 인수를 제공합니다.

    예를 들어 값 열이 numden인 테이블에 적용된 .divdiv(num, den) 또는 num / den과 같습니다. 단일 값 열 count가 있는 테이블에 적용된 .add(3) 표현식은 add(count, 3) 또는 count + 3과 같습니다.

  • 호출 체인의 첫 번째가 아닌 call에서 호출되는 함수는 첫 번째 인수로 사용되며 호출 체인에서 이전에 호출된 함수의 출력이 사용됩니다. callarg_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이 계산하는 출력 열(시계열 식별자 또는 값)은 mapmaplet과 입력 테이블의 해당 열 종류(시계열 식별자 또는 값)에서 제공됩니다. 이 방법은 modifier에 따라 달라집니다.

  • modifier 없음     출력 행의 해당 열은 mapmaplet에서 지정된 열로 정확하게 구성됩니다. 열 이름은 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에는 출력 테이블의 모든 열에서 고유한 열 이름(명시 적이거나 파생된 이름)이 있어야 합니다.

    예를 들어 값 열 numden이 있는 테이블에 add[ratio: num/den]를 값 map로 적용하면 값 열 num, den, ratio이 있는 출력 테이블이 생성되며, 여기서 ratio 열 값은 다른 두 열의 비율입니다.

  • update     열 이름이 mapmaplet 열 이름과 같지 않은 해당 종류(시계열 식별자 또는 값) 입력 행의 모든 열은 출력 행에 포함됩니다. 또한 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로 구성되어야 합니다. 출력 열은 mapletexpr에 이름이 지정된 입력 열을 제외하고 해당 종류의 모든 입력 열로 구성됩니다.

    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인 테이블에 시계열 식별자 mapignore [job, instance]를 적용하면 시계열 식별자 열 userzone이 있는 출력 테이블이 생성됩니다(maplet instance 무시됨).

  • rename     각 maplet에는 명시적인 column_name이 있어야 하며 입력 테이블에 해당 종류의 열만 참조하는 expr이 있어야 합니다. 출력 열은 입력 테이블에서 해당 종류의 모든 열이지만 mapletcolumn_name으로 지정한 새 이름으로 maplet에서 참조되는 경우입니다.

    mapletcolumn_name은 출력 테이블의 열 이름 간에 고유해야 합니다.

    예를 들어 값 열 num, den, ratio이 있는 테이블에 값 열 map으로 rename[numerator : num, denominator : den]을 적용하면 값 열 ratio, numerator, denominator가 있는 출력 테이블이 생성됩니다.

측정 단위

모든 숫자 값(Int, Double, Distribution)에는 해당 값에서 사용되는 측정 단위를 나타내는 단위와 연관된 측정 단위가 있을 수 있습니다. 단위는 측정 단위 통합 코드(UCUM)의 하위 집합을 따르는 문자열로 표현됩니다. 예를 들어 바이트 수를 나타내는 값은 'By' 단위와 바이트의 전송 속도를 나타내는 다른 'By/s' 단위를 가집니다.

단위는 테이블 작업에서 생성된 테이블 열과 표현식의 값에 연결됩니다. 단위는 유형과 동일한 방식으로 열 또는 표현식과 정적으로 연결됩니다. 숫자 유형의 열이나 표현식에는 단위가 연결될 수 있지만 반드시 그럴 필요는 없습니다.

테이블의 열에 연결된 단위는 다음과 같은 소스에서 가져옵니다.

  • 측정항목 설명은 측정항목 값의 단위를 지정할 수 있으며 측정항목을 설명하는 문서(예: 여기)에서 이러한 측정항목을 확인할 수 있습니다. fetchmetric 테이블 작업에서 생성되는 테이블의 값 열에는 측정항목 설명이 지정한 단위가 포함됩니다.

  • 입력 테이블의 열 사본인 출력 테이블 열은 입력 테이블 열과 동일한 단위를 갖습니다. 예를 들어 filter 테이블 작업에서는 입력 테이블의 모든 열에 있는 단위가 변경되지 않고 출력에 전달됩니다.

  • union 테이블 작업은 여러 테이블을 하나로 결합하며 모든 테이블에는 동일한 열이 있어야 합니다. 입력 테이블의 각 값 열에는 연결된 단위가 없거나 다른 모든 입력 테이블의 열에 연결된 단위와 동일한 단위가 있어야 합니다(있는 경우). 입력 테이블의 열에 대해 단위가 제공된 경우, 해당 열은 출력 테이블의 해당 단위를 가집니다. 입력 테이블에 열에 지정된 단위가 없는 경우 해당 열에는 출력 단위가 없습니다.

  • 출력 테이블 열 값을 계산하는 expr이 포함된 테이블 작업의 경우, 출력 열의 단위는 아래에 설명된 대로 해당 expr에 연결됩니다.

expr에 연결된 단위는 expr의 형식에 따라 다릅니다.

  • 자체적인 리터럴 값에는 단위가 없습니다. 하지만 값에 단위를 지정하는 문자열을 통해 (Int 또는 Double) 리터럴에 단위가 지정될 수 있습니다. 따라서 3 "By"는 유형이 Int이고 단위가 바이트(By)인 값 3이 있는 expr입니다.

  • 단위가 있는 경우 열 참조 표현식은 입력 테이블의 명명된 열에서 단위를 가져옵니다.

  • 함수 및 연산자는 입력 값 단위에서 출력 값에 대한 측정 단위를 가져옵니다. 따라서 amount의 단위가 By이고 time의 단위가 s이면 amount / time의 단위는 By/s입니다. 두 개의 숫자 인수를 취하는 함수에는 일반적으로 두 인수 모두 단위가 있거나 모두 단위가 없어야 합니다. 각 함수의 문서에서는 해당 함수를 통한 측정 단위 처리 방법을 설명합니다.

    대부분의 함수에는 단위 동의에 대한 요구사항이 있습니다. 예를 들어 add에서는 두 피연산자에 단위가 있으면 모두 동일한 단위를 사용해야 합니다. 이러한 요구사항은 각 함수의 문서에 설명되어 있습니다.

  • scalecast_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_unitATOM_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의 범위로 제한됩니다.

annotationannotatable(simple_unit 또는 10의 거듭제곱)에 연결할 수 있으며 단위의 의미를 변경하지 않는 주석입니다. 단위에 연결되지 않은 주석은 1 단위에 연결된 것처럼 처리됩니다. 따라서 {queries}/s1/s와 동일하며 1 단위가 {queries}로 데코레이션됩니다.

단위 문자열은 . 또는 /으로 연결된 여러 component 문자열로 구성될 수 있습니다. . 커넥터는 단위의 곱셈을 나타내며 / 커넥터는 나눗셈을 나타냅니다. 곱셈과 나눗셈은 왼쪽에서 오른쪽으로 적용됩니다. MQL에서 지원하는 UCUM 단위의 하위 집합에서 모든 나눗셈 커넥터는 모든 곱셈 커넥터 뒤에 와야 합니다. 이렇게 하면 m/s/s를 원하는 경우 속도 단위를 m/s.s와 같이 작성할 필요가 없습니다. UCUM 단위에서 m/s.sm.s/s 또는 m과 동일합니다.

2개의 단위 문자열은 주석에 관계없이 측정기준배율이 같으면 동일합니다. 측정기준 및 배율은 일반적인 방식으로 결정됩니다.

  • component에는 측정기준이 없거나 시간, 길이, 데이터, 크기, 요금을 조합한 측정기준을 가집니다. 예를 들어 bitBy에는 모두 측정기준 데이터가 있습니다. 단위 문자열의 측정기준은 각 주석을 해당 측정기준으로 변환하고, 지정된 단위 문자열에 따라 곱하고 나누고, 분자 및 분모에 나타나는 측정기준을 취소하여 발견됩니다. 따라서 b.h/s(초당 비트 시간)에는 데이터시간의 곱을 시간으로 나눈 측정기준이 있으며 시간 측정기준은 데이터 측정기준에서 벗어나기 위해 취소합니다.

  • 각 주석은 측정기준의 기본 단위에 관련된 배율을 가집니다. 예를 들어 h(시간)은 기본 단위 s시간 측정기준과 3,600(1시간은 3,600초)의 배율 인수를 가집니다. 단위 문자열의 배율 인수는 곱셈과 나눗셈으로 결합된 각 component의 배율 요소의 조합입니다.

원하는 측정 단위의 문자열의 값으로 숫자 리터럴의 단위를 지정할 수 있습니다. 그래서 3 "m/s"는 값 3m/s의 단위를 가지며 10.8 "km/h"는 값 10.8km/h의 단위와 같은 속도를 나타냅니다.

scale 함수를 사용하여 1개의 단위를 가진 값이 같은 측정기준의 다른 단위를 가지도록 조정할 수 있습니다. 예를 들어 MiByBy는 각각 배율 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_sizeBy 단위가 있고 heap_sizeMiBy 단위가 있다면 scale(cache_size) + heap_size 표현식은 scale(cache_size, "MiBy") + heap_size 표현식과 동일합니다.

  • 비교 함수의 경우 한 인수가 다른 인수와 측정기준이 동일하지만 배율이 다른 단위를 가진 리터럴인 경우 리터럴은 같은 배율을 가지도록 조정됩니다.

    예를 들어 'cache_size'의 단위가 By면 표현식 cache_size < 3 "KiBy"는 표현식 cache_size < 3072 "By"와 동일합니다. cache_sizeInt 유형인 경우 cache_size < scale(3 "KiBy", "By")와 동일하지 않습니다. 이는 scale이 결과물을 비교의 정밀도가 떨어질 수 있는 Double 유형으로 변환하기 때문입니다. 이 경우의 정수 확대에서는 특정 비교를 위해 오버플로의 적절한 반올림 및 처리를 고려합니다.

  • mul의 인수 또는 div의 약수와 같이 단위가 없는 리터럴에는 단위 '1'이 지정됩니다. 이를 통해 단위를 변경할 의도가 없는 조정 작업을 고려합니다(예: 비율이 두 배인 경우 고려). 단위를 변경하려면 scale을 사용하여 변환에 올바른 배율 요소를 자동으로 선택하는 것이 좋습니다.

단위 오류는 쿼리를 평가할 때 경고로 취급되므로 쿼리는 여전히 결과를 생성합니다. 알림을 정의하면 단위 오류가 실제 오류로 처리되며 알림이 정의되지 않습니다.

DurationDate는 숫자 유형이 아니며 단위도 없다는 점에 주의해야 합니다. Duration60s은 숫자가 아닌 시간의 길이이며, 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으로 시작합니다. 출력 테이블의 값 열을 계산하는 집계를 설명하는 maparg가 뒤에 올 수 있습니다.

    예를 들어   | [zone]은   | group_by [zone]의   단축키입니다.

  • 윈도우 단축키는 group_by 테이블 연산의 첫 번째 인수가 되는 DURATION으로 시작합니다. 출력 테이블의 값 열을 계산하는 집계를 설명하는 maparg가 와야 합니다.

    예를 들어   | 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]은 출력 열이 입력 시계열 식별자 열 zonename으로만 구성되고 다른 모든 입력 열은 삭제됩니다.
  • RowToVal   출력 테이블 값 열을 설명하는 지도 지도가 아닌 표현식이 실제 인수로 제공되는 경우 해당 표현식이 있는 단일 요소 맵으로 승격됩니다.
  • RowSetToVal   집계별로 출력 테이블 값 열을 설명하는 지도 지도가 아닌 표현식이 실제 인수로 제공되는 경우 해당 표현식이 있는 단일 요소 맵으로 승격됩니다.
  • DefaultColumns   outer_join 기본값 열을 설명하는 지도 지도가 아닌 표현식이 실제 인수로 제공되는 경우 해당 표현식이 있는 단일 요소 맵으로 승격됩니다.

함수 서명은 함수 이름 다음에 함수의 유효한 인수를 설명하는 괄호로 묶은 인수 목록과 함수에서 반환되는 값을 설명하는 반환 유형으로 시작합니다. 예를 들어 fraction_less_than 함수 서명은 다음과 같습니다.

fraction_less_than(Summable,   lit-Num)   → Double

이 함수는 Summablelit-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    데이터베이스에서 누적 시계열의 테이블을 생성합니다.
  • 선택
    • filter    조건자별로 입력 테이블의 행을 필터링합니다.
    • top    정렬 값 표현식으로 상위 시계열을 선택합니다.
    • bottom    정렬 값 표현식으로 하위 시계열을 선택합니다.
    • top_by    서로 다른 그룹의 정렬 값 표현식으로 시계열을 선택합니다.
    • bottom_by    서로 다른 그룹의 정렬 값 표현식으로 시계열을 선택합니다.
  • 행 수정
    • 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 인수로 계산한 동일한 시계열 식별자가 있는 시계열을 그룹화합니다. 각 그룹 내에서 동일한 IntWindowed 인수가 주어지면 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 인수로 계산한 동일한 시계열 식별자가 있는 시계열을 그룹화합니다. 각 그룹 내에서 동일한 IntWindowed 인수가 주어지면 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을 명시적으로 지정한 경우 기간이 명시적으로 지정되지 않으면 동일한 기간이 적용됩니다.

  • RowToTSIDWindowDuration 인수가 모두 지정된 경우 각 행에 대해 매핑된 새로운 시계열 식별자가 계산되고 매핑된 시계열 식별자가 동일하고 종료 시간이 출력 시간과 더 이른 기간에 해당하는 시간 사이의 범위에 속하는 모든 행에 대해 그룹이 생성됩니다.

그룹에 속한 행의 공통 시계열 식별자와 그룹의 출력 지점 시간인 타임스탬프(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 테이블 연산은 activesignal의 두 값 열이 있는 테이블을 생성합니다. 테이블 입력에서 데이터가 누락되면 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    시계열 식별자 열의 해시를 반환합니다.
  • 논리
    • not    부울 값의 논리적 부정
    • and    두 부울 값의 논리적 and
    • or    두 부울 값의 논리적 or
    • true    부울 값이 true
    • false    부울 값이 false
    • has    설정된 인수에 특정 값이 포함되어 있으면 true
    • has_value    인수 표현식이 값을 계산하는 경우 true
    • if    두 값에서 조건부로 선택되는 값
    • or_else    값, 또는 값이 아니면 다른 값
  • 비교
    • eq    같음
    • ne    같지 않음
    • ge    크거나 같음
    • gt    보다 큼
    • le    작거나 같음
    • lt    보다 작음
  • 산술
    • add    두 숫자의 합
    • sub    두 숫자의 차이
    • mul    두 숫자의 곱
    • div    두 숫자의 비율
    • int_div    두 정수를 나눈 몫
    • abs    절댓값
    • neg    숫자의 음수
    • pos    숫자 입력의 ID
    • rem    두 정수를 나눈 나머지
  • 수학
    • sqrt    제곱근
    • log    자연 로그
    • exp    e의 거듭제곱
    • power    한 숫자를 다른 숫자로 거듭제곱
    • int_round    가장 가까운 정수
    • int_floor    하한값 정수
    • int_ceil    상한값 정수
  • 문자열
  • 정규 표현식
    • 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    값 측정 단위를 설정합니다.
  • 기간 범위
    • window    정렬 기간과 동일한 기간을 나타냅니다.
    • sliding    분리되지 않고 슬라이딩하는(겹치는) 범위를 나타냅니다.
  • 분포
  • 버킷 지정자
    • powers_of    버킷 경계가 기하급수적으로 증가하는 버킷 사양
    • fixed_width    버킷 크기가 동일한 버킷 사양
    • custom    버킷 경계 목록의 버킷 사양
    • num_buckets    버킷 사양의 버킷 수를 설정합니다.
    • bounds    첫 번째 버킷의 하한값과 마지막 버킷의 상한값을 설정합니다.
    • lower    버킷 사양에서 첫 번째 버킷의 하한값을 설정합니다.
  • 기타
    • cast_double    Int 값을 Double로 변환합니다.
    • cast_gauge    누적 또는 델타 시계열 값을 게이지로 변환합니다.
    • within    정렬 값 계산의 범위를 지정합니다.

입력 행 열

쿼리의 표현식은 입력 행의 열에서 작동합니다. 일반적으로 이름을 지정하여 열에 액세스합니다. 이 섹션의 함수는 열에 액세스하는 대체 방법을 제공합니다.

시간 열에는 열 이름이 없으며 startend 함수에서 액세스합니다.

값 열은 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)을 지정하는 함수여야 합니다. 반환되는 값은 동일한 시계열의 입력 행에 대한 다음 이른 행의 열 값입니다. 동일한 시계열에 이러한 이른 행이 없으면 olderno-value를 반환합니다.

참조된 열은 값, 시간 또는 시계열 식별자 열일 수 있습니다. 시계열 식별자 열인 경우 older는 동일한 시계열에 이른 행이 없더라도 인수 표현식과 동일한 값을 반환합니다.

adjacent_delta   입력 지점과 그 다음 이른 지점 사이의 값 변화


서명:   ImplicitRowInput   adjacent_delta( )   →   InputType     (암시적 행 입력)

adjacent_delta 함수는 단일 숫자(Int 또는 Double) 또는 분포 값 열이 있는 테이블에서 작동합니다.

게이지 시계열에 적용되는 경우, adjacent_delta는 현재 입력 행의 값 열과 동일한 시계열의 다음 이른 행의 값 열(있는 경우) 간 값의 차이를 반환합니다. 동일한 시계열에 그 다음 이른 행이 없으면 adjacent_deltano-value를 반환합니다. 결과에 게이지 시계열 종류가 있습니다.

델타 시계열에 적용하는 경우 adjacent_delta델타 시계열 종류로 남아 있는 값 열의 값을 반환합니다. 각 출력 지점은 생성된 입력 지점과 동일한 값, 시작 시간, 종료 시간을 갖습니다.

누적 시계열은 쿼리에 거의 사용되지 않지만 누적 시계열에 적용하는 경우 adjacent_delta는 다음 두 값 중 하나를 반환합니다.

  • 입력 지점의 시작 시간이 그 다음 이른 지점의 종료 시간보다 이른 경우 adjacent_delta는 입력 지점의 값에서 그 다음 이른 지점의 값을 뺀 값을 반환합니다.

  • 입력 지점의 시작 시간이 그 다음 이른 지점의 종료 시간보다 늦은 경우 adjacent_delta는 입력 지점 값(시작 시간에서 0의 값을 뺀 값)을 반환합니다.

결과 시계열에는 델타 시계열 종류가 있으며, 각 시계열은 원래 시작 시간인 시작 시간 또는 그 다음 이른 입력 지점의 종료 시간 중 더 늦은 쪽을 가리킵니다.

adjacent_rate   입력 지점과 그 다음 이른 지점(행) 사이의 변화율


서명:   ImplicitRowInput   adjacent_rate( )   →   Double.Gauge     (암시적 행 입력)

adjacent_rate 함수는 단일 숫자(Int 또는 Double) 또는 분포 값 열이 있는 테이블에서 작동합니다.

게이지 또는 누적 시계열에 적용되는 경우, adjacent_rate는 현재 입력 행의 값 열과 동일한 시계열의 다음 이른 행의 값 열(있는 경우) 간 값의 변화율을 반환합니다. 이는 값의 차이를 두 행의 종료 시간 차이로 나눈 것입니다. 동일한 시계열에 다음 이른 행이 없으면 adjacent_rateno-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     (암시적 행 입력)

이 함수는 리터럴 Booltrue를 반환합니다.

false   부울 값이 false


서명:   ImplicitRowInput   false( )   →   lit-Bool     (암시적 행 입력)

이 함수는 리터럴 Boolfalse를 반환합니다.

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 함수는 합계인 기간을 반환합니다.

DateDuration 인수의 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 함수는 두 인수의 숫자 차이에 해당하는 기간을 반환합니다.

DateDuration 인수의 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 값으로 반환합니다. 한 입력이 델타 시계열 종류이고 다른 입력이 리터럴이면 출력은 델타 시계열 종류입니다. 그렇지 않으면 출력은 게이지 시계열 종류입니다.

NumDuration 인수의 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' / 1sd'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' / 1sd'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

expNum 인수를 거듭제곱한 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   StringDouble로 변환합니다.


서명:   string_to_double(String )   →   Double

string_to_double 함수는 입력 String 인수를 부동 소수점 숫자로 파싱하고 Double 값으로 결과를 반환합니다. 문자열이 유효한 부동 소수점 값이 아니면 결과는 no-value입니다.

string_to_double의 결과에 측정 단위가 없습니다.

string_to_int64   StringInt로 변환합니다.


서명:   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이 있는 countrow_count

  • 출력이 입력의 제곱수인 variance

  • 출력이 두 입력의 단위 곱인 covariance

  • fraction_less_thanfraction_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 값과 아닌 IntDouble 값을 무시합니다.

첫 번째 인수가 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 함수는 입력 유형에 따라 집계를 수행합니다.

  • IntDouble 입력의 경우 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 인수로 버킷 사양을 지정하는 분포 결과에 수집됩니다. 첫 번째 인수는 분포에 추가하는 값이고 두 번째 인수는 해당 값의 가중치입니다. 가중치가 MN 값은 분포에서 N 값의 M개 인스턴스로 표시됩니다.

일부 입력 행의 경우 첫 번째 인수 표현식이 값으로 평가되지 않거나 무한한 Double로 평가되는 경우 해당 입력 행은 백분위수에 영향을 주지 않습니다.

weighted_distribution의 결과에 연결된 측정 단위는 입력의 단위와 동일합니다.

정렬

정렬 함수는 align 테이블 연산에서 시계열의 지점에 타임스탬프가 일정한 간격으로 있는 정렬된 테이블을 생성하는 데 사용됩니다.

정렬기 함수는 명시적 Duration 인수 외에도 입력 시계열과 특정 시점을 취해 특정 시간의 출력 지점을 생성합니다.

interpolate 정렬 함수는 타임스탬프가 출력 타임스탬프를 가로지르는 두 개의 인접 입력 지점에서 값을 보간하여 지정된 시간에 값을 생성합니다.

next_oldernext_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")은 단위가 s60.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 테이블 연산으로 전달됩니다. windowsliding 함수는 출력 정렬 기간에 따라 입력 범위 폭을 제한합니다.

window 함수는 정렬 기간과 범위 폭이 동일해야 하므로 입력 지점 범위가 겹치지 않음을 나타냅니다.

sliding 함수는 정렬 기간이 범위 폭보다 작을 수 있으므로 입력 창이 겹침을 나타냅니다.

window   정렬 기간과 동일한 기간을 나타냅니다.


서명:   window([ lit-Duration ] )   →   lit-WindowDuration

window 함수는 정렬된 시계열을 생성하는 계산에 사용된 범위 폭을 지정하는 WindowDuration 인수에 Duration 실제 인수를 전달할 때 인수에 주석 처리를 합니다. 범위 폭과 출력 정렬 기간은 모두 Duration 인수와 동일해야 합니다. Duration 인수를 지정하지 않으면 범위 폭을 출력 정렬 기간으로 지정합니다.

예를 들어 테이블 연산 |group_bywindow(5m), .mean은 출력 종료 시간의 5분 이내에 속하는 입력 지점의 평균 값인 출력 지점을 생성합니다. window 함수는 5m 범위 폭을 주석 처리하여 group_by의 정렬 기간도 5분으로 설정합니다. 테이블 연산 | group_by window(), .mean에서도 범위 폭이 출력 정렬 기간과 동일해야 하지만 이 값을 지정해야 하는 것은 아닙니다.

sliding   분리되지 않고 슬라이딩하는(겹치는) 범위를 나타냅니다.


서명:   sliding(lit-Duration )   →   lit-SlidingDuration

sliding 함수는 정렬된 시계열을 생성하는 계산에 사용된 범위 폭을 지정하는 WindowDuration 인수에 Duration 실제 인수를 전달할 때 인수에 주석 처리를 합니다. 범위 폭이 Duration 인수가 되어야 하며 정렬 기간이 더 길어지면 안 됩니다(하지만 더 짧아지는 것은 허용됨).

예를 들어 테이블 연산 |group_bysliding(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    두 부울 값의 논리적 and
  • any_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    부울 값이 false
  • fetch    데이터베이스에서 테이블을 생성합니다.
  • 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    설정된 인수에 특정 값이 포함되어 있으면 true
  • has_value    인수 표현식이 값을 계산하는 경우 true
  • hash_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    두 부울 값의 논리적 or
  • or_else    값, 또는 값이 아니면 다른 값
  • outer_join    두 테이블의 자연스러운 외부 조인
  • percentile    숫자 값 또는 분포 값 그룹의 백분위수
  • percentile_from    분포 값의 백분위수
  • pick_any    값 그룹의 모든 요소 값(임의로 선택됨)
  • pos    숫자 입력의 ID
  • power    한 숫자를 다른 숫자로 거듭제곱
  • 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    StringDouble로 변환합니다.
  • string_to_int64    StringInt로 변환합니다.
  • sub    두 숫자의 차이
  • sum    숫자 값 그룹의 합계
  • sum_from    분포 값의 값 합계
  • time_shift    시계열을 시간 순서대로 이동합니다.
  • top    정렬 값 표현식으로 상위 시계열을 선택합니다.
  • top_by    서로 다른 그룹의 정렬 값 표현식으로 시계열을 선택합니다.
  • true    부울 값이 true
  • unaligned_group_by    정렬되지 않은 매핑된 시계열 식별자로 행을 집계합니다.
  • union    여러 테이블의 통합
  • union_group_by    여러 테이블의 행을 집계합니다.
  • unique    값(모두 동일해야 함) 그룹의 공통 값
  • utf8_normalize    대소문자 비교에 적합한 유니코드 문자열
  • val    입력 지점(행)에 있는 값 열의 값
  • value    테이블에 있는 각 행의 값 열을 다시 작성합니다.
  • variance    숫자 값 그룹의 분산
  • variance_from    분포 값에 있는 값의 분산
  • weighted_distribution    가중치가 적용된 값 그룹의 분포
  • window    정렬 기간과 동일한 기간을 나타냅니다.
  • window    정렬 작업의 기간을 지정합니다.
  • within    정렬 값 계산의 범위를 지정합니다.
  • within    쿼리 출력의 시간 범위를 지정합니다.