23
Ferramenta ETL – SQL Server Integration Services Sobre o ETL  A sigla ETL vem de Extraction, Transformation and Loader que consiste na ext raç ão, Tra nsf ormação e Carga de Dados ger alment e de um ambiente Transacional para um ambiente Dimensional (Isso em um projeto de DW). Uma ferramenta de ETL deve ter funcionalidades que permitam a extração de dados de vir tua lmente todas as fon tes de inf ormação, carga em divers os destinos diferentes e ainda permitir realizar transformações para que o dado seja manipulado e armazenado de acordo com a necessidade. Além disso, performance, robustez, tolerância à falhas (restart e recovery), escalabilidade e facilidade são exigidos de uma ferramenta ETL, características que somente uma aplicação projetada para essa finalidade pode possuir, daí a necessidade de uma ferramenta de ETL. Sobre a Ferramenta: SQL Server Integr at ion Serv ices (SSI S) é uma das caracterís tic as mais poderosas do SQL Ser ver 200 5. É classificada como uma fer ramenta de Business Intelligence e de uma maneira robusta carrega os dados e realiza tarefas de transformação em um fluxo de dados. O Business Intelligence Development Studio (BIDS) é a ferramenta principal que nós iremos utilizar, cuja base é a interface do Visual Studio 2005. Para iniciar o ap licativo clique em “SQL Server Bu si ness Intelli ge nce Development Studio”: Para criar um projeto novo clique em File New Project:

ETL Manual Integration Services

Embed Size (px)

Citation preview

Page 1: ETL Manual Integration Services

7/30/2019 ETL Manual Integration Services

http://slidepdf.com/reader/full/etl-manual-integration-services 1/23

Ferramenta ETL – SQL Server Integration Services

Sobre o ETL

 A sigla ETL vem de Extraction, Transformation and Loader que consiste na

extração, Transformação e Carga de Dados geralmente de um ambienteTransacional para um ambiente Dimensional (Isso em um projeto de DW).

Uma ferramenta de ETL deve ter funcionalidades que permitam a extração dedados de virtualmente todas as fontes de informação, carga em diversosdestinos diferentes e ainda permitir realizar transformações para que o dadoseja manipulado e armazenado de acordo com a necessidade. Além disso,performance, robustez, tolerância à falhas (restart e recovery), escalabilidade efacilidade são exigidos de uma ferramenta ETL, características que somenteuma aplicação projetada para essa finalidade pode possuir, daí a necessidadede uma ferramenta de ETL.

Sobre a Ferramenta:

SQL Server Integration Services (SSIS) é uma das características maispoderosas do SQL Server 2005. É classificada como uma ferramenta deBusiness Intelligence e de uma maneira robusta carrega os dados e realizatarefas de transformação em um fluxo de dados.

O Business Intelligence Development Studio (BIDS) é a ferramenta principalque nós iremos utilizar, cuja base é a interface do Visual Studio 2005.

Para iniciar o aplicativo clique em “SQL Server Business IntelligenceDevelopment Studio”:

Para criar um projeto novo clique em File New Project:

Page 2: ETL Manual Integration Services

7/30/2019 ETL Manual Integration Services

http://slidepdf.com/reader/full/etl-manual-integration-services 2/23

Para criar o projeto em questão (ETL) escolha “Integration Service Project”:

Preencha os campos adequadamente:Name: Digite o nome do seu projeto. Ex: Projeto Aula ETLLocation: Use o botão “Browse” para escolher o diretório onde os arquivos doseu projeto serão gravados. Ex: C:\Aula BI

Neste momento você acaba de criar um Projeto de construção ETL. Aferramenta já inicia com a criação de um Package.

Packages (Pacotes)

Principal elemento do SSIS. Um package é uma coleção de tarefas que éexecutada seguindo um fluxo de dados pré-estabelecido. Uma package é salvacomo um arquivo .DTSX.

 A idéia é que criemos um Package para cada tabela que precisamos carregar de dados. Pensando em um modelo dimensional de dados, iremos criar umpackage para cada tabela dimensão e para a tabela de fatos.

