Sumário

Search

  1. Prefácio
  2. A Linguagem de Transformação
  3. Constantes
  4. Operadores
  5. Variáveis
  6. Datas
  7. Funções
  8. Criação de funções personalizadas
  9. Referência de API da Função Personalizada

Referência de Linguagem de Transformação

Referência de Linguagem de Transformação

LAG

LAG

Retorna o valor, que é um número de deslocamento de linhas antes da linha atual em uma transformação de Expressão. Use essa função para comparar valores na linha atual com valores em uma linha anterior quando você executar um mapeamento no mecanismo Spark do ambiente Hadoop.
Um valor de atraso é exibido antes da linha atual em um conjunto de dados.
Ao usar LAG em uma transformação, você deve configurar a transformação para definição de janelas. Propriedades de definição de janelas definem como os dados são particionados e ordenados.

Sintaxe

LAG (
column_name
,
offset
,
default
)
A tabela a seguir descreve os argumentos para este comando:
Argumento
Obrigatório/
Opcional
Descrição
column_name
Obrigatório
A coluna ou expressão de destino em que a função opera.
offset
Obrigatório
Tipo de dados Integer. O número de linhas antes da linha atual do qual obter um valor.
default
Opcional
O valor padrão a ser retornado em caso de deslocamento está fora dos limites da partição ou tabela. O padrão é NULL.

Valor de retorno

O tipo de dados do
column_name
especificado.
Padrão
se o valor de retorno estiver fora dos limites da partição especificada.
NULL se
padrão
for omitido ou definido como NULL.

Exemplos

A expressão a seguir retorna a data em que o pedido anterior foi efetuado:
LAG ( ORDER_DATE, 1, NULL )
ORDER_DATE
ORDER_ID
RETURN VALUE
2017/09/25
1
NULL
2017/09/26
2
2017/09/25
2017/09/27
3
2017/09/26
2017/09/28
4
2017/09/27
2017/09/29
5
2017/09/28
2017/09/30
6
2017/09/29
O valor de atraso da primeira linha está fora da partição e, portanto, a função retornou o valor padrão de NULL.
No exemplo a seguir, sua organização recebe pings de GPS de veículos que incluem IDs de viagem e eventos e um registro de data/hora. Você deseja calcular a diferença de tempo entre cada ping.
A expressão a seguir calcula a diferença de tempo entre a linha atual e a linha anterior para duas viagens separadas:
DATE_DIFF( EVENT_TIME, LAG ( EVENT_TIME, 1, NULL ), 'ss' )
Você particiona os dados por ID de viagem e ordena por ID de evento.
TRIP_ID
EVENT_ID
EVENT_TIME
RETURN VALUE
101
1
2017-05-03 12:00:00
NULL
101
2
2017-05-03 12:00:34
34
101
3
2017-05-03 12:02:00
86
102
1
2017-05-03 12:00:00
NULL
102
2
2017-05-03 12:01:56
116
102
3
2017-05-03 12:02:00
4
Os valores de atraso da primeira e da quarta linhas estão fora da partição especificada e, portanto, a função retornou dois valores NULL padrão.