Você está na página 1de 108

TREINAMENTO

Microsoft SQL Server 2008


INTEGRATION SERVICES (SSIS)
DIRECIONADO

WIN SOLUTIONS Assessoria em Sistemas de Informao LTDA


http://www.winsolutions.com.br

SSIS 2008
PROCERGS

Contedo
OBJETIVO SSIS ............................................................................................................................................... 6
SQL Server Integration Services 2008 Conceitos Bsicos .............................................................................. 7
O que ? .......................................................................................................................................................... 7
ETL (Extrao, Transformao e Carga) ............................................................................................................ 8
Extrao ........................................................................................................................................................... 8
Transformao................................................................................................................................................. 8
Carga ............................................................................................................................................................... 9
Pontos de Ateno .......................................................................................................................................... 9
Tipos de tabelas em um ETL ............................................................................................................................. 11
Projetos do Integration Services ........................................................................................................................ 12
Pacotes do Integration Services .................................................................................................................... 13
Control Flow ................................................................................................................................................... 14
Sequence Container .................................................................................................................................. 14
Execute SQL Task ..................................................................................................................................... 14
Data Flow Task .......................................................................................................................................... 14
Execute Package Task .............................................................................................................................. 15
Aggregate .................................................................................................................................................. 15
Conditional Split ......................................................................................................................................... 15
Data Conversion ........................................................................................................................................ 15
Derived Column ......................................................................................................................................... 15
Flat File Destination ................................................................................................................................... 16
Flat File Source .......................................................................................................................................... 16
Lookup ....................................................................................................................................................... 16
Merge Join ................................................................................................................................................. 16
Multicast ..................................................................................................................................................... 16
OLE DB Command .................................................................................................................................... 16
OLE DB Destination ................................................................................................................................... 16
OLE DB Source ......................................................................................................................................... 16
2

SSIS 2008
PROCERGS
Oracle Source ............................................................................................................................................ 17
Oracle Destination ..................................................................................................................................... 17
Script Component ...................................................................................................................................... 17
Sort ............................................................................................................................................................ 17
File System Task ....................................................................................................................................... 17
Execute Process Task ............................................................................................................................... 17
Cache Transform ....................................................................................................................................... 17
Slowly Changing Dimension ...................................................................................................................... 18
Excel Source .............................................................................................................................................. 18
Excel Destination ....................................................................................................................................... 18
Union All .................................................................................................................................................... 18
Transfer SQL Server Objects Task ........................................................................................................... 18
Tipo de dados do SSIS .............................................................................................................................. 19
Tabela de converso de dados do SSIS ................................................................................................... 22
Padres de Desenvolvimento de SSIS ............................................................................................................. 24
Diretrios do projeto ...................................................................................................................................... 24
1. Estrutura para o projeto SSIS ................................................................................................................ 24
2. Estrutura para os logs do projeto SSIS ................................................................................................. 24
3. Estrutura para o deploy do projeto SSIS ............................................................................................... 24
Projeto ........................................................................................................................................................... 24
1.

Nomenclatura do projeto ................................................................................................................... 24

Pacotes (Package) ........................................................................................................................................ 25


1.

Nomenclatura do pacote.................................................................................................................... 25

Conexes para bancos de dados .................................................................................................................. 25


1.

Nomenclatura do database connection ............................................................................................. 25

Conexes para Arquivos ............................................................................................................................... 26


1. Nomenclatura de arquivos Flat file ou Excel ........................................................................................ 26
2.

Nomenclatura de arquivos de log do SSIS........................................................................................ 26

3.

Nomenclatura de arquivos DTSX ...................................................................................................... 26

SSIS 2008
PROCERGS
Log do SSIS ................................................................................................................................................... 26
1.

Nomenclatura da conexo do log ...................................................................................................... 26

2.

Nomenclatura do arquivo do log ........................................................................................................ 26

Variveis de ambiente ................................................................................................................................... 27


1.

Utilizao das variveis ..................................................................................................................... 27

2.

Nomenclatura das variveis .............................................................................................................. 27

Configuraes de pacote do SSIS ................................................................................................................ 28


1.

Nomenclatura da configurao de mapeamento das variveis ........................................................ 28

Deploy do SSIS ............................................................................................................................................. 28


1.

Deploy para o ambiente de Produo ............................................................................................... 28

2.

Deploy para o ambiente de Homologao ........................................................................................ 28

Objetos do SSIS ............................................................................................................................................ 28


1.

Definio de nomenclatura dos objetos ............................................................................................ 28

Utilizando a ferramenta Microsoft SSIS............................................................................................................. 31


Iniciar o SSIS ................................................................................................................................................. 31
Modelo Dimensional: ..................................................................................................................................... 32
Criao de um Projeto ................................................................................................................................... 33
Criao de DATA SOURCES ........................................................................................................................ 34
Criao de um PACKAGE do tipo STAGE .................................................................................................... 37
Instalao do Attunity Connector ................................................................................................................... 61
Lendo dados de um banco Oracle e gravando no SQL Server .................................................................... 62
Realizando um Join com SSIS ...................................................................................................................... 65
Criao de uma PACKAGE do tipo dimensional (DWD)............................................................................... 69
Criao de um PACKAGE do tipo dimensional (DWD) com CACHE ........................................................... 79
Criao de um PACKAGE do tipo dimensional com SLOWLY CHANGING DIMENSION e arquivo Excel
como origem (DWD) ...................................................................................................................................... 81
....................................................................................................................................................................... 82
Criao de um PACKAGE do tipo FATO (DWF) ........................................................................................... 84
Criao de uma PACKAGE DE CONTROLE ................................................................................................ 90
Executar um Pacote ...................................................................................................................................... 91
4

SSIS 2008
PROCERGS
Configurando LOG......................................................................................................................................... 91
Package Configuration .................................................................................................................................. 93
Expressions ................................................................................................................................................... 98
PackageProtecion........................................................................................................................................ 100
Executar um pacote com senhas salvas em tabelas .................................................................................. 101
Deploy de mapas de ETL ............................................................................................................................ 102
Enviando e-mail ........................................................................................................................................... 103
Comentrios no SSIS 2008 ......................................................................................................................... 105
Setas de controle de fluxo ........................................................................................................................... 106
Glossrio .......................................................................................................................................................... 107

SSIS 2008
PROCERGS

OBJETIVO SSIS

Este um treinamento customizado, desenvolvido para a PROCERGS, onde foram utilizados


alguns modelos reais de projetos do Governo. Este treinamento foi desenvolvido baseado nas experincias
em projetos de ETL e SQL Server Integration Services (SSIS) realizados pela empresa WIN SOLUTIONS.
Para a ferramenta SQL Server Integration Services (SSIS), a apresentao das funcionalidades,
conceitos, objetos, entre outros, ser realizada na forma de execuo de exerccios passo-a-passo. Onde
sero realizados alguns exemplos, baseados em informaes de casos reais da PROCERGS, demonstrando
as funcionalidades e a forma de construir o processo de ETL.
Este treinamento tem como objetivo capacitar os participantes em:

Noes de processos de ETL (Extrao, Transformao e Carga) para carga de DW

Viso geral da ferramenta Microsoft SSIS 2008

Entendimento dos potenciais da ferramenta

Utilizao das melhores prticas de construo de aplicaes SSIS

Aps a concluso, o participante estar apto a:

Definir e construir Mapas de ETL utilizando o SSIS

SSIS 2008
PROCERGS

SQL Server Integration Services 2008 Conceitos Bsicos

O que ?
O Microsoft Integration Services uma plataforma para desenvolvimento de integrao de
dados em nvel corporativo e de solues de extrao, transformao e carga (ETL) de dados. SQL Server
Integration Services (SSIS) substituiu o SQL Server 2000 Data Transformation Services (DTS).
O Integration Services possui ferramentas grficas e assistentes para criao e depurao de
pacotes: tarefas para execuo de funes de fluxo de trabalho como, por exemplo, operaes de FTP,
execuo de instruo SQL e sistema de mensagens de e-mail. Utiliza as mais diversas fontes de origem e
destinos de dados. Trabalha com transformaes para limpeza, agregao, juno e cpia de dados.
O SSIS foi desenvolvido para aplicaes de ETL de alto desempenho, tanto no desenvolvimento
como na execuo de processos.
Em resumo, o SSIS tem como principal funo levar dados de um lugar para outro, podendo
realizar transformaes, junes, cpias e aprimoramento dos dados.

SSIS 2008
PROCERGS

ETL (Extrao, Transformao e Carga)


Tambm chamado de processo de Integrao de Dados, um dos processos mais crticos na
construo de um projeto de BI. Uma informao carregada erroneamente, ou sem qualidade, certamente
resultar em consequncias imprevisveis nas fases posteriores do projeto, e depois de implantado pode
oferecer informaes incoerentes para os gestores tomarem suas decises.
Este processo o local onde so realizadas as transformaes dos dados conforme as regras
de negcio, possibilitando a avaliao do desempenho das empresas.
Em um projeto de DW a fase de ETL considerada o maior ponto crtico, estima-se que o
esforo de trabalho envolvido em ETL est entre 60% a 80% do total do projeto.
O processo de Extrao, Transformao e Carga (Extract, Transform, Load ETL) um
processo que envolve:

Extrao de dados de fontes externas


Transformao dos mesmos para atender s necessidades de negcios e
Carga dos mesmos em alguma base (STG/ODS/DW)

Extrao
A maioria dos projetos de Data Warehouse / Data Mart consolidam dados extrados de
diferentes sistemas de origem. Cada sistema utiliza um formato ou uma organizao de dados nica.
Formatos de dados comuns so bases de dados relacionais, flat files (tambm conhecidos como arquivos
texto), arquivos Excel, entre outros. A extrao trata da converso de um determinado formato para o formato
entendido no processamento da transformao.

Transformao
Neste momento aplicam-se as regras ou funes aos dados extrados para derivar os dados a
serem carregados. Algumas fontes de dados necessitaro pouca manipulao, outras podem necessitar de
um ou mais dos seguintes tipos de transformao:

Seleo de determinadas colunas para carregar (ou todas)


Traduo de valores codificados (O sistema AAA armazena 1 para sexo masculino e 2 para
feminino, o sistema BBB armazena M para masculino e F para feminino, por exemplo), para
o DW utilizaremos MAS e FEM. Isto conhecido como unificao de conceitos.
Codificao de valores de forma livre (mapeando Masculino, 1 e Sr. para MAS, por
exemplo)
Derivao de um novo valor calculado (Preo Mdio = Valor_Venda / Quantidade)
Agregao de vrias linhas de dados (total de vendas para cada loja e para cada regio, por
exemplo).
Gerao de valores de chaves substitutas (surrogate keys)
Transposio ou rotao (transformando mltiplas colunas em mltiplas linhas ou vice-versa)
Limpeza e qualificao de dados. Alguns sistemas no possuem regras para digitao de
campos de entrada de dados, como exemplo o campo cidade (Porto Alegre, P.Alegre, POA
todos querem dizer Porto Alegre)
Categorias Especiais: dependendo da necessidade do cliente, muito interessante o uso de
categorias especiais, pois pode ocorrer de que num fato exista uma venda para um
determinado cliente que no est na tabela dimensional. Com isso colocamos o registro
como Cliente No Cadastrado.
Entre outras
8

SSIS 2008
PROCERGS

Carga

neste momento que realizado a carga dos dados para o destino. Existem diversas formas
diferentes de realizar a carga, isto depende da necessidade de informao e anlise de cada organizao. A
estratgia de carga pode ser:

Substituir os dados
Adicionar novos dados
Alterar dados existentes

Pontos de Ateno

Antes de iniciar um projeto de ETL, diversos pontos devem ser analisados com ateno:
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.

Modelo trabalha com SK?


