manual ssis 2008

108
1 TREINAMENTO Microsoft SQL Server 2008 INTEGRATION SERVICES (SSIS) DIRECIONADO WIN SOLUTIONS Assessoria em Sistemas de Informação LTDA http://www.winsolutions.com.br

Upload: cassius-bombarda

Post on 08-Dec-2015

139 views

Category:

Documents


19 download

DESCRIPTION

Manual SSIS 2008

TRANSCRIPT

1

TREINAMENTO

Microsoft SQL Server 2008

INTEGRATION SERVICES (SSIS)

DIRECIONADO

WIN SOLUTIONS Assessoria em Sistemas de Informação LTDA http://www.winsolutions.com.br

SSIS 2008

PROCERGS

2

Conteúdo

OBJETIVO – SSIS ............................................................................................................................................... 6

SQL Server Integration Services 2008 – Conceitos Básicos .............................................................................. 7

O que é? .......................................................................................................................................................... 7

ETL (Extração, Transformação e Carga) ............................................................................................................ 8

Extração ........................................................................................................................................................... 8

Transformação ................................................................................................................................................. 8

Carga ............................................................................................................................................................... 9

Pontos de Atenção .......................................................................................................................................... 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

SSIS 2008

PROCERGS

3

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 conversão de dados do SSIS ................................................................................................... 22

Padrões de Desenvolvimento de SSIS ............................................................................................................. 24

Diretórios 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

Conexões para bancos de dados .................................................................................................................. 25

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

Conexões 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

4

Log do SSIS ................................................................................................................................................... 26

1. Nomenclatura da conexão do log ...................................................................................................... 26

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

Variáveis de ambiente ................................................................................................................................... 27

1. Utilização das variáveis ..................................................................................................................... 27

2. Nomenclatura das variáveis .............................................................................................................. 27

Configurações de pacote do SSIS ................................................................................................................ 28

1. Nomenclatura da configuração de mapeamento das variáveis ........................................................ 28

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

1. Deploy para o ambiente de Produção ............................................................................................... 28

2. Deploy para o ambiente de Homologação ........................................................................................ 28

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

1. Definição de nomenclatura dos objetos ............................................................................................ 28

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

Iniciar o SSIS ................................................................................................................................................. 31

Modelo Dimensional: ..................................................................................................................................... 32

Criação de um Projeto ................................................................................................................................... 33

Criação de DATA SOURCES ........................................................................................................................ 34

Criação de um PACKAGE do tipo STAGE .................................................................................................... 37

Instalação do Attunity Connector ................................................................................................................... 61

Lendo dados de um banco Oracle e gravando no SQL Server .................................................................... 62

Realizando um Join com SSIS ...................................................................................................................... 65

Criação de uma PACKAGE do tipo dimensional (DWD) ............................................................................... 69

Criação de um PACKAGE do tipo dimensional (DWD) com CACHE ........................................................... 79

Criação de um PACKAGE do tipo dimensional com SLOWLY CHANGING DIMENSION e arquivo Excel

como origem (DWD) ...................................................................................................................................... 81

....................................................................................................................................................................... 82

Criação de um PACKAGE do tipo FATO (DWF) ........................................................................................... 84

Criação de uma PACKAGE DE CONTROLE ................................................................................................ 90

Executar um Pacote ...................................................................................................................................... 91

SSIS 2008

PROCERGS

5

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

Comentários no SSIS 2008 ......................................................................................................................... 105

Setas de controle de fluxo ........................................................................................................................... 106

Glossário .......................................................................................................................................................... 107

SSIS 2008

PROCERGS

6

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 experiências

em projetos de ETL e SQL Server Integration Services (SSIS) realizados pela empresa WIN SOLUTIONS.

Para a ferramenta SQL Server Integration Services (SSIS), a apresentação das funcionalidades,

conceitos, objetos, entre outros, será realizada na forma de execução de exercícios passo-a-passo. Onde

serão realizados alguns exemplos, baseados em informações 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:

Noções de processos de ETL (Extração, Transformação e Carga) para carga de DW

Visão geral da ferramenta Microsoft SSIS 2008

Entendimento dos potenciais da ferramenta

Utilização das melhores práticas de construção de aplicações SSIS

Após a conclusão, o participante estará apto a:

Definir e construir Mapas de ETL utilizando o SSIS

SSIS 2008

PROCERGS

7

SQL Server Integration Services 2008 – Conceitos Básicos

O que é?

O Microsoft Integration Services é uma plataforma para desenvolvimento de integração de

dados em nível corporativo e de soluções de extração, transformação e carga (ETL) de dados. SQL Server

Integration Services (SSIS) substituiu o SQL Server 2000 Data Transformation Services (DTS).

O Integration Services possui ferramentas gráficas e assistentes para criação e depuração de

pacotes: tarefas para execução de funções de fluxo de trabalho como, por exemplo, operações de FTP,

execução de instrução SQL e sistema de mensagens de e-mail. Utiliza as mais diversas fontes de origem e

destinos de dados. Trabalha com transformações para limpeza, agregação, junção e cópia de dados.

O SSIS foi desenvolvido para aplicações de ETL de alto desempenho, tanto no desenvolvimento

como na execução de processos.

Em resumo, o SSIS tem como principal função levar dados de um lugar para outro, podendo

realizar transformações, junções, cópias e aprimoramento dos dados.

SSIS 2008

PROCERGS

8

ETL (Extração, Transformação e Carga)

Também chamado de processo de “Integração de Dados”, é um dos processos mais críticos na

construção de um projeto de BI. Uma informação carregada erroneamente, ou sem qualidade, certamente

resultará em consequências imprevisíveis nas fases posteriores do projeto, e depois de implantado pode

oferecer informações incoerentes para os gestores tomarem suas decisões.

Este processo é o local onde são realizadas as transformações dos dados conforme as regras

de negócio, possibilitando a avaliação do desempenho das empresas.

Em um projeto de DW a fase de ETL é considerada o maior ponto crítico, estima-se que o

esforço de trabalho envolvido em ETL está entre 60% a 80% do total do projeto.

O processo de Extração, Transformação e Carga (Extract, Transform, Load – ETL) é um

processo que envolve:

Extração de dados de fontes externas

Transformação dos mesmos para atender às necessidades de negócios e

Carga dos mesmos em alguma base (STG/ODS/DW)

Extração

A maioria dos projetos de Data Warehouse / Data Mart consolidam dados extraídos de

diferentes sistemas de origem. Cada sistema utiliza um formato ou uma organização de dados única.

Formatos de dados comuns são “bases de dados relacionais”, flat files (também conhecidos como arquivos

texto), arquivos Excel, entre outros. A extração trata da conversão de um determinado formato para o formato

entendido no processamento da transformação.

Transformação

Neste momento aplicam-se as regras ou funções aos dados extraídos para derivar os dados a

serem carregados. Algumas fontes de dados necessitarão pouca manipulação, outras podem necessitar de

um ou mais dos seguintes tipos de transformação:

Seleção de determinadas colunas para carregar (ou todas)

Tradução 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 unificação de conceitos.

Codificação de valores de forma livre (mapeando “Masculino”, “1” e “Sr.” para “MAS”, por

exemplo)

Derivação de um novo valor calculado (Preço Médio = Valor_Venda / Quantidade)

Agregação de várias linhas de dados (total de vendas para cada loja e para cada região, por

exemplo).

Geração de valores de chaves substitutas (surrogate keys)

Transposição ou rotação (transformando múltiplas colunas em múltiplas linhas ou vice-versa)

Limpeza e qualificação de dados. Alguns sistemas não possuem regras para digitação 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 não está na tabela dimensional. Com isso colocamos o registro

como Cliente “Não Cadastrado”.

Entre outras

SSIS 2008

PROCERGS

9

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 informação e análise de cada organização. A

estratégia de carga pode ser:

Substituir os dados

Adicionar novos dados

Alterar dados existentes

Pontos de Atenção

Antes de iniciar um projeto de ETL, diversos pontos devem ser analisados com atenção:

1. Modelo trabalha com SK?

2. Existe tabela dimensional de tempo?

