DataPrime 날짜/시간 기능

이 가이드에서는 타임스탬프, 간격 및 기타 시간 관련 구성을 처리하는 데 사용할 수 있는 IBM® Cloud Logs DataPrime 함수에 대한 용어집을 제공합니다.

시간 단위

많은 날짜/시간 함수가 시간 단위 인수를 받아 동작을 수정합니다. DataPrime 는 나노초부터 일까지 시간 단위를 지원합니다. 시간 단위 이름은 긴 표기법 또는 짧은 표기법의 리터럴 문자열로 표시됩니다:

  • 긴 표기법: day, hour, minute, second, milli, micro, nano

  • 짧은 표기법: d, h, m, s, ms, us, ns

시간대

DataPrime 타임스탬프는 항상 UTC 표준 시간대로 저장되지만 일부 날짜/시간 함수는 표준 시간대 인수를 받아 동작을 수정할 수 있습니다. 표준 시간대 인수는 표준 시간대 오프셋, 속기 또는 식별자를 지정하는 문자열입니다:

  • 시간 단위의 표준 시간대 오프셋(예: '+01' 또는 '-02')
  • 시간 및 분 단위의 표준 시간대 오프셋(예: '+0130' 또는 '-0230')
  • 시간대 오프셋은 시간 및 분 단위로 구분 기호(예: '+01:30' 또는 '-02:30')로 설정합니다
  • 시간대 속기(예: 'UTC', 'GMT', 'EST' 등)
  • 표준 시간대 식별자(예: '아시아/예레반', '유럽/취리히', '미국/위니펙' 등)

addInterval

두 간격을 합산합니다. 음수 간격으로도 작동합니다. left + right 에 해당합니다.

addInterval(left: interval, right: interval): interval

addTime

타임스탬프에 간격을 추가합니다. 음수 간격으로도 작동합니다. t + i 에 해당합니다.

addTime(t: timestamp, i: interval): timestamp

diffTime

두 타임스탬프 사이의 기간을 계산합니다. to > from 이면 양수, to < from 이면 음수입니다. to - from 와 동일합니다.

diffTime(to: timestamp, from: timestamp): interval

extractTime

타임스탬프에서 날짜 또는 시간 단위를 추출합니다. 시간 단위가 1분 미만인 경우 부동 소수점 숫자를 반환하고, 그렇지 않으면 정수를 반환합니다. month 또는 week 같은 날짜 단위는 0이 아닌 1부터 시작합니다.

extractTime(timestamp: timestamp, unit: dateunit | timeunit, tz: string?): number

함수 매개변수:

  • timestamp (필수)- 추출할 타임스탬프입니다.
  • unit (필수)- 추출할 날짜 또는 시간 단위입니다. 문자열 리터럴이어야 하며 다음 중 하나여야 합니다:
    • 길거나 짧은 표기법의 모든 시간 단위
    • 긴 표기법의 날짜 단위: year, month, week, day_of_year, day_of_week
    • 짧은 표기법의 날짜 단위: Y, M, W, doy, dow
  • tz (선택 사항)- 추출하기 전에 타임스탬프를 변환할 시간대입니다.

예제 1: 도쿄의 시간 추출

limit 1 | choose $m.timestamp.extractTime('h', 'Asia/Tokyo') as h # Result 1: 11pm { "h": 23 }

예 2: 초 수 추출

limit 1 | choose $m.timestamp.extractTime('second') as s # Result 2: 38.35 seconds { "s": 38.3510265 }

예 3: 타임스탬프의 월 추출하기

limit 1 | choose $m.timestamp.extractTime('month') as m # Result 3: August { "m": 8 }

예 4: 요일 추출하기

limit 1 | choose $m.timestamp.extractTime('dow') as d # Result 4: Tuesday { "d": 2 }

formatInterval

interval 을 선택적 시간 단위가 있는 문자열 scale 로 형식화합니다.

formatInterval(interval: interval, scale: timeunit?): string

함수 매개변수:

  • interval (필수)- 포맷할 간격입니다.
  • scale (선택 사항)- 표시할 간격의 최대 시간 단위입니다. 기본값은 나노입니다.

예:

limit 3 | choose formatInterval(now() - $m.timestamp, 's') as i # Results: { "i": "122s261ms466us27ns" } { "i": "122s359ms197us227ns" } { "i": "122s359ms197us227ns" }

formatTimestamp

선택적 형식 사양과 대상 표준 시간대를 사용하여 타임스탬프의 형식을 문자열로 지정합니다.

formatTimestamp(timestamp: timestamp, format: string?, tz: string?): string