Existe tabela dimensional de tempo?
Qual o Perodo/frequncia de carga?
Est previsto a criao de tabelas que armazenam os fatos histricos? Quanto
tempo de armazenamento para o fato atual? Est sendo previsto limpeza dos fatos?
O Modelo trabalha com Stage rea e/ou ODS?
Qual a forma de atualizao das tabelas dimensionais (substitui, cria registro novo,
entre outros)?
Qual a forma de carga das tabelas de fatos (destrutiva, incremental, carga de
reprocessamento, entre outras)?
Est sendo prevista a criao de Categorias Especiais (No se aplica, No
Cadastrado, Outros...)?
Granularidade - todas as tabelas esto no mesmo gro?
Est sendo previsto reprocessamento?

Aps definidas as premissas de desenvolvimento do ETL, outras atividades devem ser


realizadas:
11. Identificar as fontes de dados (tabelas e arquivos). Esta identificao consiste em
obter informaes sobre, sistema de origem, conexo com o banco de dados, layout
do arquivo/tabela, e identificar os atributos.
12. Identificar processos de limpeza de dados. Para um projeto novo, esta etapa deve ter
uma grande ateno, pois geralmente as bases de dados contm informaes
inconsistentes e incoerentes. Deve-se estudar para verificar se a informao
necessria ou se possvel simplesmente realizar o descarte dos dados. Por
exemplo, podemos ter uma venda para um cliente que no existe mais na base, esta
venda no deve ser desconsiderada, pois representa uma entrada de receita para a
empresa, por outro lado, a empresa pode comprar um cadastro com informaes de
prospects que esto com dados inconsistentes, esta uma informao que deve ser
desconsiderada.
13. Definir as Transformaes. Geralmente um projeto de BI trabalha com diversas
fontes de origem, e devemos padronizar os diferentes formatos e contedos. O
exemplo mais clssico serve para sexo, F/Fem/Feminino/1 (quatro formas distintas
para dizer a mesma informao), deveremos identificar os atributos e realizar a
transformao no processo de ETL, para que o gestor veja no BI somente sexo
FEMININO por exemplo. O processo de transformao pode ser realizado dentro dos
9

SSIS 2008
PROCERGS
mapas de ETL, ou podemos utilizar tabelas de-para, onde ser realizada a
apropriao de cada domnio para o domnio que valer para o DW.
14. Com base no modelo de dados destino necessrio criar um plano para controlar o
fluxo de carga de dados. Por exemplo, deve-se carregar as dimensionais antes da
tabela de fato.

10

SSIS 2008
PROCERGS

Tipos de tabelas em um ETL


Stages
Aps definir quais sero as fontes de dados externas (flat file, Excel, tabelas Oracle, tabelas SQL
Server) realizada uma cpia desses dados para as tabelas de Stage.
As informaes gravadas nas tabelas de Stage no sofrem nenhuma transformao, elas so uma
fotografia idntica dos dados do cliente.
As Stages serviro de origem para as tabelas dimensionais e fatos. Assim evita que seja realizado
diversas consultas nos dados transacionais do cliente e nem que os dados de origem sofram algum tipo de
alterao.
Nas Stages s sero carregados os dados utilizados no processo, dados irrelevantes no necessitam
serem copiados.
Geralmente no reprocessamento de uma Stage so deletados todos os dados existentes na tabela e
carregados novamente.

Fatos
So tabelas que guardam as medidas numricas mais importantes de um negocio como valores de
faturamento e podem responder perguntas do tipo: Qual foi o produto mais vendido na loja X no ano de
2013?.
As tabelas fato so compostas obrigatoriamente por uma chave primria composta pelas chaves
primrias das tabelas dimensionais, que contm as descries detalhadas do fato. Alm desta chave
composta uma tabela fato contm medidas numricas que so os indicadores do negcio.
Geralmente as tabelas Fatos tm seus dados agregados por um perodo, seja ele dirio, mensal ou
anual.
O reprocessamento dos Fatos varia muito, tudo depende do negcio elas podem ser deletas e
carregadas novamente como as Stages ou terem cargas incrementais como as dimensionais.

Dimensionais
As tabelas dimenso so compostas pelas informaes complementares as tabelas fato.
Estas tabelas so compostas basicamente por colunas que contm elementos textuais que
descrevem o negcio e uma chave primria que ir compor a chave composta de sua tabela fato. A
identificao de uma tabela dimenso facilmente perceptvel atravs da utilizao da palavra por; por
exemplo, quando desejamos saber o a quantidade de vendas de um determinado produto por vendedor e
por bairros, a quantidade de vendas representa um fato, enquanto o vendedor e os bairros representam as
dimenses.

ODS
As ODS funcionam de forma parecida com as Fatos, porm em vez de dados organizacionais ela
contm informaes de forma operacional. Suas informaes so mais detalhadas e no agregadas como as
Fatos.

11

SSIS 2008
PROCERGS

Projetos do Integration Services

O SQL Server fornece dois ambientes, Business Intelligence Development Studio (BIDS) e SQL
Server Management Studio (SSMS), para o desenvolvimento e gerenciamento de pacotes Integration
Services. No atual treinamento iremos utilizar somente o BIDS.
No Business Intelligence Development Studio,
um projeto do Integration Services armazena e agrupa os
arquivos que so relacionados ao pacote. Por exemplo, um
projeto inclui os arquivos necessrios para criar uma soluo
especfica de ETL, incluindo as definies do pacote, fonte de
dados e exibio de fonte de dados.

Pasta

Descrio

Data Sources

Contm fontes de dados de nvel de projeto que podem ser referenciadas atravs de
mltiplos pacotes.

Data Sources
Views

Contm exibies das fontes de dados que so criados em fontes de dados e podem
ser referenciados por fontes, transformaes e destinos.

SSIS Packages

Contm os pacotes.

Micellaneous

Contm outros arquivos alm dos arquivos de fonte, exibio da fonte de dados ou de
pacote.

Quando voc adiciona um projeto Integration Services novo, o Business Intelligence


Development Studio cria arquivos de projeto que tm extenses .dtproj e .dtproj.user, database, .sln e .suo.

O arquivo *.dtproj contm informaes sobre configuraes de projeto e itens, como fontes de
dados e pacotes.
O arquivo *.dtproj.user contm informaes sobre suas preferncias para trabalhar com o
projeto
O arquivo *.database contm informaes que o Business Intelligence Development Studio
exige para abrir o projeto Integration Services. Realiza uma verificao para identificar se o
projeto est funcional.
O arquivo * .sln contm outras informaes sobre as configuraes do projeto.
O arquivo *.suo contm informaes sobre suas preferncias para trabalhar com a soluo.

12

SSIS 2008
PROCERGS

Pacotes do Integration Services

Utilizando a ferramenta de design grfico do SSIS possvel criar, salvar, executar e manter
pacotes. Cada pacote um conjunto organizado de:

Configuraes
Conexes com banco de dados
Elementos de fluxo de controle
Elementos de fluxo de dados
Manipuladores de eventos
Variveis

Um pacote pode ser salvo, lido e executado diversas vezes. No SSIS 2008 chamado de
Package.
Quando criado um pacote pela primeira vez, ele um objeto vazio que no desempenha
nenhuma funo. Para adicionar funcionalidade a um pacote, adicione um Control Flow (fluxo de controle) e
um ou mais Data Flows (fluxos de dados) ao pacote.
Abaixo temos uma figura que apresenta um pacote que contm um fluxo de controle (Control
Flow) com uma tarefa de Fluxo de Dados (Data Flow Task), que, por sua vez, contm um fluxo de dados
(Data Flow).

Fluxo de dados tambm pode ser chamado de Mapa de ETL.


Depois de criar o pacote bsico, voc pode adicionar recursos avanados como registro e
variveis para estender a funcionalidade do pacote.
O pacote concludo pode ser configurado com a definio de propriedades no nvel do pacote
que implementam a segurana, habilitam a reinicializao de pacotes a partir de pontos de verificao ou
incorporam transaes ao fluxo de trabalho do pacote.
13

SSIS 2008
PROCERGS

Control Flow

Um pacote consiste em um fluxo de controle (Control Flow) e, opcionalmente, em um ou mais


fluxos de dados (Data Flow). O SSIS fornece trs tipos diferentes de elementos de fluxo de controle:

Contineres: fornecem estruturas em pacotes e


servios para tarefas de fluxo de controle.
Tarefas (Task): definem atividades e processos,
incluindo origem dos dados, destinos dos dados, transformaes
entre outros.
Restries de precedncia: conectam contineres
e tarefas em pacotes em um fluxo de controle ordenado. Voc
pode controlar a execuo em sequncia de tarefas e contineres
e especificar as condies que determinam se as tarefas e contineres sero executados.
O diagrama acima mostra um fluxo de controle que tem um continer e seis tarefas. Cinco das
tarefas esto definidas no nvel de pacote e uma tarefa est definida no nvel de continer.

Objetos do control flow


Sequence Container
Agrupa tarefas (Task) e outros containers em fluxos de controle.

Execute SQL Task


Executa instrues SQL definidas pelo desenvolvedor. Neste objeto
possvel: truncar, criar, alterar tabelas, executar procedimentos no Banco
de dados, realizar uma consulta no banco de dados salvando o retorno
em uma varivel para utilizao futura no projeto.

Data Flow Task


A tarefa de Fluxo de Dados agrupa o mecanismo de fluxo de
dados que move dados entre as origens e os destinos,
permitindo que o usurio transforme, limpe e modifique os
dados medida que so movidos. A adio de uma tarefa de
Fluxo de Dados em um pacote de fluxo de controle permite
que o pacote extraia, transforme e carregue dados.

14

SSIS 2008
PROCERGS

Execute Package Task


Executa um pacote de acordo com o fluxo definido

Objetos do data flow


Aggregate
A transformao Agregao aplica funes agregadas aos
valores de coluna e copia os resultados na sada da
transformao. Estas funes agregadas podem ser Group
by, SUM, Average, entre outras.

Conditional Split
A transformao Diviso Condicional pode rotear linhas de dados para
sadas diferentes, dependendo do contedo dos dados. A implementao
da transformao Diviso Condicional semelhante a uma estrutura de
deciso CASE em uma linguagem de programao.
possvel configurar a Conditional Split da seguinte maneira:
Para cada condio a ser testada pela transformao, fornea
uma expresso a ser avaliada pelo Booleano.
Especifique a ordem na qual as condies so avaliadas. A ordem
importante, pois uma linha enviada sada correspondente
para a primeira condio avaliada como true.

Data Conversion
A transformao Converso de Dados converte os dados de
uma coluna de entrada em um tipo diferente de dados e o
copia em uma nova coluna de sada. Sempre que a origem
for de um tipo diferente do destino, deve-se aplicar a
converso. Por exemplo, se voc estiver lendo um arquivo
Flat File e for gravar em um Banco de Dados SQL Server,
deve ser aplicado s converses nas colunas.
Por exemplo, um pacote pode extrair dados de vrias fontes e
usar essa transformao para converter colunas em tipos de
dados exigidos pelo armazenamento dos dados de destino.
Voc pode aplicar vrias converses em uma nica coluna de
entrada.

Derived Column
Cria novos valores de coluna aplicando expresses s colunas
de entrada de transformao. Uma expresso pode conter
qualquer combinao de variveis, funes, operadores e
colunas da entrada de transformao. O resultado pode ser
adicionado como uma coluna nova ou adicionado a uma
coluna existente como um valor de substituio. A
transformao Coluna Derivada pode definir vrias colunas
derivadas, e qualquer varivel ou coluna de entrada pode
aparecer em vrias expresses.

15

SSIS 2008
PROCERGS

Flat File Destination


Escreve dados em um arquivo. O arquivo pode ser em formato
Delimitado, de largura fixa, largura fixa com delimitador de
linha ou com imperfeio direita.

Flat File Source


L dados de um arquivo de texto. O arquivo de texto pode ser
delimitado, ter largura fixa ou formato misto.

Lookup
Lookup o estgio onde se realiza um acesso ao Banco de
Dados para verificar a existncia ou no de um determinado
registro. Tambm utilizado para buscar informaes de um
determinado registro para incluir em outro de acordo com
uma chave de acesso.