3. Qual é o Período/frequência de carga?

4. Está previsto a criação de tabelas que armazenam os fatos históricos? Quanto

tempo de armazenamento para o fato atual? Está sendo previsto limpeza dos fatos?

5. O Modelo trabalha com Stage Área e/ou ODS?

6. Qual é a forma de atualização das tabelas dimensionais (substitui, cria registro novo,

entre outros)?

7. Qual é a forma de carga das tabelas de fatos (destrutiva, incremental, carga de

reprocessamento, entre outras)?

8. Está sendo prevista a criação de Categorias Especiais (Não se aplica, Não

Cadastrado, Outros...)?

9. Granularidade - todas as tabelas estão no mesmo grão?

10. Está sendo previsto reprocessamento?

Após definidas as premissas de desenvolvimento do ETL, outras atividades devem ser

realizadas:

11. Identificar as fontes de dados (tabelas e arquivos). Esta identificação consiste em

obter informações sobre, sistema de origem, conexão 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 atenção, pois geralmente as bases de dados contêm informações

inconsistentes e incoerentes. Deve-se estudar para verificar se a informação é

necessária ou se é possível simplesmente realizar o descarte dos dados. Por

exemplo, podemos ter uma venda para um cliente que não existe mais na base, esta

venda não deve ser desconsiderada, pois representa uma entrada de receita para a

empresa, por outro lado, a empresa pode comprar um cadastro com informações de

prospects que estão com dados inconsistentes, esta é uma informação que deve ser

desconsiderada.

13. Definir as Transformações. Geralmente um projeto de BI trabalha com diversas

fontes de origem, e devemos padronizar os diferentes formatos e conteúdos. O

exemplo mais clássico serve para sexo, F/Fem/Feminino/1 (quatro formas distintas

para dizer a mesma informação), deveremos identificar os atributos e realizar a

transformação no processo de ETL, para que o gestor veja no BI somente sexo

FEMININO por exemplo. O processo de transformação pode ser realizado dentro dos

SSIS 2008

PROCERGS

10

mapas de ETL, ou podemos utilizar tabelas de-para, onde será realizada a

apropriação de cada domínio para o domínio que valerá para o DW.

14. Com base no modelo de dados destino é necessário criar um plano para controlar o

fluxo de carga de dados. Por exemplo, deve-se carregar as dimensionais antes da

tabela de fato.

SSIS 2008

PROCERGS

11

Tipos de tabelas em um ETL

Stages

Após definir quais serão as fontes de dados externas (flat file, Excel, tabelas Oracle, tabelas SQL Server) é realizada uma cópia desses dados para as tabelas de Stage.

As informações gravadas nas tabelas de Stage não sofrem nenhuma transformação, elas são uma fotografia idêntica dos dados do cliente.

As Stages servirão 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 alteração.

Nas Stages só serão carregados os dados utilizados no processo, dados irrelevantes não necessitam serem copiados.

Geralmente no reprocessamento de uma Stage são deletados todos os dados existentes na tabela e carregados novamente.

Fatos

São tabelas que guardam as medidas numéricas 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 são compostas obrigatoriamente por uma chave primária composta pelas chaves primárias das tabelas dimensionais, que contêm as descrições detalhadas do fato. Além desta chave composta uma tabela fato contêm medidas numéricas que são os indicadores do negócio.

Geralmente as tabelas Fatos têm seus dados agregados por um período, seja ele diário, mensal ou anual.

O reprocessamento dos Fatos varia muito, tudo depende do negócio elas podem ser deletas e carregadas novamente como as Stages ou terem cargas incrementais como as dimensionais.

Dimensionais

As tabelas dimensão são compostas pelas informações complementares as tabelas fato. Estas tabelas são compostas basicamente por colunas que contêm elementos textuais que

descrevem o negócio e uma chave primária que irá compor a chave composta de sua tabela fato. A identificação de uma tabela dimensão é facilmente perceptível através da utilização 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 dimensões.

ODS

As ODS funcionam de forma parecida com as Fatos, porém em vez de dados organizacionais ela

contém informações de forma operacional. Suas informações são mais detalhadas e não agregadas como as

Fatos.

SSIS 2008

PROCERGS

12

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 são relacionados ao pacote. Por exemplo, um

projeto inclui os arquivos necessários para criar uma solução

específica de ETL, incluindo as definições do pacote, fonte de

dados e exibição de fonte de dados.

Pasta Descrição

Data Sources Contém fontes de dados de nível de projeto que podem ser referenciadas através de

múltiplos pacotes.

Data Sources

Views

Contém exibições das fontes de dados que são criados em fontes de dados e podem

ser referenciados por fontes, transformações e destinos.

SSIS Packages Contém os pacotes.

Micellaneous Contém outros arquivos além dos arquivos de fonte, exibição 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 têm extensões .dtproj e .dtproj.user, database, .sln e .suo.

O arquivo *.dtproj contém informações sobre configurações de projeto e itens, como fontes de dados e pacotes.

O arquivo *.dtproj.user contém informações sobre suas preferências para trabalhar com o projeto

O arquivo *.database contém informações que o Business Intelligence Development Studio exige para abrir o projeto Integration Services. Realiza uma verificação para identificar se o projeto está funcional.

O arquivo * .sln contém outras informações sobre as configurações do projeto.

O arquivo *.suo contém informações sobre suas preferências para trabalhar com a solução.

SSIS 2008

PROCERGS

13

Pacotes do Integration Services

Utilizando a ferramenta de design gráfico do SSIS é possível criar, salvar, executar e manter

pacotes. Cada pacote é um conjunto organizado de:

Configurações

Conexões com banco de dados

Elementos de fluxo de controle

Elementos de fluxo de dados

Manipuladores de eventos

Variáveis

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 não desempenha

nenhuma função. 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 contém um fluxo de controle (Control

Flow) com uma tarefa de Fluxo de Dados (Data Flow Task), que, por sua vez, contém um fluxo de dados

(Data Flow).

Fluxo de dados também pode ser chamado de Mapa de ETL.

Depois de criar o pacote básico, você pode adicionar recursos avançados como registro e

variáveis para estender a funcionalidade do pacote.

O pacote concluído pode ser configurado com a definição de propriedades no nível do pacote

que implementam a segurança, habilitam a reinicialização de pacotes a partir de pontos de verificação ou

incorporam transações ao fluxo de trabalho do pacote.

SSIS 2008

PROCERGS

14

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 três tipos diferentes de elementos de fluxo de controle:

Contêineres: fornecem estruturas em pacotes e

serviços para tarefas de fluxo de controle.

Tarefas (Task): definem atividades e processos,

incluindo origem dos dados, destinos dos dados, transformações

entre outros.

Restrições de precedência: conectam contêineres

e tarefas em pacotes em um fluxo de controle ordenado. Você

pode controlar a execução em sequência de tarefas e contêineres

e especificar as condições que determinam se as tarefas e contêineres serão executados.

O diagrama acima mostra um fluxo de controle que tem um contêiner e seis tarefas. Cinco das

tarefas estão definidas no nível de pacote e uma tarefa está definida no nível de contêiner.

Objetos do control flow

Sequence Container

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

Execute SQL Task

Executa instruções SQL definidas pelo desenvolvedor. Neste objeto é possível: truncar, criar, alterar tabelas, executar procedimentos no Banco de dados, realizar uma consulta no banco de dados salvando o retorno em uma variável para utilização 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 usuário transforme, limpe e modifique os

dados à medida que são movidos. A adição de uma tarefa de

Fluxo de Dados em um pacote de fluxo de controle permite

que o pacote extraia, transforme e carregue dados.

SSIS 2008

PROCERGS

15

Execute Package Task

Executa um pacote de acordo com o fluxo definido

Objetos do data flow

Aggregate

A transformação Agregação aplica funções agregadas aos valores de coluna e copia os resultados na saída da transformação. Estas funções agregadas podem ser Group by, SUM, Average, entre outras.

Conditional Split

A transformação Divisão Condicional pode rotear linhas de dados para saídas diferentes, dependendo do conteúdo dos dados. A implementação da transformação Divisão Condicional é semelhante a uma estrutura de decisão CASE em uma linguagem de programação. É possível configurar a Conditional Split da seguinte maneira:

