1
Como lidar com dados
temporais e intervalos com
a linguagem SQL
Mauro Pichiliani (mauro@pichiliani.com.br)
@pichiliani
@...
2
Quem sou eu
• Mestre e doutorando em computação pelo ITA
• Escritor da SQL Magazine, Fórum Access, Java
Magazine, SQLSer...
3
Tópicos
 Dados temporais
 Pesquisas e operações
 SQL nem sempre é o melhor…
 OLAP….?
 Novas abordagens
 Recomendaç...
4
Dados temporais
 Temporal Event Data
 Eventos com timestamp (data + hora)
 Múltiplos registros
 Intervalos ou períod...
5
Dados temporais: características
 “Gap” entre eventos/intervalos
 Posicionamento e sobreposição (intervalos)
 Em um m...
6
Exemplo 1:
 Registros médicos
 Histórico da vida do paciente:
 Medicamentos
 Cirurgias
 Internações
 Tratamento em...
7
Exemplo 2:
 Cronograma (gráfico de Gantt)
8
Exemplo 3:
 Agendamento e calendário
 Sistemas de reserva (hotéis, vôos, carros)
 Aplicações:
 Identificar ociosidad...
9
Exemplo 4:
 Logs de servidores
 Ordem de eventos (início, manutenção, parada,
etc)
 Intervalos paralelos geram efeito...
10
Exemplo 5:
 Análise de eventos de vida política
 Durante um mandanto, quais CPIs, comissões
especiais e outros evento...
11
Exemplo 6:
 Análise esportiva de atletas/equipes, inclusive e-
sports
 Identificação de períodos dentro da partida