함수 매개변수:

  • timestamp (필수)- 포맷할 타임스탬프입니다.
  • format (선택 사항)- 타임스탬프 구문 분석을 위한 날짜/시간 형식 지정입니다. 기본값은 ' iso8601 ' 입니다. 형식은 날짜/시간 포맷터가 내장된 문자열 또는 여러 약어 중 하나를 사용할 수 있습니다. 다음은 몇 가지 샘플입니다:
    • '%Y-%m- %d ' - 날짜만 인쇄합니다(예: '2023-04-05')
    • '%H:%M:%S' - 시간만 인쇄합니다(예: '16:07:33')
    • '%F %H:%M:%S' - 날짜와 시간을 모두 인쇄합니다(예: '2023-04-05 16:07:33')
    • ' iso8601 ' - ISO 8601 형식의 타임스탬프를 인쇄합니다 '2023-04-05T16:07:33.123Z'
    • 'timestamp_milli' - 타임스탬프를 밀리초 단위(13자리)로 인쇄합니다(예: '1680710853123')

tz (선택 사항)- 서식을 지정하기 전에 타임스탬프를 변환할 대상 표준 시간대입니다.

예 1: 기본 형식과 +5h 오프셋을 사용하여 타임스탬프 인쇄하기

limit 1 | choose $m.timestamp.formatTimestamp(tz='+05') as ts # Result 1: { "ts": "2023-08-29T19:08:37.405937400+0500" }

예 2: 연도와 월만 인쇄하기

limit 1 | choose $m.timestamp.formatTimestamp('%Y-%m') as ym # Result 2: { "ym": "2023-08" }

예 3: 시간과 분만 인쇄하기

limit 1 | choose $m.timestamp.formatTimestamp('%H:%M') as hm # Result 3: { "hm": "14:11" }

예 4: 밀리초 단위(13자리)로 타임스탬프 인쇄하기

limit 1 | choose $m.timestamp.formatTimestamp('timestamp_milli') as ms # Result 4: { "ms": "1693318678696" }

fromUnixTime

UNIX 시대 이후의 특정 시간 단위 숫자를 타임스탬프(UTC 기준)로 변환합니다. UNIX 시대는 1970년 1월 1일에 시작되며, 그 이전 타임스탬프는 음수로 표시됩니다.

fromUnixTime(unixTime: number, timeUnit: timeunit?): timestamp

함수 매개변수:

  • unixTime (필수)- 변환할 시간 단위입니다. 양수 또는 음수일 수 있으며 정수로 반올림됩니다.
  • timeUnit (선택 사항)- 변환할 시간 단위입니다. 기본값은 '밀리'입니다.

예:

limit 1 | choose fromUnixTime(1658958157515, 'ms') as ts # Result: { "ts": 1658958157515000000 }

multiplyInterval

간격에 숫자 계수를 곱합니다. 정수와 분수 모두에서 작동합니다. i * factor 에 해당합니다.

multiplyInterval(i: interval, factor: number): interval

now

쿼리 실행 시점의 현재 시간을 반환합니다. 여러 번 사용하더라도 모든 행과 전체 쿼리 내에서 안정적입니다. 런타임이 지원하는 경우 나노초 해상도, 그렇지 않은 경우 밀리초 해상도입니다.

now(): timestamp

예:

limit 3 | choose now() as now, now() - $m.timestamp as since # Results: { "now": 1693312549105874700, "since": "14m954ms329us764ns" } { "now": 1693312549105874700, "since": "14m954ms329us764ns" } { "now": 1693312549105874700, "since": "14m960ms519us564ns" }

parseInterval

NdNhNmNsNmsNusNns 형식의 문자열에서 간격을 구문 분석합니다. 여기서 N은 각 시간 단위의 양입니다. 입력이 예상 형식과 일치하지 않을 경우 null을 반환합니다:

  • 시간 단위 구성 요소는 음수가 아닌 정수와 짧은 시간 단위 이름 뒤에 오는 시간 단위 구성 요소로 이루어져 있습니다. 지원되는 시간 단위는 다음과 같습니다: 'd', 'h', 'm', 's', 'ms', 'us', 'ns'.
  • 시간 단위 컴포넌트가 하나 이상 있어야 합니다.
  • 동일한 시간 단위는 두 번 이상 표시할 수 없습니다.
  • 구성 요소는 일 단위에서 나노초 단위로 시간 단위가 감소해야 합니다.
  • 음수 간격을 나타내기 위해 - 로 시작할 수 있습니다.
parseInterval(string: string): interval

예 1: 0 간격 구문 분석하기

limit 1 | choose '0s'.parseInterval() as i # Result 1: { "i": "0ns" }

예 2: 양수 간격 구문 분석하기

limit 1 | choose '1d48h0m'.parseInterval() as i # Result 2: { "i": "3d" }

예 3: 음수 간격 구문 분석하기

limit 1 | choose '-5m45s'.parseInterval() as i # Result 3: { "i": "-5m45s" }

parseTimestamp

선택적 형식 지정 및 표준 시간대 재정의가 포함된 문자열에서 타임스탬프를 구문 분석합니다. 입력이 예상 형식과 일치하지 않을 경우 null을 반환합니다.

parseTimestamp(string: string, format: string?, tz: string?): timestamp

