SlideShare uma empresa Scribd logo
1 de 25
1
Como lidar com dados
temporais e intervalos com
a linguagem SQL
Mauro Pichiliani (mauro@pichiliani.com.br)
@pichiliani
@databasecast
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
Tópicos
 Dados temporais
 Pesquisas e operações
 SQL nem sempre é o melhor…
 OLAP….?
 Novas abordagens
 Recomendações gerais
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
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
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
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 ociosidade
 Agendamento “inteligente” (scheduling)
 Ajustamento de recursos (adição ou retirada)
 Compreensão de sazonalidade e períodos de
alta/baixa demanda (picos)
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
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
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
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
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
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 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
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
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
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
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
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
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
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
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
Perguntas?
Mauro Pichiliani (mauro@pichiliani.com.br)
@pichiliani
@databasecast
•

Mais conteúdo relacionado

Destaque

7Masters jQuery - Acessibilidade com jQuery Validate, com Deivid Marques
7Masters jQuery - Acessibilidade com jQuery Validate, com Deivid Marques7Masters jQuery - Acessibilidade com jQuery Validate, com Deivid Marques
7Masters jQuery - Acessibilidade com jQuery Validate, com Deivid MarquesiMasters
 
#NoEndState : Plataformas, Produtores e Interfaces no Product tank meetup
#NoEndState : Plataformas, Produtores e Interfaces no Product tank meetup#NoEndState : Plataformas, Produtores e Interfaces no Product tank meetup
#NoEndState : Plataformas, Produtores e Interfaces no Product tank meetupPedro Donati
 
Os Caminhos do Design Mobile - Campus Party 2013
Os Caminhos do Design Mobile - Campus Party 2013Os Caminhos do Design Mobile - Campus Party 2013
Os Caminhos do Design Mobile - Campus Party 2013Horácio Soares
 
QConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
QConSP16 - Apache Cassandra Evoluindo Sistemas DistribuídosQConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
QConSP16 - Apache Cassandra Evoluindo Sistemas DistribuídosEiti Kimura
 
Aprendizado de Máquinas com Azure Machine Learning e R
Aprendizado de Máquinas com Azure Machine Learning e RAprendizado de Máquinas com Azure Machine Learning e R
Aprendizado de Máquinas com Azure Machine Learning e RDiego Nogare
 
CNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous DeliveryCNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous DeliverySamanta Cicilia
 
Como o ViajaNet aumentou suas vendas com SEO
Como o ViajaNet aumentou suas vendas com SEOComo o ViajaNet aumentou suas vendas com SEO
Como o ViajaNet aumentou suas vendas com SEOConversion
 
7Masters jQuery - Eventos em jQuery, com Felquis Gimenes
7Masters jQuery - Eventos em jQuery, com Felquis Gimenes7Masters jQuery - Eventos em jQuery, com Felquis Gimenes
7Masters jQuery - Eventos em jQuery, com Felquis GimenesiMasters
 
Cost Effective Data-Based Content Marketing
Cost Effective Data-Based Content MarketingCost Effective Data-Based Content Marketing
Cost Effective Data-Based Content MarketingKane Jamison
 
Advanced Django Forms Usage
Advanced Django Forms UsageAdvanced Django Forms Usage
Advanced Django Forms UsageDaniel Greenfeld
 
As Media Queries são só um detalhe!
As Media Queries são só um detalhe!As Media Queries são só um detalhe!
As Media Queries são só um detalhe!Edu Agni
 
Mobile First (ou boas razões para investir em Mobile)
Mobile First (ou boas razões para investir em Mobile)Mobile First (ou boas razões para investir em Mobile)
Mobile First (ou boas razões para investir em Mobile)Edu Agni
 
Responsive Design Workflow: Mobilism 2012
Responsive Design Workflow: Mobilism 2012Responsive Design Workflow: Mobilism 2012
Responsive Design Workflow: Mobilism 2012Stephen Hay
 
Flat Design e a Re-Cultura da Interface
Flat Design e a Re-Cultura da InterfaceFlat Design e a Re-Cultura da Interface
Flat Design e a Re-Cultura da InterfaceEdu Agni
 
