/
Timezone de colunas timestamp Databricks - SAP

Este documento tem o objetivo de explicar e exemplificar o formato do dado de horas do tipo timezone utilizado no Databricks em seu armazenamento e visualização.

Durante o processo de ingestão dos dados vindos do SAP, é feita uma tratativa/limpeza nos dados para adequá-los ao formato de armazenamento do Databricks, visando sempre o formato mais genérico e limpo o possível para que possa atender os mais diferentes tipo de cenários que esse dados irão atender.

No sistema SAP possui um tipo de campo de dados denominado TIMS referente a horas, sem a data, exemplo: 13:30:00. Link de referencia https://www.se80.co.uk/sap-data-element/?name=tims

O dado está sendo lido inicialmente em um formato long (Unix time) e o armazenamento desse dado no Databricks está sendo feito da seguinte forma:

  • Conversão de long para datatype timestamp;

  • Soma de GMT+3;


Conversão de long para datatype timestamp

Um dos motivos da conversão é para manter uma melhor usabilidade dos usuários na utilização desses tipos de dados no Databricks.

exemplo de coluna recém lida sem conversão e com conversão

O segundo motivo da conversão é seguir o padrão do Posix Time (https://pt.wikipedia.org/wiki/Era_Unix) para posteriormente ser possível, tanto converter o horário padrão do timezone utilizando funções GMT, quanto proporcionar a possibilidade de utilização de funções nativas para trabalhar com horas.

Exemplo de adição de 10 minutos a coluna de horas

Obs.: Não deverá ser considerado o valor da data 1970-01-01 como data e sim apenas o valor do horário contido no campo, pois naturalmente no SAP todas as tabelas que possuem colunas de horas, são acompanhadas, com uma coluna de data, e essa sim, poderá ser considerada em cálculos para obter a data deste registro.

Campo ERSDA representa data de criação enquanto CREATED_AT_TIME representa hora de criação deste registro


Soma de GMT+3

Para todas as colunas do tipo hora, que são feitas as ingestões do SAP ao Databricks, será somado o valor de GMT+3. Isto ocorrerá pois o SAP envia para o Databricks o registro da hora no formato GMT-3 e para, poder mantermos a interoperabilidade entre sistemas, permanecemos no padrão GMT+0.

Exemplo de coluna em um cluster com o GMT padrão
Exemplo da mesma coluna acima, porém em um cluster com GMT-3 configurado


Emoji :warning: IMPORTANTE Emoji :warning:

Fique atento a visualização do GMT que está utilizando para efetuar suas querys no Databricks em relação as tabelas dos databases SAP, caso esteja utilizando o formato padrão GMT+0 (+000 no final da data), utilize a função de SET TIMEZONE para especificar o GMT com a sua necessidade, ou em caso de grandes equipes que compartilharão os mesmo recursos de GMT, é recomendável a solicitação a equipe de Arquitetura de Dados um cluster previamente configurado com o timezone necessário.

Exemplo de configuração de timezone para uma sessão, após o reinicio do cluster voltara ao timezone padrão


Links uteis