Merge Join
Fornece uma sada que gerada unindo dois conjuntos de
dados ordenados que usam uma associao de FULL, LEFT
ou INNER.

Multicast
Multicast replica os dados em registros idnticos

OLE DB Command
Executa uma instruo SQL para cada linha do fluxo de
dados. Por exemplo, voc pode executar uma instruo SQL
que insira, atualize ou exclua linhas em uma tabela de banco
de dados.

OLE DB Destination
Carrega os dados em uma variedade de bancos de dados
compatveis com OLE DB usando uma tabela ou exibio de
banco de dados ou um comando SQL. Por exemplo, a fonte
OLE DB pode carregar dados nos bancos de dados do SQL
Server ou ORACLE.

OLE DB Source
Extrai dados de uma variedade de bancos de dados
relacionais compatveis com OLE DB usando uma tabela de
banco de dados, uma exibio ou um comando SQL.

16

SSIS 2008
PROCERGS

Oracle Source
Extrai dados do banco de dados Oracle.

Oracle Destination
Insere dados em bancos de dados Oracle

Script Component
Fornece um modo para incluir funes personalizadas em um
fluxo de dados.

Sort
Ordena os dados de entrada de modo crescente ou decrescente
e os copia na sada da transformao. Voc pode aplicar vrias
classificaes a uma entrada.

File System Task


Efetua operaes em arquivos e diretrios no sistema de arquivos.

Execute Process Task


Executa um aplicativo ou arquivo de um lote como parte de um fluxo
de trabalho. Embora voc possa usar o objeto Execute Process Task
para abrir qualquer aplicativo padro

Cache Transform

Grava dados de uma fonte de dados conectada no fluxo de dados


para um gerenciador de conexes de cache. Pode utilizar boa parte
da memria RAM do computador, dependendo do tamanho da tabela.

17

SSIS 2008
PROCERGS

Slowly Changing
Dimension

Coordena a atualizao e a insero de registros em tabelas de


dimenso de data warehouse.

Excel Source
Extrai dados de uma planilha Excel.

Excel Destination
Grava dados de vrios tipos de fontes em planilhas Excel

Union All
A transformao Union All combina vrias entradas em apenas uma
sada. Por exemplo, as sadas provenientes de duas fontes de arquivo
simples diferentes podem ser aplicadas transformao Union All e
combinadas em apenas uma sada.

Transfer SQL Server


Objects Task
O Objeto Transfer SQL Server Objects Task utilizado para transferir
um ou mais objetos de um database para outra instancia do SQL
Server. Exemplos de objetos que podem ser transferidos: tabelas e
Stored Procedures.

18

SSIS 2008
PROCERGS

Tipo de dados do SSIS


Tipo de dados SSIS

Descrio

DT_BOOL

Um valor booleano.

DT_BYTES

Um valor de dados binrios. O comprimento varivel e o comprimento de


mximo 8000 bytes.

DT_CY

Um valor de moeda. Este tipo de dados um inteiro assinado de oito bytes


com uma escala de 4 e preciso mxima de 19 dgitos.

DT_DATE

Uma estrutura de data que consiste em ano, ms, dia, hora, minuto,
segundos e segundos fracionrios. Os segundos fracionrios tm uma escala
mxima de 7 dgitos.
O tipo de dados DT_DATE implementado usando um nmero de ponto
flutuante de 8 bytes. Dias so representados por incrementos de nmeros
inteiros, iniciando em 30 de dezembro de 1899 e meia-noite como zero hora.
Valores de hora so expressos como o valor absoluto da parte fracionria do
nmero. No entanto, um valor de ponto flutuante no pode representar todos
os valores reais, portanto, h limites no intervalo de datas que podem ser
apresentados em DT_DATE.
Por outro lado, DT_DBTIMESTAMP representado por uma estrutura que
internamente tem campos individuais para ano, ms, dia, horas, minutos,
segundos e milissegundos. Este tipo de dados tem limites maiores em
intervalos de datas que pode apresentar.

DT_DBDATE

Uma estrutura de data que consiste em ano, ms e dia.

DT_DBTIME

Uma estrutura de hora que consiste em hora, minuto e segundo.

DT_DBTIME2

Uma estrutura de hora que consiste em hora, minuto, segundo e segundos


fracionrios. Os segundos fracionrios tm uma escala mxima de 7 dgitos.

DT_DBTIMESTAMP

Uma estrutura de carimbo de hora que consiste em ano, ms, dia, hora,
minuto, segundo e segundos fracionrios. Os segundos fracionrios tm uma
escala mxima de 3 dgitos.

DT_DBTIMESTAMP2

Uma estrutura de carimbo de hora que consiste em ano, ms, dia, hora,
minuto, segundo e segundos fracionrios. Os segundos fracionrios tm uma
escala mxima de 7 dgitos.

DT_DBTIMESTAMPOFFSET

Uma estrutura de carimbo de hora que consiste em ano, ms, dia, hora,
minuto, segundo e segundos fracionrios. Os segundos fracionrios tm uma
19

SSIS 2008
PROCERGS
escala mxima de 7 dgitos.

Diferente dos tipos de dados DT_DBTIMESTAMP e DT_DBTIMESTAMP2, o


tipo de dados DT_DBTIMESTAMPOFFSET tem um deslocamento de fuso
horrio. Esse deslocamento especifica o nmero de horas e minutos que o
horrio deslocado do tempo universal coordenado (UTC). O deslocamento
de fuso horrio usado pelo sistema para obter a hora local.
O deslocamento de fuso horrio deve incluir um sinal de soma ou subtrao
para indicar se esse deslocamento somado ou subtrado do UTC. O
nmero vlido de deslocamento de horas est entre -14 e +14. O sinal para o
deslocamento de minutos depende do sinal para o deslocamento de hora:
Se o sinal do deslocamento de hora for negativo, o deslocamento
de minuto dever ser negativo ou zero.
Se o sinal para o deslocamento de hora for positivo, o
deslocamento de minuto dever ser positivo ou zero.
Se o sinal para o deslocamento de hora for zero, o deslocamento
de minuto poder ser qualquer valor do negativo 0.59 ao positivo 0.59.
DT_DECIMAL

Um valor numrico exato com uma preciso fixa e uma escala fixa. Esse tipo
de dados um inteiro no-assinado de 12 bytes com um sinal separado, uma
escala de 0 a 28 e uma preciso mxima de 29.

DT_FILETIME

Um valor de 64 bits que representa o nmero de intervalos de 100


nanosegundos desde 1 de janeiro de 1601. Os segundos fracionrios tm
uma escala mxima de 3 dgitos.

DT_GUID

Um identificador global exclusivo (GUID).

DT_I1

Um inteiro assinado de um byte.

DT_I2

Um inteiro assinado de dois bytes.

DT_I4

Um inteiro assinado de quatro bytes.

DT_I8

Um inteiro assinado de oito bytes.

DT_NUMERIC

Um valor numrico exato com preciso e escalas fixas. Esse tipo de dados
um inteiro no-assinado de 16 bytes com um sinal separado, uma escala de
0 a -38 e uma preciso mxima de 38.

20

SSIS 2008
PROCERGS

DT_R4

Um valor de ponto flutuante de preciso nica.

DT_R8

Um valor de ponto flutuante de preciso dupla.

DT_STR

Uma cadeia de caracteres ANSI/MBCS com terminao nula com um


comprimento mximo de 8000 caracteres. (Se um valor de coluna contiver
terminadores nulos adicionais, a cadeia ser truncada na ocorrncia do
primeiro nulo.)

DT_UI1

Um inteiro no-assinado de um byte.

DT_UI2

Um inteiro no-assinado de dois bytes.

DT_UI4

Um inteiro no-assinado de quatro bytes.

DT_UI8

Um inteiro no-assinado de oito bytes.

DT_WSTR

Uma cadeia de caracteres Unicode com terminao nula com um


comprimento mximo de 4000 caracteres. (Se um valor de coluna contiver
terminadores nulos adicionais, a cadeia ser truncada na ocorrncia do
primeiro nulo.)

DT_IMAGE

Um valor binrio com um tamanho de mximo de 2 -1 (2,147,483,647) bytes.


.

DT_NTEXT

Uma cadeia de caracteres Unicode com um comprimento mximo de 2


(1,073,741,823) caracteres.

DT_TEXT

Uma cadeia de caracteres ANSI/MBCS com um comprimento mximo de 2 1 (2,147,483,647) caracteres.

31

30

-1

31

21

SSIS 2008
PROCERGS

Tabela de converso de dados do SSIS


Tipo de dados

SQL Server
(SQLOLEDB;
SQLNCLI10)

SQL Server
(SqlClient)

Jet

DT_BOOL

bit

bit

Bit

DT_BYTES

binary,
varbinary,
timestamp

binary,
varbinary,
timestamp

BigBinary,
RAW
VarBinary

DT_CY

smallmoney,
money

smallmoney,
money

Currency

date

date

Oracle
(MSDAORA)

Oracle
DB2
DB2
(OracleClient) (DB2OLEDB) (IBMDADB2)

RAW

DT_DATE

DT_DBDATE

DT_DBTIME

date

date

date

date

timestamp

timestamp

time

time

TIMESTAMP,
DATE,
INTERVAL

TIMESTAMP,
DATE,
INTERVAL

TIME,
TIME,
TIMESTAMP, TIMESTAMP,
DATE
DATE

timestamp

timestamp

timestamp,

timestamp,

varchar

varchar

DT_DBTIME2

time (p)

time (p)

DT_DBTIMESTAMP

datetime,
smalldatetime

datetime,
smalldatetime

DT_DBTIMESTAMP2

datetime2

datetime2

timestamp

timestamp

datetimeoffset(
p)

timestampoffs
et

timestampoffs
et

DT_DBTIMESTAMPOFFS datetimeoffset(
ET
p)

DateTime

DT_DECIMAL

DT_FILETIME

DT_GUID

uniqueidentifier uniqueidentifier GUID

DT_I1

DT_I2

smallint

smallint

Short

SMALLINT

SMALLINT

DT_I4

int

int

Long

INTEGER

INTEGER

22

SSIS 2008
PROCERGS

DT_I8

bigint

bigint

BIGINT

BIGINT

DT_NUMERIC

decimal,
numeric

decimal,
numeric

Decimal

DECIMAL,
NUMERIC

DECIMAL,
NUMERIC

DT_R4

real

real

Single

REAL

REAL

DT_R8

float

float

Double

FLOAT, REAL FLOAT, REAL

FLOAT,
DOUBLE

FLOAT,
DOUBLE

DT_STR

char, varchar

VarChar

CHAR,
ROWID,
VARCHAR2

CHAR,
VARCHAR

CHAR,
VARCHAR

DT_UI1

tinyint

tinyint

nchar,
nvarchar,
sql_variant,
xml

char, varchar,
nchar,
nvarchar,
sql_variant,
xml

NVARCHAR2
, NCHAR

CHAR,
ROWID,
VARCHAR2,
NVARCHAR2,
NCHAR

LongText

GRAPHIC,
VARGRAPHI
C

GRAPHIC,
VARGRAPHI
C

LONG RAW,
BLOB,
LOBLOCATO
R, BFILE,
LongBinar
VARGRAPHI
y
C, LONG
VARGRAPHI
C, definido
pelo usurio

LONG RAW,
BLOB,
LOBLOCATO
R, BFILE,
VARGRAPHIC
, LONG
VARGRAPHIC
, definido pelo
usurio

CHAR () FOR
BIT DATA,
VARCHAR ()
FOR BIT
DATA

CHAR () FOR
BIT DATA,
VARCHAR ()
FOR BIT
DATA, BLOB

image

NCLOB,
NVARCHAR,
TEXT

LONG, CLOB,
NCLOB,
NVARCHAR,
TEXT

LONG
VARCHAR,
NCHAR,
NVARCHAR,
TEXT

LONG
VARCHAR,
DBCLOB,
NCHAR,
NVARCHAR,
TEXT

LONG
VARCHAR
FOR BIT
DATA

LONG
VARCHAR
FOR BIT
DATA, CLOB

NUMBER,
INT