Past, Present & Future of Recommender Systems: An Industry Perspective
Past, Present & Future of Recommender Systems: An Industry PerspectivePast, Present & Future of Recommender Systems: An Industry Perspective
Past, Present & Future of Recommender Systems: An Industry PerspectiveJustin Basilico
 
Factorization Meets the Item Embedding: Regularizing Matrix Factorization wit...
Factorization Meets the Item Embedding: Regularizing Matrix Factorization wit...Factorization Meets the Item Embedding: Regularizing Matrix Factorization wit...
Factorization Meets the Item Embedding: Regularizing Matrix Factorization wit...Dawen Liang
 

Destaque (20)

7Masters jQuery - Acessibilidade com jQuery Validate, com Deivid Marques
7Masters jQuery - Acessibilidade com jQuery Validate, com Deivid Marques7Masters jQuery - Acessibilidade com jQuery Validate, com Deivid Marques
7Masters jQuery - Acessibilidade com jQuery Validate, com Deivid Marques
 
#NoEndState : Plataformas, Produtores e Interfaces no Product tank meetup
#NoEndState : Plataformas, Produtores e Interfaces no Product tank meetup#NoEndState : Plataformas, Produtores e Interfaces no Product tank meetup
#NoEndState : Plataformas, Produtores e Interfaces no Product tank meetup
 
Os Caminhos do Design Mobile - Campus Party 2013
Os Caminhos do Design Mobile - Campus Party 2013Os Caminhos do Design Mobile - Campus Party 2013
Os Caminhos do Design Mobile - Campus Party 2013
 
QConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
QConSP16 - Apache Cassandra Evoluindo Sistemas DistribuídosQConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
QConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
 
Aprendizado de Máquinas com Azure Machine Learning e R
Aprendizado de Máquinas com Azure Machine Learning e RAprendizado de Máquinas com Azure Machine Learning e R
Aprendizado de Máquinas com Azure Machine Learning e R
 
SPL Datastructures
SPL DatastructuresSPL Datastructures
SPL Datastructures
 
CNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous DeliveryCNQS - Testes Automatizados & Continuous Delivery
CNQS - Testes Automatizados & Continuous Delivery
 
Let's log!
Let's log!Let's log!
Let's log!
 
Como o ViajaNet aumentou suas vendas com SEO
Como o ViajaNet aumentou suas vendas com SEOComo o ViajaNet aumentou suas vendas com SEO
Como o ViajaNet aumentou suas vendas com SEO
 
Layouts Responsivos
Layouts ResponsivosLayouts Responsivos
Layouts Responsivos
 
7Masters jQuery - Eventos em jQuery, com Felquis Gimenes
7Masters jQuery - Eventos em jQuery, com Felquis Gimenes7Masters jQuery - Eventos em jQuery, com Felquis Gimenes
7Masters jQuery - Eventos em jQuery, com Felquis Gimenes
 
Twitter: 10 anos de existência
Twitter: 10 anos de existênciaTwitter: 10 anos de existência
Twitter: 10 anos de existência
 
Cost Effective Data-Based Content Marketing
Cost Effective Data-Based Content MarketingCost Effective Data-Based Content Marketing
Cost Effective Data-Based Content Marketing
 
Advanced Django Forms Usage
Advanced Django Forms UsageAdvanced Django Forms Usage
Advanced Django Forms Usage
 
As Media Queries são só um detalhe!
As Media Queries são só um detalhe!As Media Queries são só um detalhe!
As Media Queries são só um detalhe!
 
Mobile First (ou boas razões para investir em Mobile)
Mobile First (ou boas razões para investir em Mobile)Mobile First (ou boas razões para investir em Mobile)
Mobile First (ou boas razões para investir em Mobile)
 
Responsive Design Workflow: Mobilism 2012
Responsive Design Workflow: Mobilism 2012Responsive Design Workflow: Mobilism 2012
Responsive Design Workflow: Mobilism 2012
 
Flat Design e a Re-Cultura da Interface
Flat Design e a Re-Cultura da InterfaceFlat Design e a Re-Cultura da Interface
Flat Design e a Re-Cultura da Interface
 