Para cada condição a ser testada pela transformação, forneça uma expressão a ser avaliada pelo Booleano.

Especifique a ordem na qual as condições são avaliadas. A ordem é importante, pois uma linha é enviada à saída correspondente para a primeira condição avaliada como true.

Data Conversion

A transformação Conversão de Dados converte os dados de uma coluna de entrada em um tipo diferente de dados e o copia em uma nova coluna de saída. Sempre que a origem for de um tipo diferente do destino, deve-se aplicar a conversão. Por exemplo, se você estiver lendo um arquivo Flat File e for gravar em um Banco de Dados SQL Server, deve ser aplicado às conversões nas colunas.

Por exemplo, um pacote pode extrair dados de várias fontes e usar essa transformação para converter colunas em tipos de dados exigidos pelo armazenamento dos dados de destino. Você pode aplicar várias conversões em uma única coluna de entrada.

Derived Column

Cria novos valores de coluna aplicando expressões às colunas de entrada de transformação. Uma expressão pode conter qualquer combinação de variáveis, funções, operadores e colunas da entrada de transformação. O resultado pode ser adicionado como uma coluna nova ou adicionado a uma coluna existente como um valor de substituição. A transformação Coluna Derivada pode definir várias colunas derivadas, e qualquer variável ou coluna de entrada pode aparecer em várias expressões.

SSIS 2008

PROCERGS

16

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 imperfeição à 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 estágio onde se realiza um acesso ao Banco de Dados para verificar a existência ou não de um determinado registro. Também é utilizado para buscar informações de um determinado registro para incluir em outro de acordo com uma chave de acesso.

Merge Join

Fornece uma saída que é gerada unindo dois conjuntos de dados ordenados que usam uma associação de FULL, LEFT ou INNER.

Multicast

Multicast replica os dados em registros idênticos

OLE DB Command

Executa uma instrução SQL para cada linha do fluxo de dados. Por exemplo, você pode executar uma instrução 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 compatíveis com OLE DB usando uma tabela ou exibição 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 compatíveis com OLE DB usando uma tabela de banco de dados, uma exibição ou um comando SQL.

SSIS 2008

PROCERGS

17

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 funções personalizadas em um fluxo de dados.

Sort

Ordena os dados de entrada de modo crescente ou decrescente e os copia na saída da transformação. Você pode aplicar várias classificações a uma entrada.

File System Task

Efetua operações em arquivos e diretórios 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 padrão

Cache Transform

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

para um gerenciador de conexões de cache. Pode utilizar boa parte

da memória RAM do computador, dependendo do tamanho da tabela.

SSIS 2008

PROCERGS

18

Slowly Changing

Dimension

Coordena a atualização e a inserção de registros em tabelas de

dimensão de data warehouse.

Excel Source

Extrai dados de uma planilha Excel.

Excel Destination

Grava dados de vários tipos de fontes em planilhas Excel

Union All

A transformação Union All combina várias entradas em apenas uma saída. Por exemplo, as saídas provenientes de duas fontes de arquivo simples diferentes podem ser aplicadas à transformação Union All e combinadas em apenas uma saída.

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.

SSIS 2008

PROCERGS

19

Tipo de dados do SSIS

Tipo de dados SSIS Descrição

DT_BOOL Um valor booleano.

DT_BYTES Um valor de dados binários. O comprimento é variável e o comprimento de máximo é 8000 bytes.

DT_CY Um valor de moeda. Este tipo de dados é um inteiro assinado de oito bytes com uma escala de 4 e precisão máxima de 19 dígitos.

DT_DATE Uma estrutura de data que consiste em ano, mês, dia, hora, minuto, segundos e segundos fracionários. Os segundos fracionários têm uma escala máxima de 7 dígitos.

O tipo de dados DT_DATE é implementado usando um número de ponto flutuante de 8 bytes. Dias são representados por incrementos de números inteiros, iniciando em 30 de dezembro de 1899 e meia-noite como zero hora. Valores de hora são expressos como o valor absoluto da parte fracionária do número. No entanto, um valor de ponto flutuante não 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, mês, 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, mês 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 fracionários. Os segundos fracionários têm uma escala máxima de 7 dígitos.

DT_DBTIMESTAMP Uma estrutura de carimbo de hora que consiste em ano, mês, dia, hora, minuto, segundo e segundos fracionários. Os segundos fracionários têm uma escala máxima de 3 dígitos.

DT_DBTIMESTAMP2 Uma estrutura de carimbo de hora que consiste em ano, mês, dia, hora, minuto, segundo e segundos fracionários. Os segundos fracionários têm uma escala máxima de 7 dígitos.

DT_DBTIMESTAMPOFFSET Uma estrutura de carimbo de hora que consiste em ano, mês, dia, hora, minuto, segundo e segundos fracionários. Os segundos fracionários têm uma

SSIS 2008

PROCERGS

20

escala máxima de 7 dígitos.

Diferente dos tipos de dados DT_DBTIMESTAMP e DT_DBTIMESTAMP2, o tipo de dados DT_DBTIMESTAMPOFFSET tem um deslocamento de fuso horário. Esse deslocamento especifica o número de horas e minutos que o horário é deslocado do tempo universal coordenado (UTC). O deslocamento de fuso horário é usado pelo sistema para obter a hora local.

O deslocamento de fuso horário deve incluir um sinal de soma ou subtração para indicar se esse deslocamento é somado ou subtraído do UTC. O número válido 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 numérico exato com uma precisão fixa e uma escala fixa. Esse tipo de dados é um inteiro não-assinado de 12 bytes com um sinal separado, uma escala de 0 a 28 e uma precisão máxima de 29.

DT_FILETIME Um valor de 64 bits que representa o número de intervalos de 100 nanosegundos desde 1 de janeiro de 1601. Os segundos fracionários têm uma escala máxima de 3 dígitos.

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 numérico exato com precisão e escalas fixas. Esse tipo de dados é um inteiro não-assinado de 16 bytes com um sinal separado, uma escala de 0 a -38 e uma precisão máxima de 38.

SSIS 2008

PROCERGS

21

DT_R4 Um valor de ponto flutuante de precisão única.

DT_R8 Um valor de ponto flutuante de precisão dupla.

DT_STR Uma cadeia de caracteres ANSI/MBCS com terminação nula com um comprimento máximo de 8000 caracteres. (Se um valor de coluna contiver terminadores nulos adicionais, a cadeia será truncada na ocorrência do primeiro nulo.)

DT_UI1 Um inteiro não-assinado de um byte.

DT_UI2 Um inteiro não-assinado de dois bytes.

DT_UI4 Um inteiro não-assinado de quatro bytes.

DT_UI8 Um inteiro não-assinado de oito bytes.

DT_WSTR Uma cadeia de caracteres Unicode com terminação nula com um comprimento máximo de 4000 caracteres. (Se um valor de coluna contiver terminadores nulos adicionais, a cadeia será truncada na ocorrência do primeiro nulo.)

DT_IMAGE Um valor binário com um tamanho de máximo de 231

-1 (2,147,483,647) bytes. .

DT_NTEXT Uma cadeia de caracteres Unicode com um comprimento máximo de 230

- 1 (1,073,741,823) caracteres.

DT_TEXT Uma cadeia de caracteres ANSI/MBCS com um comprimento máximo de 231

-1 (2,147,483,647) caracteres.

SSIS 2008

PROCERGS

22

Tabela de conversão de dados do SSIS

Tipo de dados SQL Server (SQLOLEDB; SQLNCLI10)

SQL Server (SqlClient)

Jet Oracle (MSDAORA)

Oracle (OracleClient)

DB2 (DB2OLEDB)

DB2 (IBMDADB2)

DT_BOOL bit bit Bit

DT_BYTES binary, varbinary, timestamp

binary, varbinary, timestamp

BigBinary, VarBinary

RAW RAW

DT_CY smallmoney, money

smallmoney, money

Currency

DT_DATE

DT_DBDATE date date date date date date

DT_DBTIME timestamp timestamp time time

