• Nenhum resultado encontrado

Limpeza e transformação de dados

N/A
N/A
Protected

Academic year: 2021

Share "Limpeza e transformação de dados"

Copied!
5
0
0

Texto

(1)

SAD: 4º Projecto DW

Limpeza e

transformação de dados

Suponha a operação de junção aproximada, que pode ser expressa pelo operador

Match da framework de limpeza e transformação e dados AJAX. Pretende utilizar

esta operação para detectar registos aproximadamente duplicados de clientes. A

tabela

Clientes

tem o seguinte esquema:

Clientes(clId, nome)

e resultou da integração de duas tabelas

Cliente(Id, nome)

e

Customer(custId,

name)

. A chave

clId

não pode ser utilizada para detectar duplicados aproximados.

Consideram-se duplicados aproximados os registos de Clientes cuja distância de

edição entre os seus nomes é inferior ou igual a 2. Considere uma função de

distância de edição

editDist(s1, s2)

que aceita como entradas duas cadeias de

caracteres

s1, s2

e devolve um número inteiro que representa a distância de edição

entre as duas cadeias.

a) (1pt) Escreva em SQL uma interrogação que devolve os pares de identificadores de

clientes (clID1, clID2) que correspondem a clientes aproximadamente duplicados.

b) (3pts) Que problema pode trazer a execução desta interrogação num SGBD

Relacional? Escreva o pseudo-código de um algoritmo de execução para esta

operação, potencialmente mais eficiente que o escolhido pelo optimizador do

SGBDR, que podia ser considerado como equivalente (ou seja, o resultado era o

(2)



Select c1.clId clId1, c2.clId clId2

from Clientes C1, Clientes C2

where editDistance (C1.nome,

C2.nome) <= 2

and C1.nome != C2.nome

b) Existe um problema de desempenho: o SGBD executa o produto

cartesiano entre as duas tabelas (ou da tabela por ela própria) e

aplica a função de distância a cada tuplo do produto cartesiano

Pseudo-código de um algoritmo alternativo baseado no tamanho das

cadeias de caracteres para filtrar os tuplos de entrada ao produto

cartesiano.

cl1 ~ cl2 se dist(cl1.nome, cl2.nome) <= 2

A optimização consiste em determinar um mapeamento f() e uma

função dist’(), tal que:

Dist’(f(cl1.nome), f(cl2.nome)) <= 2 and

Dist’(f(cl1.nome), f(cl2.nome)) < = dist (cl1.nome, cl2.nome)

Vamos usar:

f(string) = len(string)

dist’(x,y) = |x – y|

(3)

Input: Π

nome

(Clientes), editDist, 2

{

P – cjto de partições de Π

nome

(Clientes) de acordo com len()

Para cada partição p1 ∈ P {

Para cada partição P2 ∈ P tal que |P1.len –P2.len| <= 2 do {

para cada s1

P1 do {

para cada s2

P2 do {

if editDist(s1, s2) < = 2 then

output = output ∪ (s1, s2) }}}}}

SQL Server 2005 Integration

Services

Siga as cinco lições do tutorial do Integration Services. Após a 5ª lição, terá aprendido como ler registos de um ficheiro (ou mais) de texto, verificar se determinados valores contidos nas linhas desse ficheiro pertencem às tabelas de dimensões DimCurrency e DimTime

(operações de lookup) e a carregar as linhas que obedeçam às condições das operações de lookup para a tabela de factos FactCurrencyRate. Terá também aprendido a escrever, numa tabela de log, os registos do ficheiro de entrada que contenham valores errados e que por isso não possam ser processados pelas operações de lookup.

a) Assuma um único ficheiro de entrada SampleCurrencyData.txt (como nas lições 1 e 2) e que o ficheiro de entrada é escrito numa tabela cujas colunas correspondem às colunas do ficheiro. Dê a essa tabela o mesmo nome do ficheiro. Escreva em SQL uma interrogação para cada operação de lookup. Suponha que o resultado da primeira operação de lookup é escrito numa tabela intermédia com nome OutLookupCurrency.

b) Escreva em SQL o conjunto de instruções SQL que correspondem à sequência: Lookup Currency Key, Lookup Date Key, Sample OLE DB Destination. Assuma a criação de tabelas intermédias para armazenar o resultado de algumas interrogações.

c) Como conseguiria modificar uma das interrogações que correspondem às operações de

Lookup de modo a escrever os registos de entrada errados para uma tabela de saída, denominada LogTable?

d) Como se comporta o SQL quando existe um erro no processamento de uma interrogação,

por exemplo quando se tenta executar uma instrução de insert de vários tuplos numa tabela e um dos tuplos viola a restrição de chave primária? O que acontece aos outros tuplos que

(4)

SampleCurrencyData(AverageRate, CurrencyId,

CurrencyDate, EndOfDayRate)

DimCurrency(CurrencyKey, CurrencyAlternateKey,

CurrencyName)

DimTime(TimeKey, FullDateAlternateKey,

DayNumberOfWeek, EnglishDayNameOfWeek, ...

FactCurrencyRate(CurrencyKey, TimeKey,

AverageRate, EndOfDayRate)

a) e b)Select S.AverageRate, S.CurrencyDate,

S.EndOfDayRate, D.CurrencyKey

into OutLookupCurrency

from SampleCurrencyData S, DimCurrency D

where S.currencyId = D.CurrencyAlternateKey

select C.CurrencyKey, T.TimeKey, C.AverageRate,

C.EndOfDayRate

into FactCurrencyRate

from outLookupCurrency C, DimTime D

(5)

c) A primeira interrogação, por exemplo, tinha

que ser acompanhada de outra interrogação:

Select * into LogTable

From SampleCurrencyDate

Where CurrencyId not in

(select CurrencyId

from OutLookupCurrency)

d) A execução da instrução pára assim

que é violada a restrição de integridade.

Todos os outros tuplos que já foram

inseridos não o são porque uma

instrução SQL corresponde a uma

transacção.

Referências

Documentos relacionados

1 mostra que não houve diferença significativa (p &gt; 0,05) entre os três materiais pesquisados, no que se refere às medidas das distâncias entre material e parede

Quanto aos testes antimicrobianos, constata-se na tabela 3 que nem todas as soluções irrigadoras avaliadas apresentaram atividade antimicrobiana in vitro, contra todos

Outro problema que deve ser evitado é que, dentro de uma mesma chave, mensagens destinadas a uma saída que esteja livre esperem atrás de mensagens destinadas a

Este trabalho buscou, através de pesquisa de campo, estudar o efeito de diferentes alternativas de adubações de cobertura, quanto ao tipo de adubo e época de

Basílica de Nossa Senhora do Rosário de Fátima Domingo XXX do Tempo Comum.

1 (uma) parcela R$ 120,00 Auxílio Moradia Destinado, exclusivamente, aos estudantes de cursos presenciais em situação de vulnerabilidade social, com matrícula e

Com o objetivo de compreender como se efetivou a participação das educadoras - Maria Zuíla e Silva Moraes; Minerva Diaz de Sá Barreto - na criação dos diversos

Em condições em que a temperatura do termômetro globo é menor que a temperatura do termômetro de bulbo seco, o ITEG-500 permite através dessa configuração, realizar uma