NUMBER, INT

Byte

DT_UI2

DT_UI4

DT_UI8

DT_WSTR

DT_IMAGE

DT_NTEXT

DT_TEXT

image

ntext

text

text, ntext

CLOB, LONG

23

SSIS 2008
PROCERGS

Padres de Desenvolvimento de SSIS


Este documento tem como finalidade sugerir tipos de padres, dar as instrues e orientaes
necessrias para desenvolver aplicaes de ETL com o SSIS 2008 neste treinamento.

Diretrios do projeto
1.Estrutura para o projeto SSIS
A estrutura do projeto deve estar na raiz E:\ dentro da pasta PROCERGS\ETL\SSIS\ do
ambiente de desenvolvimento.
Ex: E:\PROCERGS\ETL\SSIS\{NOME_PROJETO}\
Nome do projeto: sigla do projeto com 3 letras

2.Estrutura para os logs do projeto SSIS


A estrutura para os logs do projeto SSIS deve estar dentro da pasta do projeto com o nome de
Logs.
Ex: E:\PROCERGS\ETL\SSIS\{NOME_PROJETO}\Logs\
Nome do Projeto: sigla do projeto com 3 letras

3.Estrutura para o deploy do projeto SSIS


A estrutura para os logs do projeto SSIS deve estar dentro da pasta Bin do projeto com o nome
de Deployment.
Ex: E:\PROCERGS\ETL\SSIS\{NOME_PROJETO}\Bin\Deployment\
Nome do Projeto: sigla do projeto com 3 letras

Projeto
1. Nomenclatura do projeto
O nome do projeto deve seguir o seguinte padro:
PRJ_{CLIENTE}_{NOME_PROJETO}_n onde n um texto livre
Cliente: sigla do cliente com 3 letras.
Nome do Projeto: sigla do projeto com 3 letras
Ex: PRJ_PRO_TBS

24

SSIS 2008
PROCERGS

Pacotes (Package)
1. Nomenclatura do pacote
O nome da package deve seguir o seguinte padro:
{NOME_FISICO_TABELA}_n onde n um texto livre
Ex: TBS_DWF_PROJETOS
Observaes:

O nome da tabela ser sempre referente a tabela de destino, onde sero gravados
os dados.

Quando a package for do tipo


CTRL_{PROJETO}_{NOME_ROTINA}

Quando a package for do tipo sub-controle


SCTRL_{PROJETO}_{NOME_ROTINA}

controle

deve
deve

utilizar
utilizar

padro

padro

Conexes para bancos de dados


1. Nomenclatura do database connection
O nome do database connection deve seguir o seguinte padro:
CN_{S/T}_{PROJETO}_{XXX} onde:

CN o identificador de Database Connection.

<S/T> deve ser S, que identifica um database connection para sources, ou T, que
identifica um data base connection para targets.

<XXX> um cdigo de no mximo 3 caracteres que identifica o ambiente no qual o


Sistema de destino se encontra. Os valore possveis so os seguintes:
o

Transacional (TRA)

Stage Area (STG)

ODS (ODS)

Data Warehouse (DW)

Planning (PUB)

Metric (MTR)

Ex:
CN_T_TBS_STG (Conexo do Projeto TBS que grava no ambiente da Stage Area)
CN_S_TBS_STG (Conexo do Projeto TBS que l tabelas do ambiente Stage Area)
CN_T_TBS_DW (Conexo do Projeto TBS que grava no ambiente DW)

25

SSIS 2008
PROCERGS

Conexes para Arquivos

1. Nomenclatura de arquivos Flat file ou Excel


O nome da conexo do arquivo deve utilizar o seguinte padro {NOME DO ARQUIVO} sem a
extenso, em letras maisculas e sem acentuao ou caracteres especiais.
Ex: IND_CORP_REAL (conexo para o arquivo IND_CORP_REAL.txt)

2. Nomenclatura de arquivos de log do SSIS


O nome da conexo do arquivo de log deve utilizar o seguinte padro SSIS_{NOME DA
PACKAGE} caso nome da package no contenha o nome do projeto adicione-a como prefixo ao nome da
package.
Ex: SSIS_TBS_DWD_INDICADOR_PROJETO
(conexo para o arquivo SSIS_TBS_DWD_INDICADOR_PROJETO.csv)

3. Nomenclatura de arquivos DTSX


O nome da conexo do arquivo deve utilizar o seguinte padro {NOME DA PACKAGE}.
Ex: TBS_DWD_INDICADOR_PROJETO
(conexo para o arquivo TBS_DWD_INDICADOR_PROJETO.dtsx)

Log do SSIS
1. Nomenclatura da conexo do log
O padro de nomenclatura do log LOG__{NOME DA PACKAGE}. Caso nome da package no
contenha a sigla do projeto adicione-a como prefixo ao nome da package.
Ex: LOG_TBS_DWD_INDICADOR_PROJETO

2. Nomenclatura do arquivo do log


Gravar logs de erros do SSIS em sistema de arquivo com a extenso CSV utilizando o padro
de nomenclatura SSIS__{NOME DA PACKAGE}.csv . Caso nome da package no contenha a sigla do
projeto adicione-a como prefixo ao nome da package.
Ex: SSIS_TBS_DWD_INDICADOR_PROJETO.csv

26

SSIS 2008
PROCERGS

Variveis de ambiente
1. Utilizao das variveis
Utilizar as variveis para armazenar as seguintes informaes:

Usurio para a conexo com o Banco de Dados

Senha para a conexo com o Banco de Dados

Instncia para a conexo com o Banco de Dados

Endereo de arquivos externos

Outras propriedades dependentes de ambiente


OBS: O ambiente de desenvolvimento do Visual Studio dever conter cadastradas as variveis
de ambiente referente s senhas de conexo para BD.

2. Nomenclatura das variveis


Para variveis de endereo do arquivo de log de erros do SSIS utilizar: nome igual ao do arquivo
de log
Ex: SSIS_TBS_CTRL_CARGA_EVENTUAL_1

Para variveis de usurio para conexo com o Banco de Dados utilizar: {NOME DA
CONEXO}_USER
Ex: CN_T_TBS_DW_USER

Para variveis de senha para conexo com o Banco de Dados utilizar: {NOME DA
CONEXO}_PASSWORD
Ex: CN_T_TBS_DW_PASSWORD

Para variveis de instncia para conexo com o Banco de Dados utilizar: {NOME DA
CONEXO}_SERVER
Ex: CN_T_TBS_DW_SERVER

Para variveis de endereo de arquivos DTSX utilizar: DTSX_{NOME DA PACKAGE}


Ex: DTSX_TBS_DWD_INDICADOR_PROJETO
OBS: Caso nome da package no contenha a sigla do projeto adicione-a como prefixo.

Para variveis de endereo de arquivos FLAT FILES utilizar: FLAT_{NOME DO ARQUIVO}


Ex: FLAT_TBS_CADASTRO_INDICADOR
OBS: Caso nome do arquivo no contenha a sigla do projeto adicione-a como prefixo.

27

SSIS 2008
PROCERGS

Configuraes de pacote do SSIS


1. Nomenclatura da configurao de mapeamento das variveis
O nome da configurao deve ser igual ao nome da varivel a ser utilizada no pacote.
Ex: DTSX_TBS_DWD_INDICADOR_PROJETO

Deploy do SSIS
1. Deploy para o ambiente de Produo
Ainda est em definio pela Procergs.

2. Deploy para o ambiente de Homologao


O deploy deve estar habilitado nas propriedades do projeto com a pasta destino apontando para
a pasta gerada no diretrio do projeto para que seja feita a passagem para produo de um arquivo zip
contendo a pasta do deploy utilizando a nomenclatura: DEPLOY_SSIS_{SISTEMA}_{aaaammdd}_{numero
verso}
Ex: DEPLOY_SSIS_PRJ_TBS_20120416_2.zip
(corresponde segunda verso do deploy do projeto TBS gerada no dia 16 de abril de 2012)

Objetos do SSIS
1. Definio de nomenclatura dos objetos
Os nomes das principais objetos do SSIS devem seguir o seguinte padro:

No tem nome apropriado

<Funo>
Ex: BUSCAR_SK
<Nome da tabela> ou <funo da tarefa>
Ex: DWD_ACAO ou DWD_ACAO_DEL
<Nome da Package>
Ex: DWD_ACAO
<Nome do arquivo>
Ex: IND_CORP_REAL

28

SSIS 2008
PROCERGS

<Nome da tabela>
Ex: DWD_ACAO
INC_<Nome do arquivo>
Ex: INC_IND_CORP_REAL
INC_<Nome da tabela>
Ex: INC_DWD_ACAO
AGR_<Funo>
Ex: AGR_CAT_ESPECIAL
SOR_<Funo>
Ex: SOR_ORDENA_PROJETO
MUL_<Funo>
Ex: MUL_REPLICA_ORIGEM
UNI_<Funo>
Ex: UNI_TEMPO
FIL_<Funo> ou RTR_<Funo>
Ex: FIL_NULOS ou RTR_TP_VALOR
DTC_<Funo>
Ex: DTC_CONVERTE
DER_<Funo>
Ex: DER_GERA_FIXOS
LKP_<Funo>
Ex: LKP_DWD_ACAO
OLE_<Funo> ou <Funo SQL>_<Nome Tabela>
Ex: UPD_DWD_POLO_T ou DEL_DWD_POLO_T
SCR_<Funo>
Ex: SCR_NRO_INT

29

SSIS 2008
PROCERGS

MEJ_<Funo>
Ex: MEJ_PUB_STG
FST_<Funo>
Ex: FST_COPIA_ARQUIVO
EPT_<Funo>
Ex: EPT_EXECUTA_BAT
CCN_<Tabela>
Ex: CCN_DWD_POLO
SCD_<Funo>
Ex: SCD_POLO
<Nome da tabela>
Ex: DWD_POLO
INC_<Nome da tabela>
Ex: INC_DWD_POLO
TOT_<Funo>
Ex: TOT_COPIA_TABELAS

30

SSIS 2008
PROCERGS

Utilizando a ferramenta Microsoft SSIS


Para demonstrar as funcionalidades da ferramenta SSIS, ser desenvolvida para a PROCERGS
uma soluo passo-a-passo que implanta a carga de tabelas da Stage Area, tabelas Dimensionais e tabelas
de Fatos seguindo um modelo utilizado em projetos para PROCERGS.

Iniciar o SSIS

O SSIS um componente do Microsoft Visual


Studio 2008.

Antes de iniciar um Projeto na sua mquina de desenvolvimento, certifique-se que os diretrios


dos objetos SSIS esto criados no seu computador. Se no estiver criado crie no WINDOWS EXPLORER.
E:\PROCERGS\ETL\SSIS

31

SSIS 2008
PROCERGS

Modelo Dimensional:
Para os exerccios a serem desenvolvidos neste manual seguiremos o seguinte modelo de
dados:

32

SSIS 2008
PROCERGS

Criao de um Projeto
No Microsoft Visual Studio 2008
clique em File/New/Project:

Escolher um projeto de Integration Services, colocar o nome do Projeto e escolher o local


onde o projeto ser salvo.

Para o nome do Projeto, colocaremos a sigla TBS (Treinamento Bsico SSIS) e salvaremos no
caminho: E:\PROCERGS\ETL\SSIS
33

SSIS 2008
PROCERGS

Criao de DATA SOURCES


Antes de iniciar a construo dos pacotes, devemos criar as conexes com os Bancos de Dados
(Data Sources), das quais sero utilizadas tanto como origem e destino. Exemplo: conexes para STG e DW.
Para as conexes com o banco de
dados, poderemos cri-las uma vez no projeto e
reutiliz-las nos pacotes, para isso clique com o
boto direito em Data Sources / New Data Source
no painel Solution Explorer.

Logo aps abrir a janela Data Source Wizard, marcar Create a data source based on an existing
or new connection e depois clicar em New.

Para o treinamento ser utilizado a seguinte tabela de conexes:


USUARIO
TREINAMENTO_SSIS
TREINAMENTO_SSIS
TREINAMENTO_SSIS
TREINAMENTO_SSIS
TREINAMENTO_SSIS
T_PROCERGS_GRP

SENHA
123
123
123
123
123
grp123

DATABASE
T_PROCERGS_TBS_STG
T_PROCERGS_TBS_DW
T_PROCERGS_SHARE
SSIS_DB

SERVER NAME
SSIS2008ORACLE1
SSIS2008ORACLE1
SSIS2008ORACLE1
SSIS2008ORACLE1
SSIS2008ORACLE1
ORCL

CONEXO
CN_T_TBS_STG
CN_T_TBS_DW
CN_S_TBS_SHA
CN_T_SSIS_DB
CN_S_TBS_TRA

Procure sempre utilizar a conexo proprietria do banco de dados em uso.

34

SSIS 2008
PROCERGS
Na janela Connection Manager escolher o Provider SQL Server Native Client 10.0.

Indique o nome do servidor, usurio e senha, conforme o quadro abaixo e clique em Test
Connection para testar a conexo. Aps clique em OK e depois em Next.

35

SSIS 2008
PROCERGS
Na tela Completing the Wizard, preencha o Data source name conforme abaixo (padro
Procergs).

Fazer o mesmo procedimento para as demais conexes conforme a tabela de conexes citada na
pgina anterior, com exceo do usurio T_PROCERGS_GRP, que s ser criado posteriormente. Pois se
trata de uma conexo Oracle e no SQL Server como as outras quatro conexes que foram configuradas na
Data Source.

Aps realizar as configuraes das conexes a pasta de Data Sources ficar da seguinte maneira:

36

SSIS 2008
PROCERGS

Criao de um PACKAGE do tipo STAGE


Quando criamos um projeto, um pacote criado automaticamente (Package.dtsx). Se o
desenvolvedor for criando novos pacotes sem especificar o nome do pacote, eles sero criados com um
nmero sequencial no final do nome: Package1.dtsx, Package2.dtsx, Package3.dtsx e assim por diante.

A WIN SOLUTIONS utiliza como melhor prtica criar no mnimo um pacote para tratar de cada
tabela destino. Isto serve para facilitar a manuteno, reprocessamentos e modulariza o projeto de ETL.

Para o treinamento utilizaremos exemplos de construo de mapas baseados em sistemas


implantados na PROCERGS.
Para o exemplo iniciaremos com a construo do mapa que carrega a tabela de Stage Area
para o SERVICO. Abaixo segue um exemplo do Fluxo de Dados de
carga desta tabela:

Leitura de um arquivo com informaes do SERVICO.


Contar quantos registros foram lidos.
Ajustar datatypes de arquivos Texto para SQL Server.
Contar quantos registros sero gravados.
Inserir na tabela TBS_STG_SERVICO.

Depois de definido qual ser o fluxo dos dados, deveremos definir qual ser o fluxo de controle
do mapa em questo.
Neste fluxo de controle, algumas tarefas padro devero ser criadas:
Gera registro do LOG
Truncar tabela (como Stage Area uma tabela temporria, sempre devemos limp-la
antes de iniciar a nova carga).
Executar o fluxo de dados
Atualizar o registro de LOG com as informaes dos registros lidos e gravados.

37

SSIS 2008
PROCERGS

Como sabemos que a primeira tabela que


deveremos carregar a Stage de SERVICO, deve-se
alterar o nome do pacote de Package.dtsx para
TBS_STG_SERVICO.dtsx. Isto tem como funo dar
representatividade para os pacotes.
Como primeiro passo, devem ser includas as
conexes que sero utilizadas no pacote. Para isso clicar
com o boto direito do mouse no quadro Connection
Managers e selecionar a opo New Connection From
Data Source

Selecionar as conexes que ir usar, conforme abaixo:

38

SSIS 2008
PROCERGS
Para iniciar a construo do pacote ser utilizado um Sequence Container
Arraste o Sequence Container para o Control Flow, conforme imagem a seguir:

O Sequence Container serve para dividir os procedimentos no ambiente de Control Flow.


No aconselhvel, mas podem existir vrios Sequence Container em um mesmo mapa de ETL.

Como padro, todos os packages devem ter registros de LOG


no Banco de Dados. Para gerar o LOG utilizaremos o item Execute SQL
Task. Arrastando para dentro do container igual a imagem ao lado.

39

SSIS 2008
PROCERGS
Colocar o nome de CRIA_LOG, utilizar a conexo de destino CN_T_TBS_DW, e incluir o
seguinte comando no SQL Statement:

INSERT INTO [TBS_ODS_LOG_CARGA]


(
DTH_INICIO_EXECUCAO,
NOME_MAPA_ETL
)
VALUES (GETDATE (),'TBS_STG_SERVICO')

Prximo passo ser criar duas tarefa de fluxo de dados, utilizando o objeto Data Flow Task

40

SSIS 2008
PROCERGS
Arrastar dois Data Flow Task para dentro do Sequence. Um para o fluxo que ir carregar a
Stage e outro para o fluxo responsvel por finalizar o log.
Incluir os nomes TBS_STG_SERVICO e FINALIZA_LOG conforme quadro abaixo. Depois ligalos para formar o fluxo.

Para gerar o finaliza LOG, criar as variveis que armazenam as quantidades registros lidos e
inseridos.
Clicar no
inserido no Control Flow.
Logo aps incluir o quadro das variveis, clicando no Menu SSIS e depois em Variables:

Inserir as duas variveis REG_INSERIDOS e REG_LIDOS, conforme imagem abaixo:

.
41

SSIS 2008
PROCERGS
Abra o Data Flow FINALIZA_LOG clicando sobre o
objeto.
Para o fluxo de dados do FINALIZA_LOG, os objetos
devem seguir conforme indica a imagem ao lado:

Ler Banco SQL Server


Realizar a derivao das variveis de quantidade de
registros
Atualizar Banco SQL Server

Dentro do Data Flow FINALIZA_LOG, incluir o OLE DB Source e renomear para


TBS_ODS_LOG_CARGA.

Na sequencia, abra o objeto que acabou de inserir e faa o seguintes passos: mudar o Data
access mode para SQL command e inserir o comando abaixo no SQL command text para leitura das
informaes do LOG:

SELECT MAX(DTH_INICIO_EXECUCAO) DTH_INICIO_EXECUCAO


FROM TBS_ODS_LOG_CARGA
WHERE NOME_MAPA_ETL='TBS_STG_SERVICO'

42

SSIS 2008
PROCERGS

Dentro do Data Flow FINALIZA_LOG, incluir agora o Derived Column e renomear para
DER_SET_CONTADORES.

43

SSIS 2008
PROCERGS
A seguir, abra a Derived Column que acabou de inserir e faa os seguintes comandos:
Selecionar a pasta Variables e arrastar as variveis recm criadas at a coluna Expression. Depois,
renome-las em Derived Column Name com seus respectivos nomes, conforme imagem abaixo.

Como ltimo estgio do FINALIZA_LOG, incluir o OLE DB Command e renome-lo para


UPD_TBS_ODS_LOG_CARGA.

44

SSIS 2008
PROCERGS

Aps abr-lo, faa os seguintes passos:

Na aba Connection Managers, inclua a conexo CN_T_TBS_DW.

Na aba Component Properties, em SQLCommand, como demonstrado abaixo:

45

SSIS 2008
PROCERGS
Incluir o seguinte comando SQL:
UPDATE TBS_ODS_LOG_CARGA
SET DTH_FINAL_EXECUCAO = GETDATE(),
QTD_LIDOS=?,
QTD_INSERIDOS=?
WHERE DTH_INICIO_EXECUCAO=? AND
NOME_MAPA_ETL='TBS_STG_SERVICO'

Em Column Mappings realizar o seguinte mapeamento, que ir mover o contedo das


variveis resultantes da derivao para o UPDATE. A ordem dos parmetros se d em base no SQL
Command inserido anteriormente. Note que as linhas de comando: QTD_LIDOS=?, QTD_INSERIDOS=?
e DTH_INICIO_EXECUCAO=? esto esperando receber algo, e esta a ordem a ser inserida, conforme
imagem abaixo.

Com isso, o fluxo de dados de FINALIZA_LOG est finalizado.


*Obs.: No esquea de lig-los para formar o fluxo de dados.
46

SSIS 2008
PROCERGS
Para construo do fluxo de dados de carga da tabela TBS_STG_SERVICO devemos seguir
os passos:

Ler um arquivo com informaes do SERVICO.


Contar quantos registros foram lidos.
Ajustar datatypes de arquivos Texto para SQL Server
Contar quantos registros sero gravados.
Inserir na tabela TBS_STG_SERVICO.

A parametrizao para montar este fluxo de dados segue os seguintes passos:


Insira o FLAT FILE SOURCE

Renomeie esse objeto para SERVICO.


Logo aps abra e clique em NEW para nova conexo com arquivo TXT.

Nomeie a conexo com o arquivo, em Connection manager name, para SERVICO.


No boto Browse..., localize o arquivo SERVICO.txt que est no seguinte caminho:
E\:PROCERGS\ETL\Sources. Este arquivo contm as informaes de origem.
Marque Column names in the first data row. Serve para informar que o arquivo contm
cabealho.
Mude a opo Header row delimiter para Semicolon {;}. Serve para informar que a
delimitao das linhas do cabealho foram divididas por ;.

47

SSIS 2008
PROCERGS
Em Columns, mude a opo Column delimiter para Semicolon {;}. Indica que o delimitador
de colunas separado por ;.

.
Em Advanced valide os Datatypes, nesta opo voce pode mudar o datatype que esta vindo no
arquivo .txt
OBS: O aconselhvel deixar no formato que est, e converter depois com um objeto
especfico.

48

SSIS 2008
PROCERGS
No prximo objeto do mapa, contar quantos registros sero lidos do arquivo. Para isso siga
imagem abaixo:

Renomeie o objeto para CNT_REG_LIDOS e, logo aps abr-lo, em VariableName, set a


varivel REG_LIDOS.

49

SSIS 2008
PROCERGS

Converta os dados da origem, ajustando os data types e tamanhos de acordo com a tabela
destino. Para isso siga imagem abaixo:

Renomeie o Data Conversion inserido para DTC_AJUSTA_TIPO. Converta e renomeia as


colunas como imagem abaixo:

Para o objeto CNT_REG_INSERIDOS efetuar os


CNT_REG_LIDOS trocando a varivel para User::REG_INSERIDOS.

mesmos

passos

do

objeto

50

SSIS 2008
PROCERGS
Insira o OLE DB Destination, renomeie para INC_TBS_STG_SERVICO. Nele informe a
conexo e nome da tabela destino.

Logo aps, em Mappings, realizar o mapeamento dos atributos convertidos.

51

SSIS 2008
PROCERGS
Voltando ao Fluxo de Controle, aps inserir todos os
nomes dos objetos, realizar um Autosize para que os objetos
fiquem com tamanho de acordo com sua nomenclatura (imagem
ao lado).
Insira um Execute SQL Task e renomeie para
TRUNCA_TABELA, conforme imagem abaixo:

Aps inserir o objeto TRUNCA_TABELA, incluir os seguintes comandos conforme imagem abaixo:
TRUNCATE TABLE TBS_STG_SERVICO

52

SSIS 2008
PROCERGS
Para executar a package, clique sobre o nome da package e Execute Package.

Voc pode entrar no SQL Server e verificar a tabela destino populada:

53

SSIS 2008
PROCERGS
Como prximo exerccio entrar no data flow TBS_STG_SERVICO da package TBS_STG_
SERVICO.dtsx e adicionar um objeto de Multicast e um de Data Conversion.

No novo Data Conversion os dados sero


convertidos para o formato XLS colocando R8 para os
numricos e NTEXT para os textos. Renomear os apelidos
de sada com _XLS ao final de cada nome.