Past, Present & Future of Recommender Systems: An Industry Perspective
Past, Present & Future of Recommender Systems: An Industry PerspectivePast, Present & Future of Recommender Systems: An Industry Perspective
Past, Present & Future of Recommender Systems: An Industry Perspective
 
Factorization Meets the Item Embedding: Regularizing Matrix Factorization wit...
Factorization Meets the Item Embedding: Regularizing Matrix Factorization wit...Factorization Meets the Item Embedding: Regularizing Matrix Factorization wit...
Factorization Meets the Item Embedding: Regularizing Matrix Factorization wit...
 

Semelhante a Como lidar com dados temporais e intervalos com a linguagem SQL

ALM - Testes Exploratórios
ALM - Testes ExploratóriosALM - Testes Exploratórios
ALM - Testes ExploratóriosAlan Carlos
 
Mining software repositories
Mining software repositoriesMining software repositories
Mining software repositoriesRafael Rossi
 
Aula modelagem de dados
Aula modelagem de dadosAula modelagem de dados
Aula modelagem de dadosGabriel Moura
 
Analise essencial
Analise essencialAnalise essencial
Analise essencialTiagoSerra
 
Relatorio de pesquisa
Relatorio de pesquisaRelatorio de pesquisa
Relatorio de pesquisacristianyours
 
Conceitos Básicos Sobre Analise de Sistemas
Conceitos Básicos Sobre Analise de SistemasConceitos Básicos Sobre Analise de Sistemas
Conceitos Básicos Sobre Analise de SistemasClayton de Almeida Souza
 
Análise essencial
Análise essencialAnálise essencial
Análise essencialTiago Serra
 
Monitoramento: logs como elementos de primeira ordem
Monitoramento: logs como elementos de primeira ordemMonitoramento: logs como elementos de primeira ordem
Monitoramento: logs como elementos de primeira ordemThaisa Silva
 
Ferramentas da Qualidade
Ferramentas da QualidadeFerramentas da Qualidade
Ferramentas da QualidadeMárcio Hosken
 
Machine learning java ce conference 2012 - fortaleza ce
Machine learning java ce conference 2012 - fortaleza ceMachine learning java ce conference 2012 - fortaleza ce
Machine learning java ce conference 2012 - fortaleza ceLuca Bastos
 
Congresso cf analise_de_dados vshare
Congresso cf analise_de_dados vshareCongresso cf analise_de_dados vshare
Congresso cf analise_de_dados vshareOsvaldo Neto
 
Melhoria continua - Six Sigma - Melhoria de processos (Parte 1 de 2)
Melhoria continua - Six Sigma - Melhoria de processos (Parte 1 de 2)Melhoria continua - Six Sigma - Melhoria de processos (Parte 1 de 2)
Melhoria continua - Six Sigma - Melhoria de processos (Parte 1 de 2)douglas
 
Slides exemplodeprocessoscrum
Slides exemplodeprocessoscrumSlides exemplodeprocessoscrum
Slides exemplodeprocessoscrumSilas Dias
 
Identificando Necessidades e Estabelecendo Requisitos
Identificando Necessidades e Estabelecendo RequisitosIdentificando Necessidades e Estabelecendo Requisitos
Identificando Necessidades e Estabelecendo RequisitosIgor Quintal
 
Identificando Necessidades e Estabelecendo Requisitos
Identificando Necessidades e Estabelecendo RequisitosIdentificando Necessidades e Estabelecendo Requisitos
Identificando Necessidades e Estabelecendo Requisitosinterfaces
 
Business Intelligence e Mídias Sociais
Business Intelligence e Mídias SociaisBusiness Intelligence e Mídias Sociais
Business Intelligence e Mídias SociaisRaquel Camargo
 

Semelhante a Como lidar com dados temporais e intervalos com a linguagem SQL (20)

ALM - Testes Exploratórios
ALM - Testes ExploratóriosALM - Testes Exploratórios
ALM - Testes Exploratórios
 
Apostila ferramentas QT
Apostila ferramentas QTApostila ferramentas QT
Apostila ferramentas QT
 
