DataPrime funções de data/hora
Este guia fornece um glossário das funções disponíveis no site IBM® Cloud Logs DataPrime para o processamento de carimbos de data/hora, intervalos e outras construções relacionadas ao tempo.
Unidades de tempo
Muitas funções de data/hora aceitam um argumento de unidade de tempo para modificar seu comportamento. DataPrime suporta unidades de tempo de nanossegundos a dias. Eles são representados como cadeias literais do nome da unidade de tempo em notação longa ou curta:
-
notação longa:
day,hour,minute,second,milli,micro,nano -
notação curta:
d,h,m,s,ms,us,ns
Fusos horários
DataPrime os carimbos de data/hora são sempre armazenados no fuso horário UTC, mas algumas funções de data/hora aceitam um argumento de fuso horário para modificar seu comportamento. Os argumentos de fuso horário são cadeias de caracteres que especificam um deslocamento, abreviação ou identificador de fuso horário:
- deslocamento de fuso horário em horas (por exemplo, '+01' ou '-02')
- deslocamento de fuso horário em horas e minutos (por exemplo, '+0130' ou '-0230')
- deslocamento de fuso horário em horas e minutos com separador (por exemplo, '+01:30' ou '-02:30')
- abreviação de fuso horário (por exemplo, "UTC", "GMT", "EST" e assim por diante)
- identificador de fuso horário (por exemplo, "Ásia/Yerevan", "Europa/Zurique", "América/Winnipeg" e assim por diante)
addInterval
Adiciona dois intervalos juntos. Também funciona com intervalos negativos. Equivalente a left + right.
addInterval(left: interval, right: interval): interval
addTime
Adiciona um intervalo a um registro de data e hora. Também funciona com intervalos negativos. Equivalente a t + i.
addTime(t: timestamp, i: interval): timestamp
diffTime
Calcula a duração entre dois registros de data e hora. Positivo se to > from, negativo se to < from. Equivalente a to - from.
diffTime(to: timestamp, from: timestamp): interval
extractTime
Extrai uma data ou unidade de tempo de um carimbo de data/hora. Retorna um número de ponto flutuante para unidades de tempo inferiores a um minuto; caso contrário, retorna um número inteiro. As unidades de data, como month ou week,
começam em 1 (e não em 0).
extractTime(timestamp: timestamp, unit: dateunit | timeunit, tz: string?): number
Parâmetros de função:
timestamp(obrigatório)- o registro de data e hora do qual extrair.unit(obrigatório)- a unidade de data ou hora a ser extraída. Deve ser um literal de string e um de:- qualquer unidade de tempo em notação longa ou curta
- uma unidade de data em notação longa:
year,month,week,day_of_year,day_of_week - uma unidade de data em notação curta:
Y,M,W,doy,dow
tz(opcional)- um fuso horário para converter o registro de data e hora antes da extração.
Exemplo 1: extrair a hora em Tóquio
limit 1 | choose $m.timestamp.extractTime('h', 'Asia/Tokyo') as h # Result 1: 11pm { "h": 23 }
Exemplo 2: extrair o número de segundos
limit 1 | choose $m.timestamp.extractTime('second') as s # Result 2: 38.35 seconds { "s": 38.3510265 }
Exemplo 3: extrair o mês do registro de data e hora
limit 1 | choose $m.timestamp.extractTime('month') as m # Result 3: August { "m": 8 }
Exemplo 4: extrair o dia da semana
limit 1 | choose $m.timestamp.extractTime('dow') as d # Result 4: Tuesday { "d": 2 }
formatInterval
Formata interval em uma string com uma unidade de tempo opcional scale.
formatInterval(interval: interval, scale: timeunit?): string
Parâmetros de função:
interval(obrigatório)- o intervalo a ser formatado.scale(opcional)- a unidade de tempo máxima do intervalo a ser exibido. O padrão é nano.
Exemplo:
limit 3 | choose formatInterval(now() - $m.timestamp, 's') as i # Results: { "i": "122s261ms466us27ns" } { "i": "122s359ms197us227ns" } { "i": "122s359ms197us227ns" }
formatTimestamp
Formata um carimbo de data/hora em uma cadeia de caracteres com uma especificação de formato opcional e fuso horário de destino.
formatTimestamp(timestamp: timestamp, format: string?, tz: string?): string
Parâmetros de função:
timestamp(obrigatório)- o registro de data e hora a ser formatado.format(opcional)- uma especificação de formato de data/hora para análise de carimbos de data/hora. O padrão é ' iso8601 '. O formato pode ser qualquer cadeia de caracteres com formatadores de data/hora incorporados ou uma das várias abreviações. Aqui estão alguns exemplos:- '%Y-%m- %d ' - imprime somente a data, por exemplo, '2023-04-05'
- '%H:%M:%S' - imprime somente a hora, por exemplo, '16:07:33'
- '%F %H:%M:%S' - imprime a data e a hora, por exemplo, '2023-04-05 16:07:33'
- ' iso8601 ' - imprime um registro de data e hora no formato ISO 8601, por exemplo '2023-04-05T16:07:33.123Z'
- 'timestamp_milli' - imprime um registro de data e hora em milissegundos (13 dígitos), por exemplo, '1680710853123'
tz (opcional)- o fuso horário de destino para converter o registro de data e hora antes da formatação.
Exemplo 1: imprimir um registro de data e hora com o formato padrão e o deslocamento +5h
limit 1 | choose $m.timestamp.formatTimestamp(tz='+05') as ts # Result 1: { "ts": "2023-08-29T19:08:37.405937400+0500" }
Exemplo 2: imprimir apenas o ano e o mês
limit 1 | choose $m.timestamp.formatTimestamp('%Y-%m') as ym # Result 2: { "ym": "2023-08" }
Exemplo 3: imprimir apenas as horas e os minutos
limit 1 | choose $m.timestamp.formatTimestamp('%H:%M') as hm # Result 3: { "hm": "14:11" }
Exemplo 4: imprimir um registro de data e hora em milissegundos (13 dígitos)
limit 1 | choose $m.timestamp.formatTimestamp('timestamp_milli') as ms # Result 4: { "ms": "1693318678696" }
fromUnixTime
Converte um número de unidades de tempo específicas desde a época do UNIX em um registro de data e hora (em UTC). A época do UNIX começa em 1º de janeiro de 1970 - os registros de data e hora anteriores são representados por números negativos.
fromUnixTime(unixTime: number, timeUnit: timeunit?): timestamp
Parâmetros de função:
unixTime(obrigatório)- a quantidade de unidades de tempo a serem convertidas. Pode ser positivo ou negativo e será arredondado para um número inteiro.timeUnit(opcional)- as unidades de tempo a serem convertidas. O padrão é "milli".
Exemplo:
limit 1 | choose fromUnixTime(1658958157515, 'ms') as ts # Result: { "ts": 1658958157515000000 }
multiplyInterval
Multiplica um intervalo por um fator numérico. Funciona com números inteiros e fracionários. Equivalente a i * factor.
multiplyInterval(i: interval, factor: number): interval
now
Retorna a hora atual no momento da execução da consulta. Estável em todas as linhas e em toda a consulta, mesmo quando usado várias vezes. Resolução de nanossegundos se o tempo de execução for compatível; caso contrário, resolução de milissegundos.
now(): timestamp
Exemplo:
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
Analisa um intervalo de uma cadeia de caracteres com o formato NdNhNmNsNmsNusNns, em que N é a quantidade de cada unidade de tempo. Retorna nulo quando a entrada não corresponde ao formato esperado:
- Ele consiste em componentes de unidade de tempo - um número inteiro não negativo seguido pelo nome curto da unidade de tempo. As unidades de tempo compatíveis são: 'd', 'h', 'm', 's', 'ms', 'us', 'ns'.
- Deve haver pelo menos um componente de unidade de tempo.
- A mesma unidade de tempo não pode aparecer mais de uma vez.
- Os componentes devem ser decrescentes em ordem de unidade de tempo, de dias a nanossegundos.
- Ele pode começar com
-para representar intervalos negativos.
parseInterval(string: string): interval
Exemplo 1: analisar um intervalo zero
limit 1 | choose '0s'.parseInterval() as i # Result 1: { "i": "0ns" }
Exemplo 2: analisar um intervalo positivo
limit 1 | choose '1d48h0m'.parseInterval() as i # Result 2: { "i": "3d" }
Exemplo 3: analisar um intervalo negativo
limit 1 | choose '-5m45s'.parseInterval() as i # Result 3: { "i": "-5m45s" }
parseTimestamp
Analisa um carimbo de data/hora a partir de uma cadeia de caracteres com uma especificação de formato opcional e substituição de fuso horário. Retorna nulo quando a entrada não corresponde ao formato esperado.
parseTimestamp(string: string, format: string?, tz: string?): timestamp
Parâmetros de função:
string(obrigatório)- a entrada da qual o registro de data e hora será extraído.format(opcional)- uma especificação de formato de data/hora para análise de carimbos de data/hora. O padrão é "auto". O formato pode ser qualquer cadeia de caracteres com extratores de data/hora incorporados, uma das várias abreviações ou uma cascata de formatos a serem tentados em sequência. Aqui estão alguns exemplos:- '%Y-%m- %d ' - analisa somente a data, por exemplo, '2023-04-05'
- '%F %H:%M:%S' - analisa a data e a hora, por exemplo, '2023-04-05 16:07:33'
- ' iso8601 ' - analisa um registro de data e hora no formato ISO 8601, por exemplo '2023-04-05T16:07:33.123Z'
- 'timestamp_milli' - analisa um registro de data e hora em milissegundos (13 dígitos), por exemplo, '1680710853123'
- '%m/ %d /%Y|timestamp_second' - analisa uma data ou um carimbo de data/hora em segundos, nessa ordem
tz(opcional)- uma substituição de fuso horário para converter o registro de data e hora durante a análise. Esse parâmetro substituirá qualquer fuso horário presente na entrada. Um fuso horário pode ser extraído da cadeia de caracteres usando um formato apropriado e omitindo esse parâmetro.
Exemplo 1: analisar uma data com o formato padrão
limit 1 | choose '2023-04-05'.parseTimestamp() as ts # Result 1: { "ts": 1680652800000000000 }
Exemplo 2: analisar uma data no formato americano
limit 1 | choose '04/05/23'.parseTimestamp('%D') as ts # Result 2: { "ts": 1680652800000000000 }
Exemplo 3: analisar data e hora com unidades
limit 1 | choose '2023-04-05 16h07m'.parseTimestamp('%F %Hh%Mm') as ts # Result 3: { "ts": 1680710820000000000 }
Exemplo 4: analisar um registro de data e hora em segundos (10 dígitos)
limit 1 | choose '1680710853'.parseTimestamp('timestamp_second') as ts # Result 4: { "ts": 1680710853000000000 }
roundInterval
Arredonda um intervalo para uma unidade de tempo scale. As unidades de tempo menores serão zeradas.
roundInterval(interval: interval, scale: timeunit): interval
Parâmetros de função:
interval(obrigatório)- o intervalo a ser arredondado.scale(obrigatório)- a unidade de tempo máxima do intervalo a ser mantido.
Exemplo:
limit 1 | choose 2h5m45s.roundInterval('m') as i # Result: { "i": "2h5m" }
roundTime
Arredonda um registro de data e hora para o intervalo fornecido. Útil para agrupamento, por exemplo, arredondamento para 1h para agrupamentos por hora. Equivalente a date / interval.
roundTime(date: timestamp, interval: interval): timestamp
Exemplo:
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
Subtrai um intervalo de outro. Equivalente a addInterval(left, -right) e left - right.
subtractInterval(left: interval, right: interval): interval
subtractTime
Subtrai um intervalo de um registro de data e hora. Equivalente a addTime(t, -i) e t - i.
subtractTime(t: timestamp, i: interval): timestamp
toInterval
Converte um número de unidades de tempo específicas em um intervalo. Funciona com números inteiros e de ponto flutuante, positivos e negativos.
toInterval(number: number, timeUnit: timeunit?): interval
Parâmetros de função:
number(obrigatório)- a quantidade de unidades de tempo a serem convertidas.timeUnit(opcional)- Unidades de tempo a serem convertidas. O padrão é nano.
Exemplo 1: converter um número de ponto flutuante
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
Converte o registro de data e hora em um número de unidades de tempo específicas desde a época do UNIX (em UTC). A época do UNIX começa em 1º de janeiro de 1970 - os registros de data e hora anteriores são representados por números negativos.
toUnixTime(timestamp: timestamp, timeUnit: timeunit?): number
Parâmetros de função:
timestamp(obrigatório)- o registro de data e hora a ser convertido.timeUnit(opcional)- as unidades de tempo para as quais converter. O padrão é "milli".
Exemplo:
limit 1 | choose $m.timestamp.toUnixTime('hour') as hr # Result: { "hr": 470363 }