Função SESSION

Gera um novo identificador de sessão com base em uma coluna classificada de carimbos de data/hora e um período de tempo contínuo especificado.

A função SESSION usa três parâmetros:

  • referência à coluna que contém os valores de data/hora que identificam as sessões;
  • valor numérico que identifica a duração do tempo contínuo que demarca uma sessão;
  • unidade de medida do comprimento do tempo contínuo.

Como outros parâmetros de gestão de janelas, order e group podem ser aplicados. Você pode usar os parâmetros group e order para definir os grupos de registros e a ordem desses registros em que essa transformação é aplicada.

OBSERVAÇÃO: mesmo não sendo explicitamente necessário, é preciso usar o parâmetro order para definir uma coluna, usada para classificar as linhas do conjunto de dados. Essa coluna deve corresponder à referência de coluna na função SESSION.

Na coluna gerada, são atribuídos identificadores a cada linha com base na sessão calculada a que pertencem os dados da linha. Os códigos de sessão começam em 1 e aumentam dentro de cada grupo.

  • Para cada grupo novo, os identificadores de sessão começam com o valor 1. Consequentemente, os identificadores de sessão são exclusivos apenas dentro do grupo e a combinação de identificador de grupo e identificador de sessão é uma chave exclusiva dentro do conjunto de dados.

Esta função funciona com as seguintes transformações:

Uso básico

window value:SESSION(Timestamp, 1, hour) order:'Timestamp'

Resultado: gera uma nova coluna contendo identificadores de sessão para grupos de linhas com base em segmentos de 1 hora.

Sintaxe

window value:SESSION(col_ref, k_integer,unit_of_time) order: order_col [group: group_col]

ArgumentoObrigatório?Tipo de dadosDescrição
col_refSstringNome da coluna cujos valores são aplicados à função
k_integerSinteiro (positivo)Duração de uma sessão, combinada ao argumento unit_of_time
unit_of_timeSstringLiteral de string que indica as unidades de tempo para definir a duração de uma sessão

Para mais informações sobre os parâmetros order e group, consulte Transformação Window.

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

col_ref

Nome da coluna de data/hora cujos valores são usados para determinar as sessões.

  • Não há compatibilidade com várias colunas e caracteres curinga.

Observações sobre o uso:

Obrigatório?Tipo de dadosValor de exemplo
SimString (referência de coluna para valores de data/hora)myDates

k_integer

Define o comprimento de uma sessão como esse número de unidades, que são definidas no parâmetro unit_of_time.

OBSERVAÇÃO: o início de uma nova sessão é determinado pelo primeiro registro encontrado fora do limite da sessão anterior. Não é determinado com base em qualquer interpretação de um intervalo fixo.

Observações sobre o uso:

Obrigatório?Tipo de dadosValor de exemplo
SimInteiro (positivo)24

unit_of_time

Define a duração de cada unidade de tempo para fins de definição da duração de uma sessão.

Observações sobre o uso:

Obrigatório?Tipo de dadosValor de exemplo
SimLiteral de string Veja a lista abaixo.hour

Valores aceitos: day, hour, millisecond, minute, second.

Exemplos


Exemplo: atribuir identificadores de sessão a eventos com carimbo de data/hora

O conjunto de dados a seguir contém eventos de um site, categorizados pelo identificador do cliente. As informações do carimbo de data/hora são armazenadas em duas colunas separadas e os dados importados são classificados pela coluna Action. Seu objetivo é gerar identificadores de sessão com base em sessões de intervalos de cinco minutos para cada cliente.

Origem:

DataHoraCustIdAção
1/2/169:23:00 AMC001alterar configurações da conta
1/2/169:23:58 AMC003concluir pedido
1/2/169:20:00 AMC002login
1/2/169:20:22 AMC003login
1/2/169:20:41 AMC001login
1/2/169:24:52 AMC004login
1/2/1611:24:21 AMC001login
1/2/169:24:18 AMC001logout
1/2/169:24:49 AMC003logout
1/2/169:26:22 AMC002logout
1/2/169:24:10 AMC002pesquisa: bicicletas
1/2/169:23:50 AMC002pesquisa: penny farthings
1/2/1611:56:09 PMC004pesquisa: monociclos

Transformação:

Esses dados fazem mais sentido se organizados pelo carimbo de data/hora de cada evento. No entanto, as informações do carimbo de data/hora são distribuídas em dois campos: Date e Time. A primeira etapa é consolidar esses dados em um único campo:

merge col: Date,Time with: ' ' as: 'Timestamp'

Agora é possível descartar as duas colunas de origem. Depois que elas são descartadas, é possível notar que a coluna Timestamp ainda é tipificada como dados de string. Esse problema de tipificação é causado pelos designadores AM/PM, que podem ser removidos com a seguinte transformação:

replace col: Timestamp on: ` {upper}{2}{end}` with: ''

Agora que tem dados válidos de data/hora, você pode criar identificadores de sessão usando a seguinte transformação:

window value:SESSION(Timestamp, 5, minute) order: Timestamp group: CustId

A transformação acima cria identificadores de sessão a partir dos dados da coluna Timestamp referentes a intervalos de cinco minutos. Os dados são inicialmente agrupados por CustId e, em seguida, classificados por Timestamp antes da função SESSION ser aplicada.

Você tem a opção de renomear a coluna gerada:

rename mapping:[window,'SessionId']

Resultados:

Carimbo de data/horaCustIdAçãoSessionId
1/2/2016 11:24:21C001login1
1/2/2016 9:20:41C001login2
1/2/2016 9:23:00C001alterar configurações da conta2
1/2/2016 9:24:18C001logout2
1/2/2016 9:20:22C003login1
1/2/2016 9:23:58C003concluir pedido1
1/2/2016 9:24:49C003logout1
1/2/2016 9:20:00C002login1
1/2/2016 9:23:50C002pesquisa: penny farthings1
1/2/2016 9:24:10C002pesquisa: bicicletas1
1/2/2016 9:26:22C002logout1
31/1/2016 11:56:09 C004pesquisa: monociclos1
1/2/2016 9:24:52C004login2

Observações:

  • O conjunto de dados é agrupado por CustId, mas a ordem desses agrupamentos é determinada pelo primeiro carimbo de data/hora de cada cliente. Então, os dados de C003 aparecem antes de C002.
  • Os dados de C001 e C004 geram duas sessões separadas.

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.