DT_DBTIME2 time (p) time (p)

DT_DBTIMESTAMP datetime, smalldatetime

datetime, smalldatetime

DateTime TIMESTAMP, DATE, INTERVAL

TIMESTAMP, DATE, INTERVAL

TIME, TIMESTAMP, DATE

TIME, TIMESTAMP, DATE

DT_DBTIMESTAMP2 datetime2 datetime2 timestamp timestamp timestamp timestamp

DT_DBTIMESTAMPOFFSET

datetimeoffset(p)

datetimeoffset(p)

timestampoffset

timestampoffset

timestamp, timestamp,

varchar varchar

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

SSIS 2008

PROCERGS

23

DT_I8 bigint bigint BIGINT BIGINT

DT_NUMERIC decimal, numeric

decimal, numeric

Decimal NUMBER, INT

NUMBER, INT 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 Byte

DT_UI2

DT_UI4

DT_UI8

DT_WSTR

nchar, nvarchar, sql_variant, xml

char, varchar, nchar, nvarchar, sql_variant, xml

LongText NVARCHAR2, NCHAR

CHAR, ROWID, VARCHAR2, NVARCHAR2, NCHAR

GRAPHIC, VARGRAPHIC

GRAPHIC, VARGRAPHIC

DT_IMAGE image image LongBinary

LONG RAW, BLOB, LOBLOCATOR, BFILE, VARGRAPHIC, LONG VARGRAPHIC, definido pelo usuário

LONG RAW, BLOB, LOBLOCATOR, BFILE, VARGRAPHIC, LONG VARGRAPHIC, definido pelo usuário

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

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

DT_NTEXT ntext text, ntext NCLOB, NVARCHAR, TEXT

LONG, CLOB, NCLOB, NVARCHAR, TEXT

LONG VARCHAR, NCHAR, NVARCHAR, TEXT

LONG VARCHAR, DBCLOB, NCHAR, NVARCHAR, TEXT

DT_TEXT text CLOB, LONG

LONG VARCHAR FOR BIT DATA

LONG VARCHAR FOR BIT DATA, CLOB

SSIS 2008

PROCERGS

24

Padrões de Desenvolvimento de SSIS

Este documento tem como finalidade sugerir tipos de padrões, dar as instruções e orientações

necessárias para desenvolver aplicações de ETL com o SSIS 2008 neste treinamento.

Diretórios 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 padrão:

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

SSIS 2008

PROCERGS

25

Pacotes (Package)

1. Nomenclatura do pacote

O nome da package deve seguir o seguinte padrão:

{NOME_FISICO_TABELA}_n – onde “n” é um texto livre

Ex: TBS_DWF_PROJETOS

Observações:

O nome da tabela será sempre referente a tabela de destino, onde serão gravados

os dados.

Quando a package for do tipo controle deve utilizar o padrão CTRL_{PROJETO}_{NOME_ROTINA}

Quando a package for do tipo sub-controle deve utilizar o padrão SCTRL_{PROJETO}_{NOME_ROTINA}

Conexões para bancos de dados

1. Nomenclatura do database connection

O nome do database connection deve seguir o seguinte padrão:

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 código de no máximo 3 caracteres que identifica o ambiente no qual o Sistema de destino se encontra. Os valore possíveis são os seguintes:

o Transacional (TRA)

o Stage Area (STG)

o ODS (ODS)

o Data Warehouse (DW)

o Planning (PUB)

o Metric (MTR)

Ex:

CN_T_TBS_STG (Conexão do Projeto TBS que grava no ambiente da Stage Area)

CN_S_TBS_STG (Conexão do Projeto TBS que lê tabelas do ambiente Stage Area)

CN_T_TBS_DW (Conexão do Projeto TBS que grava no ambiente DW)

SSIS 2008

PROCERGS

26

Conexões para Arquivos

1. Nomenclatura de arquivos Flat file ou Excel

O nome da conexão do arquivo deve utilizar o seguinte padrão {NOME DO ARQUIVO} sem a

extensão, em letras maiúsculas e sem acentuação ou caracteres especiais.

Ex: IND_CORP_REAL (conexão para o arquivo IND_CORP_REAL.txt)

2. Nomenclatura de arquivos de log do SSIS

O nome da conexão do arquivo de log deve utilizar o seguinte padrão SSIS_{NOME DA

PACKAGE} caso nome da package não contenha o nome do projeto adicione-a como prefixo ao nome da

package.

Ex: SSIS_TBS_DWD_INDICADOR_PROJETO

(conexão para o arquivo SSIS_TBS_DWD_INDICADOR_PROJETO.csv)

3. Nomenclatura de arquivos DTSX

O nome da conexão do arquivo deve utilizar o seguinte padrão {NOME DA PACKAGE}.

Ex: TBS_DWD_INDICADOR_PROJETO

(conexão para o arquivo TBS_DWD_INDICADOR_PROJETO.dtsx)

Log do SSIS

1. Nomenclatura da conexão do log

O padrão de nomenclatura do log é LOG__{NOME DA PACKAGE}. Caso nome da package não

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 extensão “CSV” utilizando o padrão

de nomenclatura SSIS__{NOME DA PACKAGE}.csv . Caso nome da package não contenha a sigla do

projeto adicione-a como prefixo ao nome da package.

Ex: SSIS_TBS_DWD_INDICADOR_PROJETO.csv

SSIS 2008

PROCERGS

27

Variáveis de ambiente

1. Utilização das variáveis

Utilizar as variáveis para armazenar as seguintes informações:

Usuário para a conexão com o Banco de Dados

Senha para a conexão com o Banco de Dados

Instância para a conexão com o Banco de Dados

Endereço de arquivos externos

Outras propriedades dependentes de ambiente OBS: O ambiente de desenvolvimento do Visual Studio deverá conter cadastradas as variáveis

de ambiente referente às senhas de conexão para BD.

2. Nomenclatura das variáveis

Para variáveis de endereço do arquivo de log de erros do SSIS utilizar: nome igual ao do arquivo

de log

Ex: SSIS_TBS_CTRL_CARGA_EVENTUAL_1

Para variáveis de usuário para conexão com o Banco de Dados utilizar: {NOME DA

CONEXÃO}_USER

Ex: CN_T_TBS_DW_USER

Para variáveis de senha para conexão com o Banco de Dados utilizar: {NOME DA

CONEXÃO}_PASSWORD

Ex: CN_T_TBS_DW_PASSWORD

Para variáveis de instância para conexão com o Banco de Dados utilizar: {NOME DA

CONEXÃO}_SERVER

Ex: CN_T_TBS_DW_SERVER

Para variáveis de endereço de arquivos “DTSX” utilizar: DTSX_{NOME DA PACKAGE}

Ex: DTSX_TBS_DWD_INDICADOR_PROJETO

OBS: Caso nome da package não contenha a sigla do projeto adicione-a como prefixo.

Para variáveis de endereço de arquivos “FLAT FILES” utilizar: FLAT_{NOME DO ARQUIVO}

Ex: FLAT_TBS_CADASTRO_INDICADOR

OBS: Caso nome do arquivo não contenha a sigla do projeto adicione-a como prefixo.

SSIS 2008

PROCERGS

28

Configurações de pacote do SSIS

1. Nomenclatura da configuração de mapeamento das variáveis

O nome da configuração deve ser igual ao nome da variável a ser utilizada no pacote.

Ex: DTSX_TBS_DWD_INDICADOR_PROJETO

Deploy do SSIS

1. Deploy para o ambiente de Produção

Ainda está em definição pela Procergs.

2. Deploy para o ambiente de Homologação

O deploy deve estar habilitado nas propriedades do projeto com a pasta destino apontando para

a pasta gerada no diretório do projeto para que seja feita a passagem para produção de um arquivo zip

contendo a pasta do deploy utilizando a nomenclatura: DEPLOY_SSIS_{SISTEMA}_{aaaammdd}_{numero

versão}

Ex: DEPLOY_SSIS_PRJ_TBS_20120416_2.zip

(corresponde à segunda versão do deploy do projeto TBS gerada no dia 16 de abril de 2012)

Objetos do SSIS