Para que possamos acessar as tabelas da base de dados de origem e da base

de dados de destino, precisamos criar uma conexão com os bancos de dadosonde se encontram estas tabelas. Devemos criar uma conexão para cadabanco de dados.

Page 3: ETL Manual Integration Services

7/30/2019 ETL Manual Integration Services

http://slidepdf.com/reader/full/etl-manual-integration-services 3/23

Connection Manager 

Para criar uma conexão com um Banco de Dados, clique com o botão direitona área “Connection Manager” e escolha “New OLE DB Connection”. No geralpodem ser qualquer fonte de dados OLE-DB tal qual SQL Server, Oracle, DB2. 

Configurando “Connection Manager”:

Server Name: Escolha ou digite o nome do servidor.Log on to the Server : Escolha o modo de logar no servidor de dados do

SQLServer. Na faculdade estamos utilizando a própria autenticação doWindows.Select or enter a database name: Escolha o nome do banco de dados quevocê deseja conectar.

Page 4: ETL Manual Integration Services

7/30/2019 ETL Manual Integration Services

http://slidepdf.com/reader/full/etl-manual-integration-services 4/23

Data Sources

Data sources representam as conexões que poderão ser usadas para umafonte de dados ou um destino. Crie um Data source para cada conexão.

Para incluir um Data Source, vá para o “Solution Explorer” e clique com obotão direito em “Data Source” e depois clique em “New Data Source”.

 Escolha a conexão na lista à esquerda e clique em Finish.

Caso a conexão não tenha sido criada ainda, clique em “New”. Irá aparecer atela de Connection Manager já explicada anteriormente.

Page 5: ETL Manual Integration Services

7/30/2019 ETL Manual Integration Services

http://slidepdf.com/reader/full/etl-manual-integration-services 5/23

 A criação de um processo ETL (cada package) deve começar com o fluxo detarefas que é definido no painel “Control Flow” .

Tasks(Tarefas)

Uma  tarefa pode ser descrita como uma unidade individual de trabalho. Elasque proporcionam funcionalidade ao package. Podemos comparar uma taskcom um método em uma linguagem de programação. Alguns exemplos:Bulk Insert: Carrega dados em uma tabela usando o comando BULK INSERTSQL.Data Flow: Tarefa especializada em realizar transformações e carregar osdados transformados em uma tabela destino.

FTP: permite receber ou enviar arquivos via FTPSend mail: Envia mensagens (e-mails) através de SMTP.Execute SQL Task: Conecta a um banco de dados e executa um comandoSQL.

Fluxo de tarefas

Diferente de linguagens de programação estruturadas ou orientadas à objeto,nas ferramentas ETL trabalhamos por fluxo de dados através das tarefasespecificadas. É formada uma espécie de cadeia de tarefas, uma realizadaapós a outra seguindo as restrições abaixo indicadas:

Sucesso: a tarefa é realizada apenas se a tarefa anterior foi executada comsucesso.Completeza: a tarefa é realizada após a tarefa anterior ser executada.Independente se houve sucesso ou falha.Falha: a tarefa é realizada apenas se a tarefa anterior foi executada, masfalhou.

Ex: Se tarefa “Copy File” executou com sucesso Executar tarefa “Data Flow Task”Se tarefa “Copy File” falhou Executar tarefa “Send mail Task”

 

Page 6: ETL Manual Integration Services

7/30/2019 ETL Manual Integration Services

http://slidepdf.com/reader/full/etl-manual-integration-services 6/23

Para incluir tarefas clique no botão “Toolbox” que aparece à esquerda da tela.Caso não esteja aparecendo vá ao Menu horizontal e clique em View Toolbox

Escolha na Barra de ferramentas (Toolbox) a tarefa desejada. Você pode criar um fluxo de tarefas de acordo com a sua necessidade. Entretanto, uma tarefadeve sempre ser escolhida, a “Data Flow Task”.

Elementos da tarefa “Data Flow” 

 A tarefa Data Flow é responsável pelo principal processo da ferramenta ETL.No painel “Data Flow” será criado o fluxo de componentes que serãoresponsáveis por realizar a Extração, as Transformações e a Carga (Load) natabela destino.