O proximo passo
adicionar um objeto de Excel
Destination logo a seguir ao Data
Convetion.
Criar uma nova conexo
para este Excel Destination, essa nova
conexo ira criar um aquivo .xls
Dar dois cliques no objeto
Excel Destination. Clicar em New para
adicionar uma
nova OLE DB
Conection Manager.No Excel file patch
colocar o caminho e o nome do
arquivo que ser criado.
O caminho para para criar
o
arquivo

E:\PROCERGS\ETL\Sources\
e o
arquivo
vai
se
chamar
SERVICO_STAGE.xls

54

SSIS 2008
PROCERGS

Ao clicar
aparecer a tela acima.

em

New..

Selecionar somente as colunas que vieram do arquivo SERVICO, removendo as colunas


convertidas, isto ir criar uma aba no novo arquivo Excel com as colunas descritas. O nome da tabela deve
ser o mesmo do arquivo. A query deve ficar igual a da imagem acima.
* Quando abrir a tela abaixo, apenas clique em "OK".

Aps a query que cria a tabela ir em Name of the Excel sheet e selecionar a tabela criada conforme a figura
abaixo e clicar em OK.

55

SSIS 2008
PROCERGS
Na coluna Mappings, mapeie as colunas que foram convertidas em Excel conforme a ilustrao
a seguir:

No final ir em Connection Managers e renomear a nova conexo criada de Excel Connection


Manager para SERVICO_STAGE, atendendo os padres de nomenclatura.
Para evitar que o arquivo Excel SERVICO_STAGE seja populado varias vezes com o mesmo
contedo ou que a estrutura seja perdida, faremos uma copia do arquivo para uma outra pasta na primeira
carga. E para as demais cargas faremos uma copia desse arquivo em branco para substituir o arquivo
populado. Isso far com que o conceito de stage seja seguido aqui tambm.

Adicione a varivel de ambiente PAR ao Sequence


Container.

56

SSIS 2008
PROCERGS
Inclua um objeto
TRUNCA_TABELA.

Execute

SQL

Task

ao

fluxo,

antes

do

Marque a opo ResultSet para Single row


ConnectionType : EXCEL
Connection: SERVICO_STAGE
Insira o seguinte sql em SQL Statement:
SELECT COUNT(1) AS PAR FROM SERVICO_STAGE

Na aba Result Set adicione um


Result Set com nome de PAR
apontando
para
a
varivel
User::PAR

57

SSIS 2008
PROCERGS
Adicione dois objetos File System Task.
Configure as setas de fluxo conforme a figura abaixo:

58

SSIS 2008
PROCERGS

No objeto FST_PRIMEIRA_CARGA crie um


novo DestinationConnection.
Usage type: Create file
File: E:\PROCERGS\ETL\SERVICO_STAGE.xls
Marque a opo OverwriteDestination como
True.
Esse ser o nosso backup

Crie um SourceConnection tambm


Usage type : Create file
File:
E:\PROCERGS\ETL\Sources\SERVICO_STA
GE.xls

Renomear as novas conexes em Connection Managers:


SERVICO_STAGE.xls para SERVICO_STAGE_LIMPA
SERVICO_STAGE.xls 1 para SERVICO_STAGE_POP

59

SSIS 2008
PROCERGS
O outro objeto FST_LIMPA_TABELA ficar configurado da seguinte forma:

DestinationConnection: SERVICO_STAGE_POP
OverwriteDestination: TRUE
SourceConnection: SERVICO_STAGE_LIMPA

Crie uma nova Package, conforme abaixo, e siga para o prximo tpico.

60

SSIS 2008
PROCERGS

Instalao do Attunity Connector


A ferramenta SSIS, na instalao padro, no possui objetos especficos para ler e gravar dados
de bases Oracle, porm possvel baixar a instalar o Attunity Driver.
O conector Attunity permite a extrao de dados em massa de e para Oracle dentro do ambiente
Microsoft SQL Server, atravs de interfaces padro em ambos os modos, completo e incremental. O conector
Oracle suporta o mtodo de carga rpida e pode executar vrios processos em paralelo.
Aps a instalao do driver o SSIS possuir mais duas opes de objeto: Oracle Source e
Oracle Destination.
Faa o Download e instalao do Attunity que se encontra no seguinte link:
http://www.microsoft.com/en-us/download/details.aspx?id=29284.
Logo aps a instalao, em Toolbox, clique com o boto direito e ento selecione Choose
Items...

Selecione a aba SSIS Data Flow Items e marque as opes Oracle Source e Oracle
Destination, conforme abaixo:

Para mais informaes acesse: http://technet.microsoft.com/en-us/library/ee470675(v=sql.100).aspx


61

SSIS 2008
PROCERGS

Lendo dados de um banco Oracle e gravando no SQL Server


O objetivo desse exemplo criar um mapa de ETL Stage para popular a tabela
TBS_STG_CLIENTE, que est em um banco SQL Server, usando como origem a tabela transacional
GRP_CLIENTE de uma banco Oracle.

Para ler os dados da tabela transacional GRP_CLIENTE ser utilizado o objeto Oracle
SOURCE

Dentro do objeto Oracle Source, clique em New.

62

SSIS 2008
PROCERGS
Insira os dados da conexo do banco Transacional Oracle, teste a conexo e clique em OK.

Em Name of the table or the view digite o nome da tabela que ser lida.

63

SSIS 2008
PROCERGS
Clique em Columns desmarque as colunas que no sero gravadas no destino e depois clique
em OK.

Para gravar os dados lidos na tabela TBS_STG_CLIENTE siga os passos vistos nas paginas
anteriores.

64

SSIS 2008
PROCERGS

Realizando um Join com SSIS


Nesta pratica, sero lidas duas bases diferentes, realizando um Join entre elas e gravando os
dados em um arquivo de texto.
Crie uma nova package chamada CLIENTE.dtsx, arraste para dentro do Data Flow dois
objetos OLE DB Source

Abra um dos OLE DB Source. Em OLE DB connection manager selecione a conexo da base
de Stage, em Data access mode escolha a opo SQL Command e por fim no campo SQL command
text digite a query abaixo:
SELECT CLIENTE_SIGLA, CLIENTE_CODIGO, TP_ADMINISTRACAO FROM TBS_STG_CLIENTE
No segundo OLE DB SOURCE faa as mesmas configuraes anteriores, porm mudando a
query:
SELECT CLIENTE_SIGLA, CLIENTE_NOME, ANALISTA_NEGOCIO FROM TBS_STG_CLIENTE
Conecte na sada de cada OLE DB Source em um Sort

Dentro de cada objeto Sort marque a coluna CLIENTE_SIGLA. Esta coluna ser utilizada na
comparao para realizar o Join.

65

SSIS 2008
PROCERGS
Ligar as duas sadas dos objetos Sort em um Merge Join

Quando conectar o primeiro Sort abrir uma tela de Input Output Selection, em Input
selecione qualquer uma das opes, pois nesse caso ser realizado um INNER JOIN ento tanto faz quem
ser o Left ou Right. No segundo Sort que for conectado no abrir nenhuma janela.

Dentro do objeto Merge Join selecione as colunas que sero levadas para o arquivo TXT de
destino. No caso dessa pratica, como temos a coluna CLIENTE_SIGLA sendo trazida por ambas as origem,
marque apenas uma delas.

66

SSIS 2008
PROCERGS
Aps realizar todas as etapas anteriores, o fluxo dever ficar semelhante imagem abaixo:

Para gravar os dados no arquivo CLIENTE.txt ser necessrio utilizar o objeto Flat File
Destination

Dentro das configuraes desse objeto clique em New, abrir uma janela chamada Flat File
Format apenas clique em OK.
Na aba General da janela Flat File Connection Manager Editor insira o nome da conexo:
CLIENTE. Em Browser selecione a pasta onde ser salvo o arquivo: E:\PROCERGS\ETL\Sources\ e d o
nome para o arquivo: CLIENTE, em Header row delimiter selecione a opo: Semicolon{;}. Marque
Column names in the first data row.

67

SSIS 2008
PROCERGS

Na aba Columns troque a Column delimiter para Semicolon e clique em OK.

Para finalizar, clique na aba Mappings e depois em OK.

68

SSIS 2008
PROCERGS

Criao de uma PACKAGE do tipo dimensional (DWD)


Aps a criao de todas as
packages de Stage Area, o prximo
passo em um projeto a criao de
packages de carga das tabelas
dimensionais.
Para o exemplo iniciaremos
com a construo do mapa que carrega
a tabela dimensional de Cliente. Ao lado
segue um exemplo do Fluxo de Dados
de carga desta tabela:

Leitura de tabela da STG de Cliente


Contar quantos registros foram lidos.
Verificar se o registro j existe na
dimenso.
Identificar qual operao deve ser
realizada:
Alterao
Insero
Descarte

Para criao deste mapa, deveremos criar uma nova package no SSIS com o nome de TBS_DWD_CLIENTE
que o mesmo nome da tabela dimensional que ser carregada.

Passos j descritos na criao da STG no estaro descritos na criao deste mapa dimensional.

69

SSIS 2008
PROCERGS
Criar o fluxo de controle conforme imagem ao lado:

Depois de definido qual ser o fluxo dos dados, deveremos definir qual
ser o fluxo de controle do mapa em questo.
Neste fluxo de controle, algumas tarefas padro devero ser criadas:
Gera registro do LOG
Buscar maior (NRO_INT)
Executar o fluxo de dados
Atualizar o registro de LOG com as informaes dos
registros lidos e gravados.

Primeiramente, inserir as seguintes variveis dentro do Container:

Para buscar o maior NRO_INT, devermos


fazer o seguinte:
Utilizar o item
arrastando para dentro do container.
Como padronizao, sempre se informa
qual a funo desta Tarefa no fluxo (no
caso atual BURCAR_NRO_INT).
Clicando duas vezes sobre o item abrir a
janela ao lado.
Colocar o nome em Name e
alterar o ResultSet para Single row,
incluir a conexo e criar o comando
SQL.

70

SSIS 2008
PROCERGS
Incluir o seguinte comando SQL no SQLStatement:
SELECT CONVERT(CHAR,ISNULL((MAX(T.NRO_INT_CLIENTE)),0)) AS MAXNRO
FROM TBS_DWD_CLIENTE T
Criar a seguinte varivel para armazenar o maior NRO_INT:

Para o data flow FINALIZA_LOG utilizar os mesmos passos dos exerccios anteriores, porm
este mapa atualiza mais atributos na tabela TBS_ODS_LOG_CARGA conforme as imagens aba

71

SSIS 2008
PROCERGS
Para o data flow TBS_DWD_CLIENTE as novidades so:

Incluso de leitura em tabela da STAGE AREA com a incluso das categorias especiais.

Uma das formas mais fceis de realizar a incluso das categorias especiais realizar o select
com UNION incluindo as categorias novas.
Para o exerccio, as categorias que sero criadas so:
No se Aplica
Sem Referncia

72

SSIS 2008
PROCERGS
Insira o objeto Lookup:

Ele utilizado para verificar se a dimenso j est cadastrada:

Marcar No cache e Ignore Failure.


Siga a sequencia de passos:

73

SSIS 2008
PROCERGS

Aps realizar o Lookup, devemos incluir o objeto Conditional Split:

Ao ligar o fluxo neste objeto, selecionar a sada Lookup Match Output, conforme abaixo:

Aps ligar o fluxo, abra o objeto Conditional Split para definirmos o que ser realizado
(Incluso, alterao ou descarte).

74

SSIS 2008
PROCERGS

INSERE:
ISNULL(LKP_NRO_INT_CLIENTE)
ALTERA:
!ISNULL(LKP_NRO_INT_CLIENTE) && ((ISNULL(CLIENTE_NOME) ? "0" : CLIENTE_NOME) !=
(ISNULL(LKP_NOME_CLIENTE) ? "0" : LKP_NOME_CLIENTE))
DESCARTA:
!ISNULL(LKP_NRO_INT_CLIENTE) && ((ISNULL(CLIENTE_NOME) ? "0" : CLIENTE_NOME) ==
(ISNULL(LKP_NOME_CLIENTE) ? "0" : LKP_NOME_CLIENTE))
Se no existir o registro (verificao realizada no Lookup anterior), deve ser realizada a insero
do registro na dimensional. Se existir o registro, deve ser realizada uma alterao no registro existente.
Para o ALTERA, aps contarmos quantos registros sero alterados, incluiremos o seguinte
comando:
UPDATE [TBS_DWD_CLIENTE]
SET [NOME_CLIENTE] = ?
WHERE [NRO_INT_CLIENTE] = ?

