manual ssis 2008
DESCRIPTION
Manual SSIS 2008TRANSCRIPT
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
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