Mining software repositories
Mining software repositoriesMining software repositories
Mining software repositories
 
Aula modelagem de dados
Aula modelagem de dadosAula modelagem de dados
Aula modelagem de dados
 
Analise essencial
Analise essencialAnalise essencial
Analise essencial
 
Relatorio de pesquisa
Relatorio de pesquisaRelatorio de pesquisa
Relatorio de pesquisa
 
Procedimentos de auditoria amostragem 2016
Procedimentos de auditoria  amostragem 2016Procedimentos de auditoria  amostragem 2016
Procedimentos de auditoria amostragem 2016
 
Conceitos Básicos Sobre Analise de Sistemas
Conceitos Básicos Sobre Analise de SistemasConceitos Básicos Sobre Analise de Sistemas
Conceitos Básicos Sobre Analise de Sistemas
 
Análise essencial
Análise essencialAnálise essencial
Análise essencial
 
Monitoramento: logs como elementos de primeira ordem
Monitoramento: logs como elementos de primeira ordemMonitoramento: logs como elementos de primeira ordem
Monitoramento: logs como elementos de primeira ordem
 
Ferramentas da Qualidade
Ferramentas da QualidadeFerramentas da Qualidade
Ferramentas da Qualidade
 
Ferramentas para qualidade total
Ferramentas para qualidade totalFerramentas para qualidade total
Ferramentas para qualidade total
 
Técnica de Planejamento
Técnica de PlanejamentoTécnica de Planejamento
Técnica de Planejamento
 
Machine learning java ce conference 2012 - fortaleza ce
Machine learning java ce conference 2012 - fortaleza ceMachine learning java ce conference 2012 - fortaleza ce
Machine learning java ce conference 2012 - fortaleza ce
 
Congresso cf analise_de_dados vshare
Congresso cf analise_de_dados vshareCongresso cf analise_de_dados vshare
Congresso cf analise_de_dados vshare
 
Melhoria continua - Six Sigma - Melhoria de processos (Parte 1 de 2)
Melhoria continua - Six Sigma - Melhoria de processos (Parte 1 de 2)Melhoria continua - Six Sigma - Melhoria de processos (Parte 1 de 2)
Melhoria continua - Six Sigma - Melhoria de processos (Parte 1 de 2)
 
Slides exemplodeprocessoscrum
Slides exemplodeprocessoscrumSlides exemplodeprocessoscrum
Slides exemplodeprocessoscrum
 
Identificando Necessidades e Estabelecendo Requisitos
Identificando Necessidades e Estabelecendo RequisitosIdentificando Necessidades e Estabelecendo Requisitos
Identificando Necessidades e Estabelecendo Requisitos
 
Identificando Necessidades e Estabelecendo Requisitos
Identificando Necessidades e Estabelecendo RequisitosIdentificando Necessidades e Estabelecendo Requisitos
Identificando Necessidades e Estabelecendo Requisitos
 
Business Intelligence e Mídias Sociais
Business Intelligence e Mídias SociaisBusiness Intelligence e Mídias Sociais
Business Intelligence e Mídias Sociais
 

Mais de pichiliani

Rastreamento de Objetos em Realidade Virtual e Realidade Aumentada
Rastreamento de Objetos em Realidade Virtual e Realidade AumentadaRastreamento de Objetos em Realidade Virtual e Realidade Aumentada
Rastreamento de Objetos em Realidade Virtual e Realidade Aumentadapichiliani
 
Interfaces hands free para o mundo atual e pós-Corona vírus
Interfaces hands free para o mundo atual  e pós-Corona vírusInterfaces hands free para o mundo atual  e pós-Corona vírus
Interfaces hands free para o mundo atual e pós-Corona víruspichiliani
 
The Effect of Audiences On the User Experience of Conversational Interfaces i...
The Effect of Audiences On the User Experience of Conversational Interfaces i...The Effect of Audiences On the User Experience of Conversational Interfaces i...
The Effect of Audiences On the User Experience of Conversational Interfaces i...pichiliani
 