1. Definição de nomenclatura dos objetos

Os nomes das principais objetos do SSIS devem seguir o seguinte padrão:

Não tem nome apropriado

<Função>

Ex: BUSCAR_SK

<Nome da tabela> ou <função da tarefa>

Ex: DWD_ACAO ou DWD_ACAO_DEL

<Nome da Package>

Ex: DWD_ACAO

<Nome do arquivo>

Ex: IND_CORP_REAL

SSIS 2008

PROCERGS

29

<Nome da tabela>

Ex: DWD_ACAO

INC_<Nome do arquivo>

Ex: INC_IND_CORP_REAL

INC_<Nome da tabela>

Ex: INC_DWD_ACAO

AGR_<Função>

Ex: AGR_CAT_ESPECIAL

SOR_<Função>

Ex: SOR_ORDENA_PROJETO

MUL_<Função>

Ex: MUL_REPLICA_ORIGEM

UNI_<Função>

Ex: UNI_TEMPO

FIL_<Função> ou RTR_<Função>

Ex: FIL_NULOS ou RTR_TP_VALOR

DTC_<Função>

Ex: DTC_CONVERTE

DER_<Função>

Ex: DER_GERA_FIXOS

LKP_<Função>

Ex: LKP_DWD_ACAO

OLE_<Função> ou <Função SQL>_<Nome Tabela>

Ex: UPD_DWD_POLO_T ou DEL_DWD_POLO_T

SCR_<Função>

Ex: SCR_NRO_INT

SSIS 2008

PROCERGS

30

MEJ_<Função>

Ex: MEJ_PUB_STG

FST_<Função>

Ex: FST_COPIA_ARQUIVO

EPT_<Função>

Ex: EPT_EXECUTA_BAT

CCN_<Tabela>

Ex: CCN_DWD_POLO

SCD_<Função>

Ex: SCD_POLO

<Nome da tabela>

Ex: DWD_POLO

INC_<Nome da tabela>

Ex: INC_DWD_POLO

TOT_<Função>

Ex: TOT_COPIA_TABELAS

SSIS 2008

PROCERGS

31

Utilizando a ferramenta Microsoft SSIS

Para demonstrar as funcionalidades da ferramenta SSIS, será desenvolvida para a PROCERGS

uma solução 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 máquina de desenvolvimento, certifique-se que os diretórios

dos objetos SSIS estão criados no seu computador. Se não estiver criado crie no WINDOWS EXPLORER.

E:\PROCERGS\ETL\SSIS

SSIS 2008

PROCERGS

32

Modelo Dimensional:

Para os exercícios a serem desenvolvidos neste manual seguiremos o seguinte modelo de dados:

SSIS 2008

PROCERGS

33

Criação 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 Básico SSIS) e salvaremos no

caminho: E:\PROCERGS\ETL\SSIS

SSIS 2008

PROCERGS

34

Criação de DATA SOURCES

Antes de iniciar a construção dos pacotes, devemos criar as conexões com os Bancos de Dados

(Data Sources), das quais serão utilizadas tanto como origem e destino. Exemplo: conexões para STG e DW.

Para as conexões com o banco de

dados, poderemos criá-las uma vez no projeto e

reutilizá-las nos pacotes, para isso clique com o

botão direito em Data Sources / New Data Source

no painel Solution Explorer.

Logo após 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 conexões:

USUARIO SENHA DATABASE SERVER NAME CONEXÃO

TREINAMENTO_SSIS 123 SSIS2008ORACLE1

TREINAMENTO_SSIS 123 T_PROCERGS_TBS_STG SSIS2008ORACLE1 CN_T_TBS_STG

TREINAMENTO_SSIS 123 T_PROCERGS_TBS_DW SSIS2008ORACLE1 CN_T_TBS_DW

TREINAMENTO_SSIS 123 T_PROCERGS_SHARE SSIS2008ORACLE1 CN_S_TBS_SHA

TREINAMENTO_SSIS 123 SSIS_DB SSIS2008ORACLE1 CN_T_SSIS_DB

T_PROCERGS_GRP grp123 ORCL CN_S_TBS_TRA

Procure sempre utilizar a conexão proprietária do banco de dados em uso.

SSIS 2008

PROCERGS

35

Na janela Connection Manager escolher o Provider “SQL Server Native Client 10.0”.

Indique o nome do servidor, usuário e senha, conforme o quadro abaixo e clique em “Test

Connection” para testar a conexão. Após clique em “OK” e depois em “Next”.

SSIS 2008

PROCERGS

36

Na tela Completing the Wizard, preencha o “Data source name” conforme abaixo (padrão Procergs).

Fazer o mesmo procedimento para as demais conexões conforme a tabela de conexões citada na página anterior, com exceção do usuário “T_PROCERGS_GRP”, que só será criado posteriormente. Pois se trata de uma conexão Oracle e não SQL Server como as outras quatro conexões que foram configuradas na Data Source.

Após realizar as configurações das conexões a pasta de Data Sources ficará da seguinte maneira:

SSIS 2008

PROCERGS

37

Criação 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 serão criados com um

número sequencial no final do nome: Package1.dtsx, Package2.dtsx, Package3.dtsx e assim por diante.

A WIN SOLUTIONS utiliza como melhor prática criar no mínimo um pacote para tratar de cada

tabela destino. Isto serve para facilitar a manutenção, reprocessamentos e modulariza o projeto de ETL.

Para o treinamento utilizaremos exemplos de construção de mapas baseados em sistemas

implantados na PROCERGS.

Para o exemplo iniciaremos com a construção 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 informações do SERVICO.

Contar quantos registros foram lidos.

Ajustar datatypes de arquivos Texto para SQL Server.

Contar quantos registros serão 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 questão. Neste fluxo de controle, algumas tarefas padrão deverão ser criadas:

Gera registro do LOG

Truncar tabela (como Stage Area é uma tabela temporária, sempre devemos limpá-la antes de iniciar a nova carga).

Executar o fluxo de dados

Atualizar o registro de LOG com as informações dos registros lidos e gravados.

SSIS 2008

PROCERGS

38

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 função dar

representatividade para os pacotes.

Como primeiro passo, devem ser incluídas as

conexões que serão utilizadas no pacote. Para isso clicar

com o botão direito do mouse no quadro Connection

Managers e selecionar a opção “New Connection From

Data Source”

Selecionar as conexões que irá usar, conforme abaixo:

SSIS 2008

PROCERGS

39

Para iniciar a construção 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.

Não é aconselhável, mas podem existir vários Sequence Container em um mesmo mapa de ETL.

Como padrão, 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.

SSIS 2008

PROCERGS

40

Colocar o nome de CRIA_LOG, utilizar a conexão 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')

Próximo passo será criar duas tarefa de fluxo de dados, utilizando o objeto Data Flow Task

SSIS 2008

PROCERGS

41

Arrastar dois Data Flow Task para dentro do Sequence. Um para o fluxo que irá carregar a

Stage e outro para o fluxo responsável por finalizar o log.

Incluir os nomes TBS_STG_SERVICO e FINALIZA_LOG conforme quadro abaixo. Depois liga-

los para formar o fluxo.

Para gerar o finaliza LOG, criar as variáveis que armazenam as quantidades registros lidos e

inseridos.

Clicar no inserido no Control Flow.

Logo após incluir o quadro das variáveis, clicando no Menu SSIS e depois em “Variables”:

Inserir as duas variáveis REG_INSERIDOS e REG_LIDOS, conforme imagem abaixo:

.

SSIS 2008

PROCERGS

42

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 derivação das variáveis 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 faça o seguintes passos: mudar o Data

access mode para “SQL command” e inserir o comando abaixo no SQL command text para leitura das

informações do LOG:

SELECT MAX(DTH_INICIO_EXECUCAO) DTH_INICIO_EXECUCAO

FROM TBS_ODS_LOG_CARGA

WHERE NOME_MAPA_ETL='TBS_STG_SERVICO'

SSIS 2008

PROCERGS

43

Dentro do Data Flow FINALIZA_LOG, incluir agora o “Derived Column” e renomear para

“DER_SET_CONTADORES”.

