Função NOW

Para esta função, os valores que você vê na grade do Transformer são gerados durante a visualização. Esses valores serão diferentes dos valores gerados posteriormente, quando o job for executado.

OBSERVAÇÃO: em algumas funções Datetime, o aninhamento das funções NOW e TODAY não é permitido. Você precisa criar uma coluna separada contendo esses valores.

Outras diferenças:

  • Se você atualizar a página da grade do Transformer, a função será recalculada.
  • Se você reabrir o conjunto de dados na página "Transformer", a função será recalculada.
  • Se você tiver várias versões da função no mesmo conjunto de dados, você provavelmente acabará com carimbos de data/hora gerados diferentes. A diferença nos respectivos valores não pode ser prevista de maneira precisa.

Dica: se quiser usar o mesmo valor computado para essa função em todo o conjunto de dados, você precisará gerar uma coluna contendo valores para a função e basear todos os outros cálculos sem esses valores de coluna.

OBSERVAÇÃO: se nenhum fuso horário for especificado, o padrão será o fuso horário UTC. Os valores de tempo são retornados no formato de 24 horas.

Para mais informações sobre como gerar o valor de data apenas para hoje, consulte Função TODAY.

Uso básico

Exemplo básico:

derive type:single value:NOW() as:'nowTime'

Saída: gera uma coluna de valores que contêm o carimbo de data/hora atual em fuso horário UTC.

Exemplo com fuso horário:

derive type:single value:NOW('America/New York') as:'nowTime'

Resultado: gera uma coluna de valores que contêm o carimbo de data/hora atual com base no fuso horário do leste dos EUA.

Sintaxe

derive type:single value:NOW(str_timezone)

ArgumentoObrigatório?Tipo de dadosDescrição
str_timezoneNstringValor de string do fuso horário para o qual o carimbo de data/hora é calculado.

Para mais informações sobre os padrões de sintaxe, consulte Notas de sintaxe da documentação da linguagem.

str_timezone

Valor de string do fuso horário a ser usado.

Para uma lista de valores compatíveis para fusos horários, consulte Valores de fuso horário compatíveis.

Notas de uso:

Obrigatório?Tipo de dadosValor de exemplo
NãoString'America/New York'

Exemplos

Exemplo: relatório de status do voo

Este exemplo ilustra como as funções NOW e TODAY operam. Ambas as funções geram saídas do tipo de dados Datetime.

  • NOW: gera valores Datetime válidos para o carimbo de data/hora atual no fuso horário especificado. Consulte Função NOW.
  • TODAY: gera Datetime válido para a data atual no fuso horário especificado. Consulte Função TODAY.
  • DATEDIF: calcula a diferença entre dois valores Datatime com base em uma unidade de medida específica. Consulte Função DATEDIF.

Origem:

A tabela a seguir inclui informações sobre chegadas de voo do aeroporto internacional de Los Angeles.

FlightNumberPortãoChegada
1234115/02/17 11:35
212215/02/17 11:58
510315/02/17 11:21
8401415/02/17 12:08
99516/02/17 12:12
116616/02/17 13:32
876715/02/17 16:43
9494815/02/17 21:00
102914/02/17 19:21
771016/02/17 12:31

Transformação:

Você tem interesse em gerar um relatório de status sobre os voos de hoje. Para ajudar, você precisa gerar colunas com os valores de data e hora atuais:

Dica: crie colunas separadas com valores estáticos para as funções NOW e TODAY. Evite criar várias instâncias de cada função no conjunto de dados, porque os valores calculados nelas podem variar em tempo de execução.

derive type:single value: NOW('America\/Los_Angeles') as: 'currentTime'

derive type:single value: TODAY('America\/Los_Angeles') as: 'currentDate'

Em seguida, identifique os voos que estão aterrissando hoje. Nesse caso, você pode usar a função DATEDIF para determinar se o valor Arrival corresponde ao valor currentTime dentro de um dia:

OBSERVAÇÃO: na função DATEDIF, o cálculo é feito com base na diferença da primeira para a segunda data. Essa operação é baseada na unidade de medida. Dessa forma, um carimbo de data/hora com 23 horas de diferença em relação ao carimbo de base pode estar dentro da mesma unidade do dia, mesmo que as datas possam ser diferentes (2/15/2017 x 2/14/2017).

derive type:single value: datedif(currentDate, Arrival, day) as: 'today'

Como você está concentrando apenas no dia de hoje, é possível remover todas as linhas que não se aplicam a hoje:

delete row: today <> 0

Agora, concentrando-se nas datas de hoje, você pode calcular a diferença entre a hora atual e a hora de chegada pelo minuto:

derive type:single value: datedif(currentTime, Arrival, minute) as: 'status'

Usando os valores numéricos na coluna status, você pode compor a transformação abaixo, que identifica o status de cada voo:

set col: status value: if(status < -20, 'arrived', if(status > 20, 'scheduled', if(status <= 0, 'landed', 'arriving')))

Resultados:

Agora você tem um relatório diário de status dos voos:

currentDatecurrentTimeFlightNumberPortãoChegadastatushoje
2017-02-152017-02-15·11:46:121234115/02/17 11:35em terra0
2017-02-152017-02-15·11:46:12212215/02/17 11:58em aproximação0
2017-02-152017-02-15·11:46:12510315/02/17 11:21em pouso0
2017-02-152017-02-15·11:46:128401415/02/17 12:08previsto0
2017-02-152017-02-15·11:46:12876715/02/17 16:43previsto0
2017-02-152017-02-15·11:46:129494815/02/17 21:00previsto0
2017-02-152017-02-15·11:46:12102914/02/17 19:21em pouso0

As colunas currentDate, currentTime e today podem ser excluídas.

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Google Cloud Dataprep
Precisa de ajuda? Acesse nossa página de suporte.