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 datatypetimestamp
;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.
O segundo motivo da conversão é seguir o padrão do Posix Time (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.
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.
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.
IMPORTANTE
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.
Links uteis
https://bitbucket.org/duratex/arquitetura-dados-sap_s4/src/master/
https://bitbucket.org/duratex/arquitetura-dados-sap_ecc/src/master/
https://docs.databricks.com/sql/language-manual/sql-ref-syntax-aux-conf-mgmt-set-timezone.html