Machine Learning & Machine Teaching
Machine Learning & Machine TeachingMachine Learning & Machine Teaching
Machine Learning & Machine Teachingpichiliani
 
TJBot: Incorporando um chatbot em um robô
TJBot:  Incorporando um chatbot em um robôTJBot:  Incorporando um chatbot em um robô
TJBot: Incorporando um chatbot em um robôpichiliani
 
Carreira de cientista
Carreira de cientistaCarreira de cientista
Carreira de cientistapichiliani
 
Novidades desenvolvimento
Novidades desenvolvimentoNovidades desenvolvimento
Novidades desenvolvimentopichiliani
 
O papel do DBA no mundo de ciência de dados e machine learning
O papel do DBA no mundo de ciência de dados e machine learningO papel do DBA no mundo de ciência de dados e machine learning
O papel do DBA no mundo de ciência de dados e machine learningpichiliani
 
Introdução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowIntrodução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowpichiliani
 
Alinguagem SQL no mundo NOSQL
Alinguagem SQL no mundo NOSQLAlinguagem SQL no mundo NOSQL
Alinguagem SQL no mundo NOSQLpichiliani
 
Python x R: mas e o Weka?
Python x R: mas e o Weka? Python x R: mas e o Weka?
Python x R: mas e o Weka? pichiliani
 
Rastreamento 3D de objetos para realidade virtual
Rastreamento 3D de objetos para realidade virtualRastreamento 3D de objetos para realidade virtual
Rastreamento 3D de objetos para realidade virtualpichiliani
 
SSD no banco de dados é bom mesmo?
SSD no banco de dados é bom mesmo?SSD no banco de dados é bom mesmo?
SSD no banco de dados é bom mesmo?pichiliani
 
MediaKit 2016 do DatabaseCast
MediaKit 2016 do DatabaseCastMediaKit 2016 do DatabaseCast
MediaKit 2016 do DatabaseCastpichiliani
 
Projeto AMedCA - Concurso Casa conectada 2015
Projeto AMedCA - Concurso Casa conectada 2015Projeto AMedCA - Concurso Casa conectada 2015
Projeto AMedCA - Concurso Casa conectada 2015pichiliani
 
A User Interface Usability Evaluation of the Electronic Ballot Box used in th...
A User Interface Usability Evaluation of the Electronic Ballot Box used in th...A User Interface Usability Evaluation of the Electronic Ballot Box used in th...
A User Interface Usability Evaluation of the Electronic Ballot Box used in th...pichiliani
 
Evaluation of the Android Accessibility API Recognition Rate towards a Better...
Evaluation of the Android Accessibility API Recognition Rate towards a Better...Evaluation of the Android Accessibility API Recognition Rate towards a Better...
Evaluation of the Android Accessibility API Recognition Rate towards a Better...pichiliani
 
Novidades desenvolvimento
Novidades desenvolvimentoNovidades desenvolvimento
Novidades desenvolvimentopichiliani
 
Projeto HTMA - Trand Tremor Measurement Application
Projeto HTMA - Trand Tremor Measurement ApplicationProjeto HTMA - Trand Tremor Measurement Application
Projeto HTMA - Trand Tremor Measurement Applicationpichiliani
 
HTMA: Hand Tremor Measurement Application
HTMA: Hand Tremor Measurement ApplicationHTMA: Hand Tremor Measurement Application
HTMA: Hand Tremor Measurement Applicationpichiliani
 

Mais de pichiliani (20)

Rastreamento de Objetos em Realidade Virtual e Realidade Aumentada
Rastreamento de Objetos em Realidade Virtual e Realidade AumentadaRastreamento de Objetos em Realidade Virtual e Realidade Aumentada
Rastreamento de Objetos em Realidade Virtual e Realidade Aumentada
 
Interfaces hands free para o mundo atual e pós-Corona vírus
Interfaces hands free para o mundo atual  e pós-Corona vírusInterfaces hands free para o mundo atual  e pós-Corona vírus
Interfaces hands free para o mundo atual e pós-Corona vírus
 
