Fala dataholics, no post de hoje compartilharei mais uma função adicionada na DTSTOOLS.
Se você ainda não sabe o que é a DTSTOOLS corre nesse post aqui:
Se você já tiver a DTSTOOLS configurada no seu cluster Databricks, basta rodar aí o comando dtsTable.Help() e você verá que já está na versão 0.0.9.
Para quem já tem instalado no cluster ela fica nessa aba libraries:
Para quem quiser instalar apenas no contexto do Notebook, basta usar o comando abaixo:
pip install --upgrade dtstools
Descobrindo a versão atual do DTSTOOLS:
Funções disponíveis:
Help - Informações rápidas sobre o DTSTOOLS
tableSize - Descubra o verdadeiro tamanho da sua tabela
tableMaintenance - Apliquei Vacuum e Optimize na sua tabela
lastMaintenance (new) - Veja as últimas manutenções aplicadas na sua tabela
Hoje mostrarei a função lastMaintenance, ela foi criada para varrer todo o log da sua tabela Delta e sumarizar as informações das manutenções que estão ocorrendo, isso pode ser útil para você saber se aquela tabela possui rotina de manutenção, quando foi a última vez que aplicaram manutenção e as configurações utilizadas.
Esse é o retorno da função, então veja que rapidamente descubro quais manutenções aquela tabela já teve e quando teve e quais parâmetros aplicados.
Temos as seguintes colunas:
operation - Define se é Vacuum ou Optimize
earliest - Última vez que a operação foi executada
oldest - Operação mais antiga encontrada no log
occurrences - Quantidade de ocorrências identificadas no log
estimated_frequency - Frequência estimada baseada na quantidade de ocorrências
params - Parâmetros utilizados na operação
metrics - Métricas agrupadas de todas as operações
Lembrando que o delta_log é mantido por 30 dias, logo essa analise é sempre em cima dessa retenção, se achar viável pode ajustar essa retenção com esse parâmetro delta.logRetentionDuration.
Onde pode te ajudar?
Durante uma investigação de problemas ou para aplicar melhorias, é muito importante saber se aquela tabela tem alguma rotina de manutenção e quando ela teve alguma manutenção recente, essa função simplificará a forma que você visualiza os logs, sumarizando o resultado para você.
Imagine que você se depara com uma tabela dessa com 15 TB de dados, usando a função tableSize() para descobrir o tamanho real dela, a primeira coisa que você vai querer saber é como esta a manutenção dela.
Você consegue notar que a execução de Vacuum está usando 168 horas de retenção e liberou nos últimos 30 dias 11 TB, isso mesmo, liberou 11 TB de logs nos últimos 30 dias, ou seja, é uma rotina eficiente.
Note que o Optimize esta usando um zOrder por uma coluna de data, será que é a melhor coluna para um zOrder?
Você talvez vai se deparar com casos de tabelas que não tenham rotinas de manutenção configuradas, ou parcialmente configuradas, como é o caso dessa tabela que nunca teve um Optimize.
Espero que essas funções te ajude, aos poucos vamos incrementando a DTSTOOLS, já visando as novidades como o Delta Kernel e Delta lake 3.0, fica ligado na DTSTOOLS no PyPI.
Fiquem bem e até a próxima.