75

SSIS 2008
PROCERGS
A imagem ao lado mostra que o NOME_CLIENTE que estava na TBS_DWD_CLIENTE ser
trocado pelo que est
vindo da
TBS_STG_CLIENTE.

Para o INSERE, deveremos identificar qual ser o novo NRO_INT, contar quantos registros
sero includos e realizar o INSERT no banco de dados.
Para descobrir qual o prximo NRO_INT utilizaremos os seguintes objetos:

e
O SSIS possui objetos que tornam possvel a utilizao de scripts (C# ou VB). O Control Flow
possui o objeto Script Task que executa um script podendo interagir com as variveis do package ou do
sistema. Para a Data Flow existe o Script Component este por sua vez pode interagir com variveis e
colunas do fluxo de dados.

O objeto Script Component ter como funo neste exemplo contar quantos registros esto
passando pelo link INSERT. A implantao deste objeto
segue a seguir:

Ao arrastarmos o objeto Script Component, a


seguinte tela ir aparecer.
Selecionar a opo Transformation, pois esta
opo possibilita a entrada e sada de dados.
A opo Source s fornece a sada de dados
e a Destination s recebe dados.

76

SSIS 2008
PROCERGS
Ir em Inputs and Outputs, clicar no + de Output 0 para expandir, logo em seguida clicar em
cima de Output Columns e adicionar uma nova coluna com nome de SKCONT.

Uma vez selecionando a linguagem que ser utilizada no objeto Script Component (C# ou VB),
no ser possvel trocar. Para trocar s excluindo o objeto e criando um novo. Nesse Exerccio ser utilizado
o C#.

Clicar em Edit Script e inserir o seguinte cdigo:

77

SSIS 2008
PROCERGS
Prximo passo no fluxo somar o valor, obtido no incio com NRO_INT, com o contador obtido
no passo anterior. Para isso deve ser criada uma nova coluna chamada NRO_INT_NOVO. O valor desta
coluna ser o NRO_INT do novo registro a ser inserido.

Insira um OLE DB Destination e em Mappings, ligue os nomes conforme imagem abaixo:

Aps finalizar a construo do mapa, execute-o, e verifique os registros na base de dados:

78

SSIS 2008
PROCERGS

Criao de um PACKAGE do tipo dimensional (DWD) com CACHE


Caso a dimenso seja muito grande e necessite um ganho de desempenho do banco de dados
na busca dos dados, ou ocorram varias lookups em cima da mesma tabela poder ser utilizado um objeto de
cache na hora da consulta da lookup. (Obs: O cache ir consumir memria da mquina)

FAA O MESMO PROCEDIMENTO DA CRIAO ANTERIOR, E A PARTIR DELE,


SIGA OS PASSOS ABAIXO:

Modificaremos o nosso Control Flow adicionando um Sequence Container e um


objeto de Data Flow

Dentro do Data Flow CACHE_DWD_CLIENTE, adicionar um objeto que ir ler a


tabela TBS_DWD_CLIENTE, e um objeto de Cache Transform.

Abra o Cache Transform e crie uma nova conexo com o nome de CCN_TBS_DWD_CLIENTE:

Em columns confira o formato dos dados e selecione 1 como index position para o
SIGLA_CLIENTE, ele ser a chave para a consulta da lookup.

79

SSIS 2008
PROCERGS
Alterar as Lookup j inseridas anteriormente. Note que mudamos a opo de Cache Mode para
Full cache e Connection type para Cache connection manager. Em Connection selecione a conexo criada
anteriormente. Segue ilustrao abaixo:

Confira o mapeamento das colunas em mappings.


Isso ira criar uma nova conexo em Connection Managers
Essa nova conexo ser usada na Lookup dentro do Data Flow TBS_DWD_CLIENTE..

Crie um mapa para tabela dimensional TBS_DWD_SERVICO

80

SSIS 2008
PROCERGS

Criao de um PACKAGE do tipo dimensional com SLOWLY CHANGING DIMENSION


e arquivo Excel como origem (DWD)
Para o prximo exemplo iremos utilizar as mesmas configuraes do Control Flow do exerccio
anterior, a nica mudana ocorrer no Data Flow, conforme a figura abaixo. As configuraes do Package
continuam as mesmas.
Ao lado segue um exemplo do Fluxo de
Dados de carga desta tabela:
Leitura do arquivo XLS e leitura das
Categorias especiais
Eliminar os registros repetidos do arquivo
SERVICO_STAGE
Converso das colunas
Union entre as duas origens
Contagem dos registros lidos
Verificao se o registro j existe com o objeto
Slowly Changing Dimension
Insero se no existe
Alterao se ocorreu
Contagem dos registros no utilizados

Ateno, o Slowly Changing Dimension,


s ir funcionar se o banco aonde esta sendo
consultado seja SQL Server.

Para a leitura do arquivo.xls utilizar o conector Excel Source.

81

SSIS 2008
PROCERGS
Inserir uma nova conexo que ir buscar o arquivo Excel SERVICO_STAGE.xls, criado no
exerccio anterior.
Selecionar Table or view no Data access
mode, e o nome da folha do Excel ser
SERVICO_STAGE.

Em Columns selecionar somente os


campos que utilizaremos
(COD_SERVICO_BASICO e
NOME_SERVICO_BASICO).
Logo aps em Connection Managers renomear a conexo criada para o nome de SERVICO_STAGE.

Para o SELECT do OLE DB Source CATEGORIAS_ESPECIAIS


utilizar o seguinte SQL:
SELECT -1 AS COD_SERVICO_BASICO,
'No se aplica' AS NOME_SERVICO_BASICO
UNION
SELECT -2 AS COD_SERVICO_BASICO,
'Sem referncia' AS NOME_SERVICO_BASICO

Utilizar o objeto Aggregate, agrupando COD_SERVICO_BASICO


e NOME_SERVICO_BASICO conforme a imagem ao lado:

82

SSIS 2008
PROCERGS
Converter as colunas resultantes das origens para os seguintes formatos, utilizando uma Data Conversion
para cada OLE DB Source.

Para juntar os registros, utilizar o objeto Union All


mapeando as colunas conforme a imagem ao
lado.
Logo aps a contagem dos registros lidos, utilizar
o objeto Slowly Changing Dimension e configuralo conforme figura abaixo. Esse objeto ir verificar
se houve mudanas na dimenso alterando ou inserindo registros novos, semelhante ao exerccio anterior.
O COD_SERVICO o campo chave para a alterao, portanto se ele for alterado ser considerado como
registro novo.
Escolha a opo Changing Attribute, sendo
assim se ocorrer alterao no campo
NOME_SERVICO ele ser alterado na tabela
dimensional.

Na prxima tela marque o checkbox abaixo.

Na tela seguinte, desmarque o checkbox, assim como a


figura ao lado:
O objeto Slowly Changing Dimension ir criar dois novos objetos de sada um deles ser o update e o outro o
insert.
Os prximos passos so descritos no exerccio anterior.

83

SSIS 2008
PROCERGS

Criao de um PACKAGE do tipo FATO


(DWF)
Aps a criao de todos os Packages
dimensionais, o prximo passo em um projeto a
criao de Packages de carga das tabelas de fatos.
Para o exemplo iniciaremos com a
construo do mapa que carrega a tabela de fato de
Custos. Ao lado segue um exemplo do Fluxo de Dados
de carga desta tabela.
Os passos deste ELT so:
Leitura de tabela da STG com Custos.
Contar quantos registros foram lidos.
Gerar a data de carga.
Verificar a dimensional de Cliente para buscar o
NRO_INT. Se no existir buscar o registro Sem
Referncia.
Unificar o fluxo.
Verificar a dimensional de Servico para buscar o
NRO_INT. Se no existir buscar o registro Sem
Referncia.
Unificar o fluxo.
Verificar a dimensional de tempo para buscar o
NRO_INT.
Agregar os dados sumarizando o indicador.
Contar registros a serem inseridos.
Inserir no Banco de Dados.

A cada objeto UNION ALL ser possvel remover os


campos que no sero mais utilizados.

84

SSIS 2008
PROCERGS
Criar o fluxo de controle:

Depois de definido qual ser o fluxo dos dados,


deveremos definir qual ser o fluxo de controle do mapa em
questo.
Neste fluxo de controle, algumas tarefas padro
devero ser criadas:

Gera registro do LOG


Deletar fatos existentes de acordo com
arquivo de origem
Executar o fluxo de dados
Atualizar o registro de LOG com as
informaes dos registros lidos e
gravados.

No modelo definido, para reprocessamento, s executar novamente a carga que o contedo


as STAGE AREA ir substituir o contedo da tabela de fatos.
Por isso dever ser criado um data flow que elimine os registros que esto vindo da tabela da
STAGE AREA, conforme fluxo abaixo:

Para o objeto ENTRADA_MANUAL utilizar o seguinte comando SQL:


SELECT CONVERT (VARCHAR,DATEPART(DD,GETDATE())) +'/'+
CONVERT (VARCHAR,DATEPART(MM,GETDATE())) +'/'+
CONVERT (VARCHAR,DATEPART(YYYY,GETDATE())) AS DATA_PROCESSAMENTO
Para o objeto DEL_ DWF_CUSTOS_RECEITAS_LUCROS utilizar o seguinte comando SQL:
DELETE FROM TBS_DWF_CUSTOS_RECEITAS_LUCROS
WHERE DATA_PROCESSAMENTO=?

85

SSIS 2008
PROCERGS
Para data flow TBS_DWF_CUSTOS_RECEITAS_LUCROS,
Iniciar lendo no objeto OLE DB Source a tabela TBS_STG_CUSTOS:

Nessa Fato as Lookups no tero CACHE como as dimensionais.


Na Lookup selecionar No Cache e Redirect rows to error output para que os registros no
encontrados na Lookup sejam redirecionados para um novo fluxo.

86

SSIS 2008
PROCERGS
Esse novo fluxo ter um Derived Column que ir substituir o contedo no encontrado na
Lookup por -2 (Sem referncia). Isso far com que todos os registros que vieram da Stage e no foram
encontrados na Dimensional se tornem sem referncia na Fato.

Na Lookup de Categorias Especiais que receber o novo valor gerado no Derived Column (-2)
selecionar Fail Component porque ao contrrio da primeira Lookup que redirecionava os valores no
encontrados esta nova Lookup ser obrigada a achar -2, se no achar porque existe um erro na construo
da dimensional.

87

SSIS 2008
PROCERGS
Unir os Links que so de Sem Referncias, com os que existem na dimensional:

Sumarizar o VALOR_CUSTO, VALOR_RECEITA e agrupar o resto das colunas.

88

SSIS 2008
PROCERGS
Gerar as seguintes colunas conforme a figura abaixo:

Para DT_CARGA:
(DT_DATE)((DT_WSTR, 2) (DAY (GETDATE ())) + "/" +
(DT_WSTR, 2)(MONTH (GETDATE ())) + "/" +
(DT_WSTR, 4)(YEAR (GETDATE ())))
Para VALOR_LUCRO:
VALOR_RECEITA VALOR_CUSTO

Demais passos do mapa j foram descritos em exerccios anteriores.

89

SSIS 2008
PROCERGS

Criao de uma PACKAGE DE CONTROLE


Para colocar todos os pacotes desenvolvidos no projeto em
uma ordem de execuo utiliza-se o objeto Execute Package Task.
Para finalizar o exerccio, deve-se criar um pacote chamado:

Vamos

CTRL_TBS_CARGA_STAGE.dtsx

criar

um

container

arrastar

objeto

para dentro do mesmo, alm dos objetos para


criao do LOG. O prximo passo criar a conexo para o pacote inserido.

Para criar a conexo com a package, criar uma New File


Connection na aba Connection Managers.

Em File, selecionar o arquivo: TBS_STG_SERVICO.dtsx que se encontra no caminho:


E:\PROCERGS\ETL\SSIS\PRJ_PRO_TBS\TBS_STG_SERVICO.dtsx

Renomear a conexo criada para TBS_STG_SERVICO


No objeto TBS_STG_SERVICO incluir a conexo recm criada.

90

SSIS 2008
PROCERGS

Executar um Pacote
Clique com o boto direito sobre o pacote que deseja executar e logo aps clique com o boto
esquerdo em Execute Package.
Ser disparado o Debug sobre a package em questo.
Se todos os objetos ficarem verde, sinal de que o pacote executou com sucesso.
Se algum ficou vermelho sinal de que aquele objeto acusou erro. O desenvolvedor deve
analis-lo para descobrir o que ocorreu.

Outra forma de executar um pacote executando um comando diretamente via linha de


comando conforme abaixo:
"E:\Microsoft SQL Server\100\DTS\Binn\dtexec" /F
E:\PROCERGS\ETL\SSIS\PRJ_PRO_TBS\CTRL_TBS_CARGA_STAGE.dtsx

Configurando LOG
Siga os seguintes passos para configurar o LOG da ferramenta SSIS, dentro de cada package:

Para o LOG dever ser marcado somente ERROS.


Logo aps deve ser criado a conexo para o arquivo de LOG.

91

SSIS 2008
PROCERGS

92

SSIS 2008
PROCERGS

Package Configuration
Para executar os mapas de ETL em ambientes diferentes, como desenvolvimento e produo,
necessrio que os valores das conexes mudem, como por exemplo, usurios e senhas de banco de dados,
alm de caminhos de arquivos.
Provavelmente o desenvolvedor SSIS no ter acesso aos usurios e senhas dos bancos de
produo, por outro lado o DBA no realizar uma manuteno no projeto de SSIS para alterar os
parmetros de conexo, sendo assim uma das solues inserir os usurios e senhas das conexes em
uma tabela do banco de dados, onde o DBA apenas realizar uma atualizao nessa tabela com os usurios
e senhas referentes ao ambiente que o projeto foi migrado.
Para realizar esta pratica utilizaremos como exemplo a package TBS_STG_CLIENTE.
Primeiramente, abra o mapa TBS_STG_CLIENTE e depois siga os seguintes passos:

1) Em Connection Managers adicione a conexo CN_T_SSIS_DB

2) Acesse o menu: SSIS > Package Configuration