SSIS 2008

PROCERGS

44

A seguir, abra a “Derived Column” que acabou de inserir e faça os seguintes comandos:

Selecionar a pasta Variables e arrastar as variáveis recém criadas até a coluna Expression. Depois,

renomeá-las em Derived Column Name com seus respectivos nomes, conforme imagem abaixo.

Como último estágio do FINALIZA_LOG, incluir o “OLE DB Command” e renomeá-lo para

“UPD_TBS_ODS_LOG_CARGA”.

SSIS 2008

PROCERGS

45

Após abrí-lo, faça os seguintes passos:

Na aba “Connection Managers”, inclua a conexão “CN_T_TBS_DW”.

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

SSIS 2008

PROCERGS

46

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 conteúdo das

variáveis resultantes da derivação para o UPDATE. A ordem dos parâmetros se dá em base no “SQL

Command” inserido anteriormente. Note que as linhas de comando: “QTD_LIDOS=?”, “QTD_INSERIDOS=?”

e “DTH_INICIO_EXECUCAO=?” estão 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.: Não esqueça de ligá-los para formar o fluxo de dados.

SSIS 2008

PROCERGS

47

Para construção do fluxo de dados de carga da tabela “TBS_STG_SERVICO” devemos seguir

os passos:

Ler um arquivo com informações do “SERVICO”.

Contar quantos registros foram lidos.

Ajustar datatypes de arquivos Texto para SQL Server

Contar quantos registros serão gravados.

Inserir na tabela “TBS_STG_SERVICO”.

A parametrização para montar este fluxo de dados segue os seguintes passos:

Insira o “FLAT FILE SOURCE”

Renomeie esse objeto para SERVICO.

Logo após abra e clique em “NEW “ para nova conexão com arquivo “TXT”.

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

No botão “Browse...”, localize o arquivo SERVICO.txt que está no seguinte caminho:

E\:PROCERGS\ETL\Sources. Este arquivo contém as informações de origem.

Marque “Column names in the first data row”. Serve para informar que o arquivo contém

cabeçalho.

Mude a opção “Header row delimiter” para “Semicolon {;}”. Serve para informar que a

delimitação das linhas do cabeçalho foram divididas por “;”.

SSIS 2008

PROCERGS

48

Em “Columns”, mude a opção “Column delimiter” para “Semicolon {;}”. Indica que o delimitador

de colunas é separado por “;”.

.

Em “Advanced” valide os Datatypes, nesta opção voce pode mudar o datatype que esta vindo no

arquivo .txt

OBS: O aconselhável é deixar no formato que está, e converter depois com um objeto

específico.

SSIS 2008

PROCERGS

49

No próximo objeto do mapa, contar quantos registros serão lidos do arquivo. Para isso siga

imagem abaixo:

Renomeie o objeto para “CNT_REG_LIDOS” e, logo após abrí-lo, em “VariableName”, set a

variável “REG_LIDOS”.

SSIS 2008

PROCERGS

50

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 mesmos passos do objeto

“CNT_REG_LIDOS” trocando a variável para “User::REG_INSERIDOS”.

SSIS 2008

PROCERGS

51

Insira o “OLE DB Destination”, renomeie para “INC_TBS_STG_SERVICO”. Nele informe a

conexão e nome da tabela destino.

Logo após, em “Mappings”, realizar o mapeamento dos atributos convertidos.

SSIS 2008

PROCERGS

52

Voltando ao Fluxo de Controle, após 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:

Após inserir o objeto “TRUNCA_TABELA”, incluir os seguintes comandos conforme imagem abaixo:

TRUNCATE TABLE TBS_STG_SERVICO

SSIS 2008

PROCERGS

53

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:

SSIS 2008

PROCERGS

54

Como próximo exercício 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 serão

convertidos para o formato XLS colocando R8 para os

numéricos e NTEXT para os textos. Renomear os apelidos

de saída 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 conexão

para este Excel Destination, essa nova

conexão 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

SSIS 2008

PROCERGS

55

Ao clicar em New..

aparecerá a tela acima.

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".

Após 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.

SSIS 2008

PROCERGS

56

Na coluna Mappings, mapeie as colunas que foram convertidas em Excel conforme a ilustração

a seguir:

No final ir em “Connection Managers” e renomear a nova conexão criada de Excel Connection

Manager para SERVICO_STAGE, atendendo os padrões de nomenclatura.

Para evitar que o arquivo Excel SERVICO_STAGE seja populado varias vezes com o mesmo

conteúdo 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 também.

Adicione a variável de ambiente PAR ao Sequence

Container.

SSIS 2008

PROCERGS

57

Inclua um objeto Execute SQL Task ao fluxo, antes do

TRUNCA_TABELA.

Marque a opção 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 variável

User::PAR

SSIS 2008

PROCERGS

58

Adicione dois objetos File System Task.

Configure as setas de fluxo conforme a figura abaixo:

SSIS 2008

PROCERGS

59

No objeto FST_PRIMEIRA_CARGA crie um

novo DestinationConnection.

Usage type: Create file

File: E:\PROCERGS\ETL\SERVICO_STAGE.xls

Marque a opção OverwriteDestination como

True.

Esse será o nosso backup

Crie um SourceConnection também

Usage type : Create file

File:

E:\PROCERGS\ETL\Sources\SERVICO_STA

GE.xls

Renomear as novas conexões em Connection Managers:

SERVICO_STAGE.xls para SERVICO_STAGE_LIMPA

SERVICO_STAGE.xls 1 para SERVICO_STAGE_POP

SSIS 2008

PROCERGS

60

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 próximo tópico.

SSIS 2008

PROCERGS

61

Instalação do Attunity Connector

A ferramenta SSIS, na instalação padrão, não possui objetos específicos para ler e gravar dados

de bases Oracle, porém é possível baixar a instalar o Attunity Driver.

O conector Attunity permite a extração de dados em massa de e para Oracle dentro do ambiente

Microsoft SQL Server, através de interfaces padrão em ambos os modos, completo e incremental. O conector

Oracle suporta o método de carga rápida e pode executar vários processos em paralelo.

Após a instalação do driver o SSIS possuirá mais duas opções de objeto: Oracle Source e

Oracle Destination.

Faça o Download e instalação do Attunity que se encontra no seguinte link:

http://www.microsoft.com/en-us/download/details.aspx?id=29284.

Logo após a instalação, em “Toolbox”, clique com o botão direito e então selecione Choose

Items...

Selecione a aba “SSIS Data Flow Items” e marque as opções Oracle Source e Oracle

Destination, conforme abaixo:

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

SSIS 2008

PROCERGS

62

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”.

SSIS 2008

PROCERGS

63

Insira os dados da conexão do banco Transacional Oracle, teste a conexão e clique em OK.

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

SSIS 2008

PROCERGS

64

Clique em “Columns” desmarque as colunas que não serão 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.

SSIS 2008

PROCERGS

65

Realizando um Join com SSIS

Nesta pratica, serão 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 conexão da base

de Stage, em “Data access mode” escolha a opção “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 faça as mesmas configurações anteriores, porém mudando a

query:

SELECT CLIENTE_SIGLA, CLIENTE_NOME, ANALISTA_NEGOCIO FROM TBS_STG_CLIENTE

Conecte na saída de cada OLE DB Source em um Sort

Dentro de cada objeto Sort marque a coluna CLIENTE_SIGLA. Esta coluna será utilizada na

comparação para realizar o Join.

SSIS 2008

PROCERGS

66

Ligar as duas saídas 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 opções, pois nesse caso será realizado um INNER JOIN então tanto faz quem

será o Left ou Right. No segundo Sort que for conectado não abrirá nenhuma janela.

Dentro do objeto Merge Join selecione as colunas que serão 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.

SSIS 2008

PROCERGS

67

Após realizar todas as etapas anteriores, o fluxo deverá ficar semelhante à imagem abaixo:

Para gravar os dados no arquivo CLIENTE.txt será necessário utilizar o objeto Flat File

Destination

Dentro das configurações 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 conexão:

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 opção: “Semicolon{;}”. Marque

“Column names in the first data row”.

SSIS 2008