Para incluir tarefa “Data Flow Task”, apenas clique na tarefa e arraste para opainel “Control Flow”.

Page 7: ETL Manual Integration Services

7/30/2019 ETL Manual Integration Services

http://slidepdf.com/reader/full/etl-manual-integration-services 7/23

 Agora é preciso ir para o painel “Data Flow”. Você pode apenas clicar na aba“Data Flow” ou dar um duplo clique no componente “Data Flow Task”.

Exemplo de um fluxo de componentes dentro de uma tarefa Data Flow:

Page 8: ETL Manual Integration Services

7/30/2019 ETL Manual Integration Services

http://slidepdf.com/reader/full/etl-manual-integration-services 8/23

Para efetivamente criar um processo ETL, devemos incluir os várioscomponentes que necessitamos de acordo com a carga que devemos dar natabela destino escolhida.Para incluir um componente novamente clique no botão Toolbox. Entretantoagora irá aparecer um novo conjunto de componentes:

Componentes de Origem (Source)

 A origem é o local onde as fontes de dados serão extraídas. Origemgeralmente irá apontar para o “Connection Manager” no SSIS. Existem seisfontes que podem ser usadas:

OLE DB: conexão realizada com qualquer data source OLE DB, tais quais SQLServer, Oracle, Access, etc.Excel: Origem especializada em receber dados de planilhas Excel. Esta origempossibilita criar queries a partir dos dados da planilha.Flat File: conecta a um arquivo texto delimitado por algum caracter ou comtamanho de colunas pré-definido.Raw File: componente especializado em ler arquivos de formato produzido por “Raw File Destination”.XML: Busca dados de um documento XML.Data Reader : é uma conexão ADO.NET.

Componentes de Destino (Destination)

O destino é o local onde os dados serão carregados. Estes dados podem vir deuma Origem ou de uma Transformação. Os destinos disponíveis no SSIS são:

DataReader : Permite que os dados sejam destinados à um processo externo,

como o “Reporting Services” ou uma aplicação .NET.Dimension Processing: Carrega e processa uma dimensão no AnalysisServices. Pode realizar uma carga full (carga completa), carga incremental oude atualização.

Page 9: ETL Manual Integration Services

7/30/2019 ETL Manual Integration Services

http://slidepdf.com/reader/full/etl-manual-integration-services 9/23

Excel: Grava os dados em uma planilha Excel.Flat File: Grava os dados em um arquivo texto, delimitado por vírgula ou decolunas pré-definidas.OLE DB: Grava os dados em tabelas de banco de dados com conexão OLEDB como SQL Server, Oracle, Access.Partition processing: Permite a realização de processamento incremental,total ou atualizações em uma partição Analysis Services.

Raw file: Libera dos dados que podem ser usados em uma Origem Raw File.Recordset: Grava dados em um conjunto de registros ADO.SQL Server : é mais eficiente para gravar dados em uma base SQL Server.SQL Server Mobile: Grava dados em uma base SQL Server rodando em umPocket PC.

Componentes de Transformações (Transformations)

Estes são os principais componentes para o fluxo de dados. É a partir dastransformações que conseguiremos dar aos dados o formato desejado. Segueabaixo a lista de transformações existentes nesta ferramenta:

Aggregate: Possibilita agregar dados que venham de uma origem ou de outrastransformações.Audit: Fornece informações de auditoria, como qual package está sendoexecutado e por quem.

Character Map: Possibilita aplicação de funções de alteração de strings, comotransformar um texto em letras maiúsculas.

Page 10: ETL Manual Integration Services

7/30/2019 ETL Manual Integration Services

http://slidepdf.com/reader/full/etl-manual-integration-services 10/23

Conditional Split: Divide os dados baseando-se em certas condiçõesatendidas. Por exemplo, enviar os dados para um fluxo diferente caso a colunado Estado seja igual a “Minas Gerais”.Copy Column: Adiciona a cópia de uma coluna para uma nova coluna.Data Conversion: Converte de um tipo (data type) para outro.Data Mining Query: realize uma query data-mining do Analysis Services.Derived Column: Cria uma nova coluna calculada, derivada de uma