(r...
12
Exemplo 7:
 Análise de navegação em sites web (e-commerce)
 E-commerce quer vender cada vez mais e investe
muito em:
...
13
Pesquisas
 Basicamente é análise do passado
 “Estudar o passado para não repetir
os mesmos erros no futuro…”
 Dois t...
14
Exemplo pesquisa
 Encontre o padrão
 Encontre as relações
15
Operações
16
SQL nem sempre é o melhor...
 SQL para “quais pacientes não tiveram um ataque cardíaco
enquanto tomavam o medicamento ...
17
Que tal um novo SQL?
 Temporal databases: TimeDB, Oracle Workspace Manager,
Temporal Tables (SQL Server 2016)
 TSQL2:...
18
E o NoSQL?
 Consultas temporais com um NoSQL de documentos (ex: MongoDB)
db.ColData.find({….}).find({….}).find({….})…....
19
Não vamos esquecer o OLAP….
 Tempo é muito importante em OLAP
 Exemplos de dimensões de tempo:
 Geralmente uso de da...
20
Novas abordagens
 Especificar consulta por ícones
 Exemplo de interface gestual para SQL no mobile: vídeo “Querying
w...
21
Controles e interfaces
 Modelagem específica sempre ajuda
 Alguns controles são muito úteis:
 Zoombar
 Scrollbar co...
22
Demo: EventFlow
 Demo 1: EventFlow
com dados de pacientes
em um pronto-socorro(ER)
 Demo 2: EventFlow
com dados de jo...
23
Recomendações gerais
 Mistura interface interativa + ferramenta de consulta
 Gráficos + elementos visuais + filtros
...
24
Conclusão
 Dados temporais estão por todos os lugares
 Eventos, períodos e intervalos
 Várias possibilidades para an...
25
Perguntas?
Mauro Pichiliani (mauro@pichiliani.com.br)
@pichiliani
@databasecast
•
Próximos SlideShares
Carregando em…5
×

Como lidar com dados temporais e intervalos com a linguagem SQL

2.226 visualizações

Publicada em

A manipulação de dados por meio de intervalos de datas é uma das poucas tarefas na qual a linguagem SQL não é muito útil. O motivo é operações como intersecção , precedência, combinação e operações relacionadas a intervalos de datas requerem a construções de instruções SQL muito complexas e com pouca manutenabilidade. Esta palestra vai apresentar os principais problemas relacionados à pesquisas por intervalos de data e explicar porquê a linguagem SQL não é adequada para lidar com eles. Em seguida a palestra vai se conentrar nas soluções existentes, incluindo as extensões da linguagem SQL para manipulação de data, interfaces para ferramentas OLAP e ferramentas específicas para pesquisas por intervalo.

Publicada em: Tecnologia
0 comentários
3 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
2.226
No SlideShare
0
A partir de incorporações
0
Número de incorporações
1.317
Ações
Compartilhamentos
0
Downloads
9
Comentários
0
Gostaram
3
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Como lidar com dados temporais e intervalos com a linguagem SQL

  1. 1. 1 Como lidar com dados temporais e intervalos com a linguagem SQL Mauro Pichiliani (mauro@pichiliani.com.br) @pichiliani @databasecast
  2. 2. 2 Quem sou eu • Mestre e doutorando em computação pelo ITA • Escritor da SQL Magazine, Fórum Access, Java Magazine, SQLServerCentral.com e outras • Colaborador do iMasters há 14 anos • Autor do livro “Conversando sobre banco de dados” • Co-produtor do podcast DatabaseCast • Consultor independente e autor de cursos on-line
  3. 3. 3 Tópicos  Dados temporais  Pesquisas e operações  SQL nem sempre é o melhor…  OLAP….?  Novas abordagens  Recomendações gerais
  4. 4. 4 Dados temporais  Temporal Event Data  Eventos com timestamp (data + hora)  Múltiplos registros  Intervalos ou períodos:  Fechados (inicio e fim)  Abertos (sem começo e/ou fim)  Período dentro de período  Duração
  5. 5. 5 Dados temporais: características  “Gap” entre eventos/intervalos  Posicionamento e sobreposição (intervalos)  Em um mesmo registro  Em registros diferentes  Ordem de ocorrência de eventos/intervalos é importante!  Quero os registros onde os eventos A, B, C, e D aconteceram nesta ordem ou todos os registros onde esta ordem NÃO aconteceu!  Quais registros contém intervalos onde os eventos E1, E2 e E3 aconteceram nesta sequência ou em qualquer variação desta sequência?
  6. 6. 6 Exemplo 1:  Registros médicos  Histórico da vida do paciente:  Medicamentos  Cirurgias  Internações  Tratamento em pronto-socorro  Exames  Sintomas  Detectar padrões pode auxiliar políticas públicas, modificações de posologia e descobrir fatos relevantes para o tratamento
  7. 7. 7 Exemplo 2:  Cronograma (gráfico de Gantt)
  8. 8. 8 Exemplo 3:  Agendamento e calendário  Sistemas de reserva (hotéis, vôos, carros)  Aplicações:  Identificar ociosidade  Agendamento “inteligente” (scheduling)  Ajustamento de recursos (adição ou retirada)  Compreensão de sazonalidade e períodos de alta/baixa demanda (picos)
  9. 9. 9 Exemplo 4:  Logs de servidores  Ordem de eventos (início, manutenção, parada, etc)  Intervalos paralelos geram efeitos colaterais  Identificação de anomalias
  10. 10. 10 Exemplo 5:  Análise de eventos de vida política  Durante um mandanto, quais CPIs, comissões especiais e outros eventos/intervalos o político particiou?  Quais votações o representante particiou e como foi o seu voto em cada uma delas?  Existe um padrão de intervalos e faltas na legislatura de candidatos ou partidos no senado ou na câmara?  Análises podem ajudar a identificar comportamentos intencionais não percebidos pelo público/imprensa  Possibilidade de ajudar na divulgação das atividades de um político  Descoberta de fraudes, comportamento indecoroso ou corrupção
  11. 11. 11 Exemplo 6:  Análise esportiva de atletas/equipes, inclusive e- sports  Identificação de períodos dentro da partida (retranca ou ofensivo)  Eventos individuais por jogador. Ex: estatísticas do basquete  Descoberta de estratégias e táticas a partir da análise de eventos. Ex: rush em um jogo de RTS  Detecção de fraquezas/vulnerabilidades de oponentes durante intervalos ou sequência de eventos
  12. 12. 12 Exemplo 7:  Análise de navegação em sites web (e-commerce)  E-commerce quer vender cada vez mais e investe muito em:  Sistemas de recomendação  Melhorias no design do site  Busca melhor  Poucas análises por intervalos de espera entre páginas e eventos  Detectar padrão de eventos/intervalos ajuda a compreender melhor comportamento do usuário  Pode fornecer novas “features” para algoritmos de predição de compra/não compra, classificação de perfis e previsão de avaliação de itens
  13. 13. 13 Pesquisas  Basicamente é análise do passado  “Estudar o passado para não repetir os mesmos erros no futuro…”  Dois tipos de pesquisas:  Entendimento intra-registro (ordem)  Entendimento inter-registro (padrão)  Geralmente procuramos encontrar padrões de eventos/intervalos  Mineração de dados para prever “gaps” ou intervalos  Classificação de comportamentos por intervalos
  14. 14. 14 Exemplo pesquisa  Encontre o padrão  Encontre as relações
  15. 15. 15 Operações
  16. 16. 16 SQL nem sempre é o melhor...  SQL para “quais pacientes não tiveram um ataque cardíaco enquanto tomavam o medicamento A e B simultaneamente” Select distinctt1.patid,t1.drug,t1.dispensedate,t1.nextdrug,t1.nextdispensedate From (select distinct patid,dispensedate, lead(dispensedate,1) over(orderbypatid,dispensedate,drug) nextdispensedate, drug, lead (drug,1) over (orderbypatid,dispensedate,drug) nextdrug From DRUGTBL wheredrugin(’DRUGA’,’DRUGB’))t1, EVENTt2 wheret1.patid=t2.patidand t2.ICD9=’STROKE’and ((t1.drug=’DRUGA’andt1.nextdrug=’DRUGB’)and (t1.dispensedate=t1.nextdispensedate)and (t1.nextdispensedate<t2.eventstartort1.dispensedate>t2.eventend));  Arquivo SQL_ORACLE_STROKE.SQL  Recursos “pobres”:  BETWEEN, >, >= , <, <= e =  Índices? Particionamento?  Funções: DATEDIFF(), DATEPART(), etc  Uso de subconsultas, OVER(), LEAD() , CTE e outros
  17. 17. 17 Que tal um novo SQL?  Temporal databases: TimeDB, Oracle Workspace Manager, Temporal Tables (SQL Server 2016)  TSQL2: Temporal Query Language  Operador OVERLAPS(), CONTAINED IN… e outros SELECT SUM(N.Cost), SUM(N2.Cost) VALID VALID(NI) FROM NBC_FB_Insertion AS NI NI2, NBCShows AS N N2 WHERE NI.GameName = N.ShowName AND VALID(NI) OVERLAPS VALID(N) AND NI2.GameName = NS2.ShowName AND VALID(NI2) OVERLAPS VALID(N2) AND TRANSACTION(NI2) OVERLAPS DATE ’now - 14 days’ AND TRANSACTION(N2) OVERLAPS DATE ’now - 14 days’ GROUP BY VALID(NI) USING MONTH  Tutorial: http://bit.ly/1OsF5NZ
  18. 18. 18 E o NoSQL?  Consultas temporais com um NoSQL de documentos (ex: MongoDB) db.ColData.find({….}).find({….}).find({….})….  BitemporalDB: camada OO temporal sobre o MongoDB (http://bit.ly/1KgSwlm)  Exemplo: arquivo BitemporalTest.java  Imagine ter que montar uma query temporal para processamento com map/reduce em Haddop ou similar… case Ebay (http://bit.ly/1MgECzh)
  19. 19. 19 Não vamos esquecer o OLAP….  Tempo é muito importante em OLAP  Exemplos de dimensões de tempo:  Geralmente uso de dashboards e, no máximo, um controle treeview dentro de tabela dinâmica  Gráficos dinâmicos (drill down e drill up)
  20. 20. 20 Novas abordagens  Especificar consulta por ícones  Exemplo de interface gestual para SQL no mobile: vídeo “Querying without keyboard” - http://bit.ly/1CSy0oC Registros onde evento A aconteceu pelo menos três dias depois do evento B Registros onde infarto aconteceu enquanto tomava droga A Registros com evento ER, sem evento No Specialty e com evento Discharged
  21. 21. 21 Controles e interfaces  Modelagem específica sempre ajuda  Alguns controles são muito úteis:  Zoombar  Scrollbar com intervalos (range)  Controle para gráfico de Gant  Interfaces interativas para descoberta de padrões
  22. 22. 22 Demo: EventFlow  Demo 1: EventFlow com dados de pacientes em um pronto-socorro(ER)  Demo 2: EventFlow com dados de jogadores de StarCraft 2
  23. 23. 23 Recomendações gerais  Mistura interface interativa + ferramenta de consulta  Gráficos + elementos visuais + filtros  Tamanho x modelagem  Tenha lib/framework específico para operações de tempo. Exemplo: Time-Period-Library-for-NET (http://bit.ly/1Jt4wL0) e Joda-Time (http://bit.ly/1IeTjBj)  Saiba lidar com variações de tempo:  Anos bissextos  Fuso horário (UTC, etc)  Adição de segundos  Precisão (segundos, milisegundos, minutos)
  24. 24. 24 Conclusão  Dados temporais estão por todos os lugares  Eventos, períodos e intervalos  Várias possibilidades para análises e operações  SQL ainda é complexo para várias consultas envolvendo intervalos e eventos  Abordagem mista: interface amigável com backend robusto  Não é vergonha fazer decteção de padrões “manualmente”  Bons e maus cases precisam ser mais detalhados e divulgados fora da área acadêmica
  25. 25. 25 Perguntas? Mauro Pichiliani (mauro@pichiliani.com.br) @pichiliani @databasecast •

×