93

SSIS 2008
PROCERGS
3) Marque a opo Enable package configurations e logo em seguida clique em Add...

4) Na prxima tela configure conforme abaixo e depois clique em Next.


Configuration type: Environment variable
Environment variable: CN_T_SSIS_DB_USER

94

SSIS 2008
PROCERGS
5) Ir em: TBS_STG_CLIENTE > Connection Managers > CN_T_SSIS_DB > Properties, clicar
em cima da propriedade UserName e depois em Next.

6) D um nome para a configurao (CN_T_SSIS_DB_USER) e clique em Finish.

95

SSIS 2008
PROCERGS
7) Repita o processo anterior mais 3 vezes, adicionando 3 novas variveis de ambiente e
marcando as propriedades conforme abaixo:
CN_T_SSIS_DB_PASS:
CN_T_SSIS_DB_BASE:
CN_T_SSIS_DB_SERVER:

(Password)
(InitialCatalog)
(ServerName)

Aps realizar as configuraes a tela Package Configurations Organizer dever ficar igual
figura abaixo:

8) Agora, iremos adicionar uma nova configurao, clique em Add... na tela Package
Configuration Organizer, a nova janela da mesma maneira abaixo e clique em Next:
Configuration type: SQL Server
Connection: CN_T_SSIS_DB
Configuration table: [dbo].[SSIS_TBS_Configurations]
Configuration filter: CN_T_TBS_STG_USER

96

SSIS 2008
PROCERGS
9) Ir em: TBS_STG_CLIENTE > Connection Managers > CN_T_TBS_STG > Properties, marcar
a propriedade UserName e depois clicar em Next

10) D um nome para a configurao (CN_T_TBS_STG_USER) e clique em Finish.

97

SSIS 2008
PROCERGS
11) Repita os passos 8, 9 e 10 trs vezes cada um para os demais parmetros da conexo de
Stage: Password, Data Base e Server. No final a janela Package Configuration Organizer
dever ficar igual imagem abaixo:

Aps realizar esses passos faa o mesmo para as demais conexes que tiver como DW e Oracle.
Caso for uma conexo de arquivo, deve ser marcada a propriedade ConnectionString, pois os arquivos
apenas possuem o caminho onde esto localizados.
Podemos acessar a base SSIS_DB do SQL Server e listar os dados da tabela
SSIS_TBS_Configurations. O DBA ou qualquer responsvel pelas senhas realizar uma atualizao na
coluna ConfiguredValue dessa tabela.

Expressions
As expressions so utilizadas para preencher parmetros dinamicamente, cada vez que a
package aberta elas so carregas mudando os valores das propriedades dos objetos. Podemos assim
mudar os valores de propriedades a cada vez que a package aberta.
Neste exemplo, colocaremos o comando para truncar a tabela dentro de uma varivel, a
propriedade SQLStatement do objeto Execute SQL Task ir ler o contedo da varivel atravs das
Expressions.

A maioria dos objetos do SSIS 2008 possui a propriedade expressions.

Utilizaremos nessa pratica o mapa TBS_STG_CLIENTE.dtsx.

98

SSIS 2008
PROCERGS
Primeiramente, crie uma varivel no Sequence Container, chamada de QUERY do tipo String e
adicione o contedo: TRUNCATE TABLE TBS_STG_CLIENTE

Abra o componente TRUNCA_TABELA, v aba Expressions e clique no boto

Na prxima janela selecione a property: SqlStatementSource e clique novamente no boto

Clique e arraste a varivel QUERY para o campo Expression e clique em OK

99

SSIS 2008
PROCERGS
Com isso no importa o contedo do campo, ele sempre ir pegar o valor configurado na
Expression, portanto na imagem a seguir, quando o mapa for executado no apresentar erros, pois o campo
SQLStatement ir trazer os valores da varivel QUERY.

PackageProtecion
Por padro o SSIS guarda as senhas e caminhos em suas configuraes, com a opo
EncryptSensitiveWithUserKey, para tornar dinmico deveremos desativar esta opo trocando-a para
DontSaveSensitive nas propriedades da package.

100

SSIS 2008
PROCERGS

Executar um pacote com senhas salvas em tabelas


Nesse exemplo o objetivo executar um mapa onde as senhas estejam armazenadas em uma
tabela do SQL Server e no mais no SSIS. Para isso o Package Configuration precisa estar configurado,
alm da propriedade Package Protection estar como DontSaveSensitive.
Para realizar essa atividade utilizaremos como exemplo o mapa TBS_STG_CLIENTE
Percebe-se na imagem abaixo que o Package Configuration desse mapa est completamente
configurado:

Depois de configurar completamente a Package Configuration do mapa TBS_STG_CLIENTE.dtsx,


altere a propriedade Package Protection para DontSaveSensitive.
Esse mapa possui 3 conexoes:
CN_T_TBS_STG Acessa a tabela TBS_STG_CLIENTE
CN_T_TBS_DW Acessa a tabela TBS_ODS_LOG_CARGA
CN_T_SSIS_DB Acessa a tabela SSIS_TBS_Configurations (essa tabela armazena as credenciais
de login para acessar as tabelas das conexes CN_T_TBS_STG e CN_T_TBS_DW)
Agora, deve ser criado um arquivo do tipo BATCH
. Esse arquivo vai conter as credenciais para
acessar a conexo CN_T_SSIS_DB, o comando e o caminho para executar a package
TBS_STG_CLIENTE.dtsx. Para isso abra o Bloco de Notas do Windows, copie e cole a query abaixo e
salve como EXECUTA_TBS_STG_CLIENTE.bat
SET CN_T_SSIS_DB_USER=TREINAMENTO_SSIS
SET CN_T_SSIS_DB_PASS=123
SET CN_T_SSIS_DB_BASE=SSIS_DB
SET CN_T_SSIS_DB_SERVER=SSIS2008ORACLE1
"E:\Microsoft SQL Server\100\DTS\Binn\dtexec" /F
E:\PROCERGS\ETL\SSIS\TBS\TBS_STG_CLIENTE.dtsx

101

SSIS 2008
PROCERGS
Aps isso apenas execute o arquivo .bat.

Deploy de mapas de ETL


Para gerar o deploy no ambiente SSIS, siga os seguintes passos:

Marcar como True a propriedade CreateDeploymentUtility.


Deixar o diretrio padro. Este diretrio ser criado aps o diretrio do projeto, como segue:
102

SSIS 2008
PROCERGS

E:\PROCERGS\ETL\SSIS\TBS\bin\Deployment

Para executar o Deploy, executar Build.

Enviando e-mail
O SSIS 2008 possui um objeto para enviar e-mails o Send Mail Task, este objeto possui as
propriedades de envio de e-mail, mas s pode utilizar e-mail internos. Tornando sua utilidade um pouco
restrita.

Para contornar a dificuldade do objeto Send Mail Task, possivel criar um script que enviar emails utilizando o objeto Script Task.
Como exemplo utlizaremos a tabela TBS_STG_SERVICO, adicionar o objeto Script Task no
fluxo, conforme imagem.

103

SSIS 2008
PROCERGS

Utilizaremos como linguagem do Script Microsoft Visual Basic 2008, aps selecionar a
linguagem selecione a opo Edit Script...
Adicione a biblioteca de envio de e-mails.

Adione o Script abaixo trocando os valores para os desejados.


Ao trocar os valores e executar a package, o e-mail ser enviado. Podemos assim informar se a
carga rodou com sucesso.

104

SSIS 2008
PROCERGS
Para
referenciar
variveis
dentro
do
Script
utilizar
o
comando
Dts.variables(Nome_da_variavel).value isto ir retornar o valor da variavel. Conforme imagem abaixo,
onde foi utilizada uma varivel para informar a mensagem do e-mail.

Para conseguir utilizar a varivel criada no


SSIS preciso seleciona-la no script
conforme a imagem ao lado:

Comentrios no SSIS 2008


Para fazer um comentrio no dentro do package do SSIS 2008 basta no selecionar nenhum
objeto e digitar o comentrio.

105

SSIS 2008
PROCERGS

Setas de controle de fluxo


O SSIS 2008 possui 3 tipos de setas para controlar o fluxo, a seta verde Sucess indica o fluxo
executado com sucesso, a seta vermelha Failure indica o fluxo que ocasionou erro e a seta azul
(Completion) continua a execuo do fluxo com ou sem erro. As cores das setas podem ser alteradas no
Control Flow conforme a imagem a baixo. No Data Flow as cores no podem ser alteradas, mas dependendo
do objeto ele pode conter setas verdes e vermelhas.

Podemos utilizar variveis para desviar o fluxo como exemplo abaixo, o fluxo s ira passar pela
seta caso a condio seja atendida.

106

SSIS 2008
PROCERGS
Muito importante, se possuirmos um desvio de fluxo como o mostrado abaixo deveremos
marcar a propriedade de uma das setas como Logical OR, pois o objeto FINALIZA_LOG estar esperando
um objeto e no dois. Ao escolher a opo Logical OR a seta ficar pontilhada.

Glossrio

TEM

DESCRIO

SSIS

SQL Server Integration Service

SQL

Structured Query Language

TBS

Treinamento Bsico SSIS

ETL

Extract Transform Load

DW

Data Warehouse

STG

Stage

107

SSIS 2008
PROCERGS

DWD

Data Warehouse Dimensional

DWF

Data Warehouse Fato

B.I

Business Intelligence

DB

Data Base

ODS

Operational Data Store

CN

Conexo

108