expressão.Export Column: Permite exportar uma coluna do fluxo de dados para umarquivo. Por exemplo, pode-se usar esta transformação para gravar umacoluna que contém uma imagem, em um arquivo.Fuzzy Grouping: Realiza a limpeza de dados, encontrando linhas que sejamduplicadas.Fuzzy Lookup: Encontra e padroniza dados baseados em lógica fuzzy. Por exemplo, pode transformar o nome “Jon” em “John”.Import Column: Lê os dados de um arquivo e adiciona no fluxo de dados.Lookup: Busca um dado em uma tabela para ser adicionado ao fluxo de dadosou para usado depois em uma transformação. Por exemplo, pode-se buscar o

nome de uma cidade a partir do campo CEP.Merge: Reúne 2 conjuntos de dados previamente ordenados, transformado-osem um único fluxo de dados.Merge join: Realiza a união de 2 conjuntos de dados em um único fluxoutilizando a função “Join”. (basicamente é uma reunião de colunas).Multicast: Envia a cópia dos dados para um caminho extra no fluxo de dados.OLE DB Command: Executa um comando OLE DB para cada linha no fluxode dados.Percentage Sampling: Captura uma amostra de dados a partir do fluxo dedados usando um percentual do total de linhas.Pivot: Basicamente os dados de uma coluna são convertidos em mais de umaforma não-relacional.Row Count: Armazena o número da linha no fluxo de dados em uma variável.Row Sampling: Captura uma amostra dos dados a partir do fluxo de dadosusando o número da linha do total de linhas.Script Component: Usa um script para realizar uma transformação.Slowly Changing Dimension: Coordena a inserção ou atualização condicionaldos dados em uma dimensão que muda lentamente.Sort: Especificada uma coluna, ordena os dados do fluxo de dados.Term Extraction: Busca um nome ou adjetivo em um texto.Term Lookup: Busca um termo de um texto e referencia o valor em uma

tabela.Union All: Reúne múltiplos conjuntos de dados em um único fluxo de dados(basicamente é uma reunião de linhas)Unpivot:Transforma os dados de um formato desnormalizado em um formatorelacional.

Page 11: ETL Manual Integration Services

7/30/2019 ETL Manual Integration Services

http://slidepdf.com/reader/full/etl-manual-integration-services 11/23

Criando um processo ETL

Um processo de carga sempre se inicia escolhendo um componente de origem.

O componente mais utilizado é uma tabela de banco de dados. Para incluí-loescolha na toolbox o “OLE DB Source” e arraste para o painel “Data Flow”.

Page 12: ETL Manual Integration Services

7/30/2019 ETL Manual Integration Services

http://slidepdf.com/reader/full/etl-manual-integration-services 12/23

Configurando o componente OLE DB Source. Clique 2 vezes no componente.

No primeiro item da lista, Connection Manager, escolha a conexão e a tabelade origem. O item “Data access mode” pode ser mantido com o default “Tableor view” que indica que será acessada uma tabela.

Clique no segundo item da lista, Columns. Irá aparecer a lista de campos queexistem na tabela de origem escolhida. Você pode selecionar os campos queserão utilizados no fluxo de dados, clicando no checkbox que aparece àesquerda do campo.

Conexão

Tabela de

Origem

Page 13: ETL Manual Integration Services

7/30/2019 ETL Manual Integration Services

http://slidepdf.com/reader/full/etl-manual-integration-services 13/23

 Além da origem, um processo de carga sempre possui um componente dedestino. Este componente é a tabela em que vamos realizar a carga dos dados,geralmente uma tabela de Dimensão ou uma tabela Fato.

O componente mais utilizado é uma tabela de banco de dados. Para incluí-loescolha na toolbox o “OLE DB Destination” e arraste para o painel “Data Flow”.

Devemos ligar o componente de origem no componente de destino. Para talapenas clique no primeiro componente. Irão aparecer duas setas: uma verde e