함수 매개변수:

  • string (필수)- 타임스탬프를 추출할 입력입니다.
  • format (선택 사항)- 타임스탬프 구문 분석을 위한 날짜/시간 형식 지정입니다. 기본값은 '자동'입니다. 형식은 날짜/시간 추출기가 내장된 문자열, 여러 단축키 중 하나 또는 순차적으로 시도할 형식의 캐스케이드일 수 있습니다. 다음은 몇 가지 샘플입니다:
    • '%Y-%m- %d ' - 날짜만 구문 분석합니다(예: '2023-04-05')
    • '%F %H:%M:%S' - 날짜 및 시간 구문 분석(예: '2023-04-05 16:07:33')
    • ' iso8601 ' - ISO 8601 형식의 타임스탬프를 구문 분석합니다 '2023-04-05T16:07:33.123Z'
    • 'timestamp_milli' - 타임스탬프를 밀리초 단위(13자리)로 구문 분석합니다(예: '1680710853123')
    • '%m/ %d /%Y|타임스탬프_초' - 날짜 또는 타임스탬프(초 단위)를 순서대로 구문 분석합니다
  • tz (선택 사항)- 구문 분석 중 타임스탬프를 변환하기 위한 표준 시간대 재정의입니다. 이 매개변수는 입력에 있는 모든 표준 시간대를 재정의합니다. 적절한 형식을 사용하고 이 매개변수를 생략하여 문자열에서 표준 시간대를 추출할 수 있습니다.

예 1: 기본 형식으로 날짜 구문 분석하기

limit 1 | choose '2023-04-05'.parseTimestamp() as ts # Result 1: { "ts": 1680652800000000000 }

예 2: 미국 형식으로 날짜 구문 분석하기

limit 1 | choose '04/05/23'.parseTimestamp('%D') as ts # Result 2: { "ts": 1680652800000000000 }

예 3: 단위로 날짜 및 시간 구문 분석하기

limit 1 | choose '2023-04-05 16h07m'.parseTimestamp('%F %Hh%Mm') as ts # Result 3: { "ts": 1680710820000000000 }

예 4: 초 단위(10자리)로 타임스탬프 구문 분석하기

limit 1 | choose '1680710853'.parseTimestamp('timestamp_second') as ts # Result 4: { "ts": 1680710853000000000 }

roundInterval

간격을 시간 단위로 반올림합니다 scale. 시간 단위가 작을수록 0이 됩니다.

roundInterval(interval: interval, scale: timeunit): interval

함수 매개변수:

  • interval (필수)- 반올림할 간격입니다.
  • scale (필수)- 유지할 간격의 최대 시간 단위입니다.

예:

limit 1 | choose 2h5m45s.roundInterval('m') as i # Result: { "i": "2h5m" }

roundTime

타임스탬프를 주어진 간격으로 반올림합니다. 예를 들어 시간별 버킷의 경우 1h 로 반올림하는 등 버킷 설정에 유용합니다. date / interval 에 해당합니다.

roundTime(date: timestamp, interval: interval): timestamp

예:

groupby $m.timestamp.roundTime(1h) as bucket count() as n # Results: { "bucket": "29/08/2023 15:00:00.000 pm", "n": 40653715 } { "bucket": "29/08/2023 14:00:00.000 pm", "n": 1779386 }

subtractInterval

한 간격에서 다른 간격을 뺍니다. addInterval(left, -right)left - right 과 동일합니다.

subtractInterval(left: interval, right: interval): interval

subtractTime

타임스탬프에서 간격을 뺍니다. addTime(t, -i)t - i 과 동일합니다.

subtractTime(t: timestamp, i: interval): timestamp

toInterval

특정 시간 단위를 간격으로 변환합니다. 정수와 부동 소수점, 양수와 음수 모두에서 작동합니다.

toInterval(number: number, timeUnit: timeunit?): interval

함수 매개변수:

  • number (필수)- 변환할 시간 단위입니다.
  • timeUnit (선택 사항)- 변환할 시간 단위입니다. 기본값은 나노입니다.

예 1: 부동 소수점 숫자 변환하기

limit 1 | choose 2.5.toInterval('h') as i # Result 1: { "i": "2h30m" } # Example 2: convert an integer number limit 1 | choose -9000.toInterval() as i # Result 2: { "i": "-9us" }

toUnixTime

타임스탬프를 UNIX 시대(UTC 기준) 이후의 특정 시간 단위로 변환합니다. UNIX 시대는 1970년 1월 1일에 시작되며, 그 이전 타임스탬프는 음수로 표시됩니다.

toUnixTime(timestamp: timestamp, timeUnit: timeunit?): number

함수 매개변수:

  • timestamp (필수)- 변환할 타임스탬프입니다.
  • timeUnit (선택 사항)- 변환할 시간 단위입니다. 기본값은 '밀리'입니다.

예:

limit 1 | choose $m.timestamp.toUnixTime('hour') as hr # Result: { "hr": 470363 }