PROCERGS

68

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

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

SSIS 2008

PROCERGS

69

Criação de uma PACKAGE do tipo dimensional (DWD)

Após a criação de todas as

packages de Stage Area, o próximo

passo em um projeto é a criação de

packages de carga das tabelas

dimensionais.

Para o exemplo iniciaremos

com a construção 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

dimensão.

Identificar qual operação deve ser

realizada:

Alteração

Inserção

Descarte

Para criação 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 criação da STG não estarão descritos na criação deste mapa dimensional.

SSIS 2008

PROCERGS

70

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 questão. Neste fluxo de controle, algumas tarefas padrão deverão ser criadas:

Gera registro do LOG

Buscar maior (NRO_INT)

Executar o fluxo de dados

Atualizar o registro de LOG com as informações dos registros lidos e gravados.

Primeiramente, inserir as seguintes variáveis dentro do Container:

Para buscar o maior NRO_INT, devermos

fazer o seguinte:

Utilizar o item

arrastando para dentro do container.

Como padronização, sempre se informa

qual é a função 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 conexão e criar o comando

SQL.

SSIS 2008

PROCERGS

71

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 variável para armazenar o maior NRO_INT:

Para o data flow FINALIZA_LOG utilizar os mesmos passos dos exercícios anteriores, porém

este mapa atualiza mais atributos na tabela TBS_ODS_LOG_CARGA conforme as imagens aba

SSIS 2008

PROCERGS

72

Para o data flow TBS_DWD_CLIENTE as novidades são:

Inclusão de leitura em tabela da STAGE AREA com a inclusão das categorias especiais.

Uma das formas mais fáceis de realizar a inclusão das categorias especiais é realizar o select

com UNION incluindo as categorias novas.

Para o exercício, as categorias que serão criadas são:

Não se Aplica

Sem Referência

SSIS 2008

PROCERGS

73

Insira o objeto Lookup:

Ele é utilizado para verificar se a dimensão já está cadastrada:

Marcar ‘No cache’ e ‘Ignore Failure’.

Siga a sequencia de passos:

SSIS 2008

PROCERGS

74

Após realizar o Lookup, devemos incluir o objeto “Conditional Split”:

Ao ligar o fluxo neste objeto, selecionar a saída “Lookup Match Output”, conforme abaixo:

Após ligar o fluxo, abra o objeto “Conditional Split” para definirmos o que será realizado

(Inclusão, alteração ou descarte).

SSIS 2008

PROCERGS

75

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 não existir o registro (verificação realizada no Lookup anterior), deve ser realizada a inserção

do registro na dimensional. Se existir o registro, deve ser realizada uma alteração no registro existente.

Para o ALTERA, após contarmos quantos registros serão alterados, incluiremos o seguinte

comando:

UPDATE [TBS_DWD_CLIENTE]

SET [NOME_CLIENTE] = ?

WHERE [NRO_INT_CLIENTE] = ?

SSIS 2008

PROCERGS

76

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

serão incluídos e realizar o INSERT no banco de dados.

Para descobrir qual é o próximo NRO_INT utilizaremos os seguintes objetos:

e

O SSIS possui objetos que tornam possível a utilização de scripts (C# ou VB). O “Control Flow”

possui o objeto “Script Task” que executa um script podendo interagir com as variáveis do package ou do

sistema. Para a “Data Flow” existe o “Script Component” este por sua vez pode interagir com variáveis e

colunas do fluxo de dados.

O objeto Script Component terá como função neste exemplo contar quantos registros estão

passando pelo link INSERT. A implantação deste objeto

segue a seguir:

Ao arrastarmos o objeto Script Component, a

seguinte tela irá aparecer.

Selecionar a opção Transformation, pois esta

opção possibilita a entrada e saída de dados.

A opção Source só fornece a saída de dados

e a Destination só recebe dados.

SSIS 2008

PROCERGS

77

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),

não será possível trocar. Para trocar só excluindo o objeto e criando um novo. Nesse Exercício será utilizado

o C#.

Clicar em “Edit Script” e inserir o seguinte código:

SSIS 2008

PROCERGS

78

Próximo passo no fluxo é somar o valor, obtido no início 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:

Após finalizar a construção do mapa, execute-o, e verifique os registros na base de dados:

SSIS 2008

PROCERGS

79

Criação de um PACKAGE do tipo dimensional (DWD) com CACHE

Caso a dimensão seja muito grande e necessite um ganho de desempenho do banco de dados

na busca dos dados, ou ocorram varias lookup’s em cima da mesma tabela poderá ser utilizado um objeto de

cache na hora da consulta da lookup. (Obs: O cache irá consumir memória da máquina)

FAÇA O MESMO PROCEDIMENTO DA CRIAÇÃO 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 conexão 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.

SSIS 2008

PROCERGS

80

Alterar as Lookup já inseridas anteriormente. Note que mudamos a opção de “Cache Mode” para

Full cache e “Connection type” para Cache connection manager. Em Connection selecione a conexão criada

anteriormente. Segue ilustração abaixo:

Confira o mapeamento das colunas em mappings.

Isso ira criar uma nova conexão em Connection Managers

Essa nova conexão será usada na Lookup dentro do Data Flow TBS_DWD_CLIENTE..

Crie um mapa para tabela dimensional TBS_DWD_SERVICO

SSIS 2008

PROCERGS

81

Criação de um PACKAGE do tipo dimensional com SLOWLY CHANGING DIMENSION e arquivo Excel como origem (DWD)

Para o próximo exemplo iremos utilizar as mesmas configurações do Control Flow do exercício

anterior, a única mudança ocorrerá no Data Flow, conforme a figura abaixo. As configurações 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

Conversão das colunas

Union entre as duas origens

Contagem dos registros lidos

Verificação se o registro já existe com o objeto

Slowly Changing Dimension

Inserção se não existe

Alteração se ocorreu

Contagem dos registros não utilizados

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

Atenção, o Slowly Changing Dimension,

só irá funcionar se o banco aonde esta sendo

consultado seja SQL Server.

SSIS 2008

PROCERGS

82

Inserir uma nova conexão que irá buscar o arquivo Excel SERVICO_STAGE.xls, criado no

exercício 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 após em Connection Managers renomear a conexão 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,

'Não se aplica' AS NOME_SERVICO_BASICO

UNION

SELECT -2 AS COD_SERVICO_BASICO,

'Sem referência' AS NOME_SERVICO_BASICO

Utilizar o objeto Aggregate, agrupando COD_SERVICO_BASICO e NOME_SERVICO_BASICO conforme a imagem ao lado:

SSIS 2008

PROCERGS

83

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 após a contagem dos registros lidos, utilizar

o objeto Slowly Changing Dimension e configura-

lo conforme figura abaixo. Esse objeto irá verificar

se houve mudanças na dimensão alterando ou inserindo registros novos, semelhante ao exercício anterior.

O COD_SERVICO é o campo chave para a alteração, portanto se ele for alterado será considerado como

registro novo.

Escolha a opção Changing Attribute, sendo

assim se ocorrer alteração no campo

NOME_SERVICO ele será alterado na tabela

dimensional.

Na próxima 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 saída um deles será o update e o outro o

insert.

Os próximos passos são descritos no exercício anterior.

SSIS 2008

PROCERGS

84

Criação de um PACKAGE do tipo FATO (DWF)

Após a criação de todos os Packages

dimensionais, o próximo passo em um projeto é a

criação de Packages de carga das tabelas de fatos.

Para o exemplo iniciaremos com a

construção 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 são:

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 não existir buscar o registro “Sem

Referência”.

Unificar o fluxo.

Verificar a dimensional de Servico para buscar o

NRO_INT. Se não existir buscar o registro “Sem

Referência”.

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á possível remover os

campos que não serão mais utilizados.

SSIS 2008

PROCERGS

85

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 questão.

Neste fluxo de controle, algumas tarefas padrão

deverão 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 informações dos registros lidos e gravados.

No modelo definido, para reprocessamento, é só executar novamente a carga que o conteúdo

as STAGE AREA irá substituir o conteúdo da tabela de fatos.