uma vermelha. A escolha de qual seta usar deve ser:Verde: se o componente executar com sucesso, então executar o próximo.Vermelha: se o componente falhar, então executar o próximo.

Vamos sempre considerar o fluxo de sucesso, usando a seta verde. Clique naseta verde e arraste ate o próximo componente (OLE DB Destination).

Page 14: ETL Manual Integration Services

7/30/2019 ETL Manual Integration Services

http://slidepdf.com/reader/full/etl-manual-integration-services 14/23

Configurando o componente OLE DB Destination. Clique 2 vezes nocomponente.No primeiro item da lista, Connection Manager, escolha a conexão e a tabelade destino. O item “Data access mode” pode ser mantido com o default “Table

or view” que indica que será acessada uma tabela

Conexão

Tabela de

Destino

Page 15: ETL Manual Integration Services

7/30/2019 ETL Manual Integration Services

http://slidepdf.com/reader/full/etl-manual-integration-services 15/23

Clique no segundo item da lista, Mappings. Irá aparecer a lista de campos queestão no fluxo de dados (esquerda) e a lista de campos que existem na tabelade destino (direita).

Caso os nomes dos campos coincidam, a ligação já vem pronta. Caso contrárioapenas arraste um campo da primeira lista para o campo correspondente dasegunda lista. Você pode também escolher o campo na lista abaixo “Input

Column”.

Uma carga simples pode possuir apenas um componente de origem e um dedestino. Ou seja, apenas iremos escolher uma tabela de origem de dados e a

partir desta tabela carregar os campos da tabela de destino, uma tabela deDimensão simples, por exemplo a tabela DIM_BAIRRO.

Entretanto, existem tabelas de destino que para serem carregadas énecessário que algumas transformações sejam realizadas. Para tal existem oscomponentes de transformação. Iremos ver alguns exemplos a seguir. 

Page 16: ETL Manual Integration Services

7/30/2019 ETL Manual Integration Services

http://slidepdf.com/reader/full/etl-manual-integration-services 16/23

Sort: Especificada uma coluna, ordena os dados do fluxo de dados.

 Arraste o componente e solte no painel. Faça as ligações: Origem para o Sort eSort para o Destino.

 Configurando o componente Sort:

Irá aparecer a lista de campos que está no fluxo de dados.

No checkbox da esquerda escolha os campos que você deseja ordenar. Elesirão aparecer na lista da parte debaixo.

No checkbox da direita escolha os campos que você deseja que continue no

fluxo de dados.

Page 17: ETL Manual Integration Services

7/30/2019 ETL Manual Integration Services

http://slidepdf.com/reader/full/etl-manual-integration-services 17/23

Na lista de campos a ordenar você pode digitar um novo nome para o campo“Output Alias” e escolher o tipo de ordenação “Sort Type”: ascendente oudescendente.

Uma opção interessante e muito útil aparece na parte de baixo da tela deconfiguração : “Remove rows with duplicate sort values”, que significa remover as linhas duplicadas. Assim, caso você queira que seu fluxo prossiga tendo

apenas uma linha para cada campo ordenado, ou seja, caso você queiraremover os registros em duplicidade clique neste item.

Lookup: Busca um dado em uma tabela para ser adicionado ao fluxo de dadosou para usado depois em uma transformação.

Configurando o componente Lookup:

Na aba “Reference Table” escolha a conexão com o banco de dados onde se

encontra a tabela que você deseja buscar o campo faltante. E em seguidaescolha a tabela em questão.

Conexão

Page 18: ETL Manual Integration Services

7/30/2019 ETL Manual Integration Services

http://slidepdf.com/reader/full/etl-manual-integration-services 18/23

Tomemos como exemplo a carga da tabela DIM_CIDADE, onde temos oscampos Cód_cidade, Nom_Cidade, Cód_UF, Nom_UF.Na tabela de origem CIDADE não existe o nome da UF, assim é necessáriobuscar o nome da UF em uma outra tabela de origem que é a tabela UF.

Na aba “Columns” irá aparecer a lista de campos que estão no fluxo de dados(esquerda) e a lista de campos que existem na tabela escolhida (direita).

 A ligação deve ser feita entre os campos que representam a chave comumentre as tabelas.