The Effect of Audiences On the User Experience of Conversational Interfaces i...
The Effect of Audiences On the User Experience of Conversational Interfaces i...The Effect of Audiences On the User Experience of Conversational Interfaces i...
The Effect of Audiences On the User Experience of Conversational Interfaces i...
 
Machine Learning & Machine Teaching
Machine Learning & Machine TeachingMachine Learning & Machine Teaching
Machine Learning & Machine Teaching
 
TJBot: Incorporando um chatbot em um robô
TJBot:  Incorporando um chatbot em um robôTJBot:  Incorporando um chatbot em um robô
TJBot: Incorporando um chatbot em um robô
 
Carreira de cientista
Carreira de cientistaCarreira de cientista
Carreira de cientista
 
Novidades desenvolvimento
Novidades desenvolvimentoNovidades desenvolvimento
Novidades desenvolvimento
 
O papel do DBA no mundo de ciência de dados e machine learning
O papel do DBA no mundo de ciência de dados e machine learningO papel do DBA no mundo de ciência de dados e machine learning
O papel do DBA no mundo de ciência de dados e machine learning
 
Introdução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlowIntrodução ao Deep Learning com o TensorFlow
Introdução ao Deep Learning com o TensorFlow
 
Alinguagem SQL no mundo NOSQL
Alinguagem SQL no mundo NOSQLAlinguagem SQL no mundo NOSQL
Alinguagem SQL no mundo NOSQL
 
Python x R: mas e o Weka?
Python x R: mas e o Weka? Python x R: mas e o Weka?
Python x R: mas e o Weka?
 
Rastreamento 3D de objetos para realidade virtual
Rastreamento 3D de objetos para realidade virtualRastreamento 3D de objetos para realidade virtual
Rastreamento 3D de objetos para realidade virtual
 
SSD no banco de dados é bom mesmo?
SSD no banco de dados é bom mesmo?SSD no banco de dados é bom mesmo?
SSD no banco de dados é bom mesmo?
 
MediaKit 2016 do DatabaseCast
MediaKit 2016 do DatabaseCastMediaKit 2016 do DatabaseCast
MediaKit 2016 do DatabaseCast
 
Projeto AMedCA - Concurso Casa conectada 2015
Projeto AMedCA - Concurso Casa conectada 2015Projeto AMedCA - Concurso Casa conectada 2015
Projeto AMedCA - Concurso Casa conectada 2015
 
A User Interface Usability Evaluation of the Electronic Ballot Box used in th...
A User Interface Usability Evaluation of the Electronic Ballot Box used in th...A User Interface Usability Evaluation of the Electronic Ballot Box used in th...
A User Interface Usability Evaluation of the Electronic Ballot Box used in th...
 
Evaluation of the Android Accessibility API Recognition Rate towards a Better...
Evaluation of the Android Accessibility API Recognition Rate towards a Better...Evaluation of the Android Accessibility API Recognition Rate towards a Better...
Evaluation of the Android Accessibility API Recognition Rate towards a Better...
 
Novidades desenvolvimento
Novidades desenvolvimentoNovidades desenvolvimento
Novidades desenvolvimento
 
Projeto HTMA - Trand Tremor Measurement Application
Projeto HTMA - Trand Tremor Measurement ApplicationProjeto HTMA - Trand Tremor Measurement Application
Projeto HTMA - Trand Tremor Measurement Application
 
HTMA: Hand Tremor Measurement Application
HTMA: Hand Tremor Measurement ApplicationHTMA: Hand Tremor Measurement Application
HTMA: Hand Tremor Measurement Application
 

Como lidar com dados temporais e intervalos com a linguagem SQL

  • 1. 1 Como lidar com dados temporais e intervalos com a linguagem SQL Mauro Pichiliani (mauro@pichiliani.com.br) @pichiliani @databasecast
  • 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 Tópicos  Dados temporais  Pesquisas e operações  SQL nem sempre é o melhor…  OLAP….?  Novas abordagens  Recomendações gerais
  • 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 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 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 Exemplo 2:  Cronograma (gráfico de Gantt)
  • 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 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 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 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 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 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 Exemplo pesquisa  Encontre o padrão  Encontre as relações
  • 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 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 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 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 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 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 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 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 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