Por isso deverá ser criado um data flow que elimine os registros que estão 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=?

SSIS 2008

PROCERGS

86

Para data flow TBS_DWF_CUSTOS_RECEITAS_LUCROS,

Iniciar lendo no objeto OLE DB Source a tabela TBS_STG_CUSTOS:

Nessa Fato as Lookup’s não terão CACHE como as dimensionais.

Na Lookup selecionar “No Cache” e “Redirect rows to error output” para que os registros não

encontrados na Lookup sejam redirecionados para um novo fluxo.

SSIS 2008

PROCERGS

87

Esse novo fluxo terá um “Derived Column” que irá substituir o conteúdo não encontrado na

Lookup por -2 (Sem referência). Isso fará com que todos os registros que vieram da Stage e não foram

encontrados na Dimensional se tornem sem referência na Fato.

Na Lookup de Categorias Especiais que receberá o novo valor gerado no Derived Column (-2)

selecionar “Fail Component” porque ao contrário da primeira Lookup que redirecionava os valores não

encontrados esta nova Lookup será obrigada a achar -2, se não achar é porque existe um erro na construção

da dimensional.

SSIS 2008

PROCERGS

88

Unir os Links que são de Sem Referências, com os que existem na dimensional:

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

SSIS 2008

PROCERGS

89

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 exercícios anteriores.

SSIS 2008

PROCERGS

90

Criação de uma PACKAGE DE CONTROLE

Para colocar todos os pacotes desenvolvidos no projeto em

uma ordem de execução utiliza-se o objeto Execute Package Task.

Para finalizar o exercício, deve-se criar um pacote chamado:

CTRL_TBS_CARGA_STAGE.dtsx

Vamos criar um container e arrastar o objeto

para dentro do mesmo, além dos objetos para

criação do LOG. O próximo passo é criar a conexão para o pacote inserido.

Para criar a conexão 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 conexão criada para TBS_STG_SERVICO

No objeto TBS_STG_SERVICO incluir a conexão recém criada.

SSIS 2008

PROCERGS

91

Executar um Pacote

Clique com o botão direito sobre o pacote que deseja executar e logo após clique com o botão

esquerdo em Execute Package.

Será disparado o Debug sobre a package em questão.

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 após deve ser criado a conexão para o arquivo de LOG.

SSIS 2008

PROCERGS

92

SSIS 2008

PROCERGS

93

Package Configuration

Para executar os mapas de ETL em ambientes diferentes, como desenvolvimento e produção, é

necessário que os valores das conexões mudem, como por exemplo, usuários e senhas de banco de dados,

além de caminhos de arquivos.

Provavelmente o desenvolvedor SSIS não terá acesso aos usuários e senhas dos bancos de

produção, por outro lado o DBA não realizará uma manutenção no projeto de SSIS para alterar os

parâmetros de conexão, sendo assim uma das soluções é inserir os usuários e senhas das conexões em

uma tabela do banco de dados, onde o DBA apenas realizará uma atualização nessa tabela com os usuários

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 conexão CN_T_SSIS_DB

2) Acesse o menu: SSIS > Package Configuration

SSIS 2008

PROCERGS

94

3) Marque a opção Enable package configurations e logo em seguida clique em Add...

4) Na próxima tela configure conforme abaixo e depois clique em Next.

Configuration type: Environment variable

Environment variable: CN_T_SSIS_DB_USER

SSIS 2008

PROCERGS

95

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 configuração (CN_T_SSIS_DB_USER) e clique em Finish.

SSIS 2008

PROCERGS

96

7) Repita o processo anterior mais 3 vezes, adicionando 3 novas variáveis de ambiente e

marcando as propriedades conforme abaixo:

CN_T_SSIS_DB_PASS: (Password)

CN_T_SSIS_DB_BASE: (InitialCatalog)

CN_T_SSIS_DB_SERVER: (ServerName)

Após realizar as configurações a tela Package Configurations Organizer deverá ficar igual à

figura abaixo:

8) Agora, iremos adicionar uma nova configuração, 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

SSIS 2008

PROCERGS

97

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 configuração (CN_T_TBS_STG_USER) e clique em Finish.

SSIS 2008

PROCERGS

98

11) Repita os passos 8, 9 e 10 três vezes cada um para os demais parâmetros da conexão de

Stage: Password, Data Base e Server. No final a janela Package Configuration Organizer

deverá ficar igual à imagem abaixo:

Após realizar esses passos faça o mesmo para as demais conexões que tiver como DW e Oracle.

Caso for uma conexão de arquivo, deve ser marcada a propriedade ConnectionString, pois os arquivos

apenas possuem o caminho onde estão localizados.

Podemos acessar a base SSIS_DB do SQL Server e listar os dados da tabela

SSIS_TBS_Configurations. O DBA ou qualquer responsável pelas senhas realizará uma atualização na

coluna ConfiguredValue dessa tabela.

Expressions

As expressions são utilizadas para preencher parâmetros dinamicamente, cada vez que a

package é aberta elas são 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 variável, a

propriedade SQLStatement do objeto Execute SQL Task irá ler o conteúdo da variável através das

Expressions.

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

Utilizaremos nessa pratica o mapa TBS_STG_CLIENTE.dtsx.

SSIS 2008

PROCERGS

99

Primeiramente, crie uma variável no Sequence Container, chamada de QUERY do tipo String e

adicione o conteúdo: TRUNCATE TABLE TBS_STG_CLIENTE

Abra o componente TRUNCA_TABELA, vá à aba Expressions e clique no botão

Na próxima janela selecione a property: SqlStatementSource e clique novamente no botão

Clique e arraste a variável QUERY para o campo Expression e clique em OK

SSIS 2008

PROCERGS

100

Com isso não importa o conteúdo do campo, ele sempre irá pegar o valor configurado na

Expression, portanto na imagem a seguir, quando o mapa for executado não apresentará erros, pois o campo

SQLStatement irá trazer os valores da variável QUERY.

PackageProtecion

Por padrão o SSIS guarda as senhas e caminhos em suas configurações, com a opção

“EncryptSensitiveWithUserKey”, para tornar dinâmico deveremos desativar esta opção trocando-a para

“DontSaveSensitive” nas propriedades da package.

SSIS 2008

PROCERGS

101

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 não mais no SSIS. Para isso o Package Configuration precisa estar configurado,

além 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 conexões 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 conexão 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

SSIS 2008

PROCERGS

102

Após 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 diretório padrão. Este diretório será criado após o diretório do projeto, como segue:

SSIS 2008

PROCERGS

103

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á e-

mails utilizando o objeto “Script Task”.

Como exemplo utlizaremos a tabela TBS_STG_SERVICO, adicionar o objeto Script Task no

fluxo, conforme imagem.

SSIS 2008

PROCERGS

104

Utilizaremos como linguagem do Script “Microsoft Visual Basic 2008”, após selecionar a

linguagem selecione a opção 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.

SSIS 2008

PROCERGS

105

Para referenciar variáveis 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 variável para informar a mensagem do e-mail.

Para conseguir utilizar a variável criada no

SSIS é preciso seleciona-la no script

conforme a imagem ao lado:

Comentários no SSIS 2008

Para fazer um comentário no dentro do package do SSIS 2008 basta não selecionar nenhum

objeto e digitar o comentário.

SSIS 2008

PROCERGS

106

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 execução 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 não podem ser alteradas, mas dependendo

do objeto ele pode conter setas verdes e vermelhas.

Podemos utilizar variáveis para desviar o fluxo como exemplo abaixo, o fluxo só ira passar pela

seta caso a condição seja atendida.

SSIS 2008

PROCERGS

107

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 não dois. Ao escolher a opção “Logical OR” a seta ficará pontilhada.

Glossário

ÍTEM DESCRIÇÃO

SSIS SQL Server Integration Service

SQL Structured Query Language

TBS Treinamento Básico SSIS

ETL Extract Transform Load

DW Data Warehouse

STG Stage

SSIS 2008

PROCERGS

108

DWD Data Warehouse Dimensional

DWF Data Warehouse Fato

B.I Business Intelligence

DB Data Base

ODS Operational Data Store

CN Conexão