No nosso exemplo o campo que relaciona uma tabela a outra é o Cód_UF, estecampo existe no nosso fluxo e ele esta na tabela UF representando unicamentecada registro, ou seja, para cada nome de UF temos apenas um código.

Na lista da parte de baixo da tela de configuração irão aparecer os campos quenecessitamos incluir no nosso fluxo de dados. Para incluir os camposnecessários clique no checkbox a esquerda dos campos.No nosso exemplo clicamos apenas no nome da UF, campo nom_UF.

Page 19: ETL Manual Integration Services

7/30/2019 ETL Manual Integration Services

http://slidepdf.com/reader/full/etl-manual-integration-services 19/23

Merge join: Realiza a união de 2 conjuntos de dados em um único fluxoutilizando a função “Join”. (basicamente é uma reunião de colunas).

Vamos utilizar o mesmo exemplo, onde temos que incluir o nome da UF paradar carga na tabela DIM_CIDADE.Neste caso precisamos de 2 origens de dados: CIDADE e UF.

O componente Merge Join exige que os fluxos estejam ordenados. Assim épreciso incluir um componente Sort após cada origem.

Faça a ligação da tabela à esquerda ao componente “Merge Join” escolhendoa opção Left e depois faça a ligação da tabela a direita ao componente.

Page 20: ETL Manual Integration Services

7/30/2019 ETL Manual Integration Services

http://slidepdf.com/reader/full/etl-manual-integration-services 20/23

Configurando o componente Merge Join:

Irão aparecer a lista de campos que estão no fluxo de dados à esquerda e alista de campos que estão no fluxo de dados à direita.

 A ligação deve ser feita entre os campos que representam a chave comumentre as tabelas.

Imagine uma query que realiza o join entre duas tabelas. Os campos queligaremos serão os campos que incluiremos na cláusula Where.

Os campos que queremos que continuem no nosso fluxo de dados devem ser marcados no checkbox que aparece à esquerda do nome do campo.

Para exemplificar a query correspondente a este Join seria:

SELECT CIDADE.cod_UF, CIDADE.cod_cidade, CIDADE.nom_cidade, UF.nom_UFFROM CIDADE, UFWHERE CIDADE.cod_UF = UF.cod_UF

Page 21: ETL Manual Integration Services

7/30/2019 ETL Manual Integration Services

http://slidepdf.com/reader/full/etl-manual-integration-services 21/23

Conditional Split: Divide os dados baseando-se em certas condiçõesatendidas. Por exemplo, enviar os dados para um fluxo diferente caso a colunado Estado seja igual a “Bahia”. Pode ser usado como um filtro de informações.

 Configurando o componente Conditional Split:

Digite a condição no campo “Condition”. A ferramenta disponibiliza váriasfunções na lista à esquerda. Você pode digitar um nome para a condição nocampo “Output Name”. Isto facilita a visualização.

Page 22: ETL Manual Integration Services

7/30/2019 ETL Manual Integration Services

http://slidepdf.com/reader/full/etl-manual-integration-services 22/23

Derived Column: Cria uma nova coluna calculada, derivada de uma expressão

Configurando o componente Derived Column:

Digite a expressão no campo “Expression”. A ferramenta disponibiliza várias

funções na lista à esquerda.Digite o nome da nova coluna (passará a existir no fluxo de dados) no campo“Derived Column Name”.Escolha o tipo de dados no campo “Data Type”.

Page 23: ETL Manual Integration Services

7/30/2019 ETL Manual Integration Services

http://slidepdf.com/reader/full/etl-manual-integration-services 23/23

Data Conversion: Converte de um tipo (data type) para outro.

Configurando o componente Data Conversion:

Irá aparecer a lista de campos que estão no fluxo de dados.

Escolha o campo que você deseja alterar o tipo de dados clicando no checkboxà esquerda do nome do campo.Escolha o novo tipo de dados no campo “Data Type.Esta coluna irá aparecer como uma nova coluna no fluxo de dados. Você podedigite o nome desta nova coluna no campo “Output Alias”.