Você está na página 1de 8

BI SSIS Sobre o Export / Import Wizard Permite combinar apenas uma fonte e um destino.

o. Assim, no possvel, por exemplo, extrair ao mesmo tempo dados de um arquivo Excel e de uma tabela de banco e colocar o resultado em um arquivo FLAT. No possvel, tambm, fazer transformaes em nvel de coluna.

SSIS Packages Quando se cria uma package SSIS, tal package armazenada como um arquivo em disco, usando a extenso DTSX. um arquivo XML com a lgica e layout da package. Isso permite levar manualmente a package para outros projetos ou mesmo fazer deploy manual em diferentes servidores, ou, ainda, incluir a package como parte de uma package de deployment. SSIS Conexes Tanto um data source quanto uma package connection so string de conexo. Entretanto, um data source pode ser compartilhado entre diversos pacotes de um mesmo projeto. Assim, um data source visvel no escopo do projeto. Em termos prticos, um data source funciona como uma referncia de conexo para uma package connection, evitando retrabalho. Quando uma package connection criada a partir de um data source, qualquer alterao feita na package connection refletida no respectivo data source. Entretanto, quando uma alterao feita no data source tal alterao no imediatamente refletida nas packages connections. Neste caso, necessrio editar cada package connection para que a mudana seja refletida. Desta forma, package connections somente so atualizadas quando as mesmas so abertas para edio no BIDS. SSIS Objetos para controle de fluxo Control flow tasks: objetos de fluxo de dados que realizam tarefas (trabalhos); Control flow containers: providencia mecanismo para agrupar tarefas e outros containers. Constraints: permite conectar tarefas e containers e definir a ordem de execuo e precedncia.

SSIS Variveis Permite passar valores entre taks e containers, aceitar valores de fontes externas, ou at mesmo construir valores ou cdigos dinamicamente durante a execuo da package. As variveis tambm podem ser usadas para auditoria e logging. Variveis so visveis para uma task ou container se o escopo da varivel est definido para: A task ou container em questo, j que uma varivel pode estar associada diretamente a uma tarefa; Num container de nvel superior; No nvel da package.

Variveis so referenciadas como User::[VariableName] e System::[VariableName]. Script Taks Para utilizar variveis neste tipo de tarefa, seja de usurio ou sistema, necessrio inclu-las atravs das opes ReadOnlyVariables ou ReadWriteVariables. Data Profiling Task Usado para checar a limpeza e plenitude dos dados de uma origem, antes de um trabalho de ETL, visando definir o esforo e tratamento que sero necessrios sobre essa origem. Ajuda entender problemas nos dados, como repetio e valores nulos, a estrutura dos dados, os possveis relacionamentos, etc. Aps executar a tarefa, ser necessrio chamar o utilitrio Data Profile Viewer para visualizar os resultados. Data Flow O XML Source permite extrair dados de um arquivo XML, entretanto, requer um esquema XSD. Note que no existe dentro da aba Data Flow objeto especfico para um destino XML. Os objetos origem/destino dentro do Data Flow possuem a propriedade ValidateExternalMetadata, que por padro True, a qual permite em tempo de projeto referenciar tabelas que ainda no existem efetivamente no banco, mas que sero criadas na execuo da package (isso quando setada para False). Ela mais comumente usada em um objeto de destino. possvel configurar o objeto OLE/DB Destination para usar o Data Access Mode Fast Load, o qual ao invs de inserir uma linha por vez, far a insero em lotes. possvel, inclusive, especificar a quantidade de linhas por lote a partir desse modo. Os objetos de transformao so categorizados em: 1. Logical row-level transformations 2. Multi-input or Multi-output transformations: permite trabalhar com vrios sources de entrada ou mesmo gerar vrios destinos. 3. Multi-row transformations: realiza transformaes sobre um conjunto de linhas. Pode acarretar overhead, j que tida como operao intensiva. 4. Advanced data-preparation transformations Objetos de transformao em destaque (maiores referncias na pg 42)

Logical row-level transformations Cache transformation Character map Copy column Row count Audit Permite que os dados que sero usados por um objeto Lookup Transformation sejam guardados em cache de modo a ser usado em mltiplos componentes lookups Operaes comuns de texto como upper, lower, etc Duplica o valor de uma coluna para uma nova coluna, em cada linha Permite guardar o total de linhas afetadas pela transformao em uma varivel [ver] Disponibiliza colunas adicionais durante a transformao visando auditoria, como ExecutionStartTime e PackageName

Multi-input or Multi-output transformations Conditional split Multicast Lookup Merge Filtra ou faz rota sobre os dados de uma entrada produzindo uma ou mais sadas, sendo que cada linha pode ser enviada somente para uma nica sada Gera um ou vrios outputs. Neste, cada linha pode ser enviada para mais de um output diferente, ao contrrio do conditional split Permite combinar linhas de duas origens, com o recurso adicional de cach. No requer componente sort. Combina linhas de duas origens baseado numa coluna de ordenao, chamada SORT KEY. Neste caso, os inputs devem estar ordenados usando um componente Sort. O Merge no faz um JOIN, mas ele combina cada linha das origens, deixando uma linha da origem A no topo de outra linha da origem B quando combinadas pela SORT KEY. As linhas que no combinarem simplesmente sero includas no resultado. Faz join das linhas de dois inputs ordenados, via componente sort. Este componente bem flexvel, pois permite definir o tipo de join, bem como escolher quais colunas sero exibidas, alm de permitir a customizao de rtulos para essas colunas. Similaridade ao comando union all

Merge Join

Union All

Nota: os componentes preferidos para combinar linhas de duas origens so Merge Join e Lookup. O lookup tende a ser mais performtico. Multi-row transformations Percent sampling Row sampling Sort Pivot Agregate Unpivot

Advanced data-preparation transformations OLE DB Realiza operaes de banco como update e delete, sendo uma linha por

Command

vez.

Transaes no SSIS No SSIS transaes podem ser configuradas em vrios nveis dentro de um pacote. possvel configurar pontos a partir dos quais uma re-execuo da package acontecer. Esse processo de configurao chamado checkpoint (permite restartabilidade da package). Uma transao pode ser setada no escopo da package, de container ou de uma task. A propriedade a ser setada TransactionOption, sendo: Required: se uma srie de tarefas precisam ser executadas como uma unidade atmica (ou tudo ou nada), ento coloque tais tarefas em um container e altere a propriedade TransactionOption do container para este valor; Supported: por default este o valor. Isto permite que a tarefa herde as configuraes de um componente de nvel superior (normalmente dentro de um container devemos deixar como suportada); NotSupported: evita com que a tarefa ou container participe de um contexto transacional.

Notas: Transaes no SSIS utilizam o MSDTC e esse deve estar rodando na mquina. Transaes no trabalham no nvel Data Flow, mas apenas Control Flow.

Restartabilidade com Checkpoints Permite especificar um ponto de recomeo se alguma falhar acontecer (ponto de falha). Para tanto: 1. altere a propriedade SaveCheckpoints da package para true. 2. Configure a propriedade CheckpointFileName da package para uma pasta e arquivo qualquer. Este arquivo necessrio para guardar o status de execuo da package e se ele no existir ento no ser possvel o restart. Use preferencialmente um arquivo com extenso XML. 3. Set ainda a propriedade CheckpointUsage da package para ifExists o qual far com que a package reinicie a partir do ponto de falha, se o arquivo existir, ou reiniciar do comeo (caso no exista). 4. Na tarefa ser necessrio configurar a propriedade FailPackageOnFailure para true. Existe uma propriedade muito interessantssima nas tasks que pode simular ou forar a simular de falha, para quando se deseja testar transao ou checkpoint, a ForceExecutionResult. Neste caso, ela deve ser configurada para o valor Failure.

Ateno: Se a propriedade CheckpointUsage = alway e no tiver sido configurado o arquivo a package nunca conseguir ser executada; possvel fazer a seguinte combinao: setar a propriedade TransactionOption = required e CheckpointUsage = not allowed. Isso obrigar a package a sempre usar transao sem ponto de falha.

Erros na Package A propriedade MaximumErrorCount do control flow deixa a package continuar rodando at completar, aps erros terem acontecido. Defina quantos erros podem acontecer na package antes dela fazer um stop na execuo. Logando a execuo da package As opes de destino mais comuns para log so arquivo ou tabela, sendo possvel tambm Windows event, SQL Server profiler e arquivo XML. No caso de tabela ser criada a tabela sysssislog. Os eventos mais comuns a mapear so: OnError, OnPostExecute, OnPreExecute, OnProgress e OnTaskFailed. [total de 5 eventos] Control Flow Precedence Constraint Os conectores no controw flow podem ter trs cores, indicando trs status: Blue: a execuo foi completada (com falha ou com sucesso); Red: falhou Green: sucesso

Os conectores so constraints de precedncia no data flow, permitindo configurar decises e lgicas no fluxo. No data flow no existe precedence constraint, mas data paths. Data Flow Data Paths Diferente da precedence constraint o data path manipula linhas, permitindo realizar tratamento no conjunto de linhas com problema. H dois tipos de paths no data flow: Green data paths: linhas com sucesso; Red error paths: linhas com problema.

NT: nem todos os componentes suportam error paths. Exemplo: multicast. Templates possvel criar uma package e transform-la em template para novos itens de projeto SSIS. Basta apenas copiar a package para a pasta: C:\Program Files (x86)\Microsoft Visual Studio

9.0\Common7\IDE\PrivateAssemblies\ProjectItems\DataTransformationProject\DataTransfor mationItems Instalao de componentes customizados Copiar para a pasta %programfiles%\Microsoft SQL Server\100\DTS. Registrar usando o utilitrio gacutil.exe /i. Adicion-lo toolbox. Breakpoints possvel setar breakpoints no controw flow, no em data flow. Um breakpoint pode ser setado numa task ou num container via tecla F9 Package Configuration As duas formas mais comuns de guardar as configuraes da package so arquivos XML e tabelas do SQL Server. Para arquivo XML o local e o nome do arquivo devero ser os mesmos quando de um futuro deploy, pois a referncia originalmente setada precisa ser mantida. Neste caso, uma combinao interessante criar uma varivel de ambiente para guardar essa referncia, que o full path + nome do arquivo com extenso (dtsConfig). Esta abordagem, de usar variveis de ambiente, chamada de configurao indireta. Isso til quando os caminhos dos arquivos de configurao mudam de um ambiente de desenvolvimento para produo. Outro detalhe que possvel usar um mesmo arquivo de configurao para vrias packages diferentes. Isso interessante para centralizar configuraes padres, como strings de conexo por exemplo. Sugesto de abordagem para Package Configuration 1. Crie uma varivel de ambiente apontando para um nico arquivo XML de configurao; 2. Crie um nico arquivo XML de configurao que tenha somente uma entrada a string de conexo para a database que conter todas as configuraes dos pacotes. Detalhe: use preferencialmente nesta string de conexo o Windows Authentication; 3. Crie uma segunda configurao, abaixo da configurao XML, do tipo SQL Server configuration, e use-a para guardar todas as outras configuraes. Esta abordagem aumenta a segurana e facilita o chaveamento de ambientes. SSIS Expression Language Usada mais comumente em Conditional Split e Derived Column. Exemplo: ISNULL( [color] ) ? (DT_STR, 20, 1252) Unknown : TRIM ( [color] )

Processo de Deploy O deploy de uma package pode ser feito para dois destinos: Armazenamento em sistema de arquivos Armazenamento dentro do SQL Server

As alternativas para fazer o deploy so: Cpia manual da package para o sistema de arquivos de destino; Execuo do utilitrio de comando DTUtil para copiar uma package para dentro do SQL Server; Usando o SSMS para fazer a importao; Usar a Package Deployment Utility: trata-se de um deployment set que contm uma ou vrias packages de um projeto a ser entregue em produo.

DTUtil Trabalha com package armazenada em sistema de arquivo, no SQL ou at diretamente. Permite fazer deploy, cpias, deletar, etc. SSIS Service O SSIS service no requerido para rodar pacotes, mas ele interessante por facilitar o gerenciamento de pacotes (questes de armazenamento de pacotes no SQL, pacotes que esto rodando no momento monitoramento, segurana). Alm disso, o servio permite uma execuo mais rpida j que faz cache de componentes SSIS para a memria. Aps um deploy do tipo File System os pacotes ficam armazenados no seguinte caminho: %programfiles%\Microsoft SQL Server\100\dts\Packages Lembrando que neste caso a verso 64 bits. possvel alterar esse caminho editando o arquivo MsDtsSrvr.ini.xml. Seguindo o raciocnio, bastaria copiar manualmente os pacotes para esta pasta para os mesmos serem reconhecidos pelo ssis service no ssms. A opo Upgrade Packages no menu de contexto permite atualizar packages do SQL 2005 para o SQL 2008. Ele abre um wizard que conduzir o processo. Segurana Pode ser feita em trs maneiras: Usando roles do MSDB Usando package encryption level Usando nvel de permisses em pasta e arquivos

Roles do MSDB DB_ssisoperator (nvel recomendado para gerentes) DB_ssisltduser Apenas operaes de leitura e execuo de qualquer package. Pode exportar tambm (exportar gera cpia no destino e no retira da origem). Fazem o que quiser com suas packages (no toca na dos outros)

Package Protection Level Primeiro conceito a entender: por padro dados sensveis so basicamente as senhas das strings de conexo. Outros itens sensveis podem ser configurados, como em tasks, atravs da propriedade ... DontSaveSensitive Esta a opo ideal para dois cenrios: - quando as conexes no utilizam Windows authentication deve-se guardar a senha numa package configuration ou passar essa senha via linha de comando no dtexec; - quando as conexes so todas vias Windows authentication no h necessidade de criptografar nada EncryptSensitiveWithUserKey A senha criptografada e visvel somente pelo usurio que a criou e tambm no computador onde foi criada. Se outros usurios abrirem a package ser necessrio informar a senha

Nota: senhas no podem ser guardadas como um texto limpo no arquivo da package (dtsx), somente em package configurations. Recomendao Crie as packages com DontSaveSensitive e crie uma package configuration para guardar as senhas, para aquelas conexes que no utilizam Windows authentication. Lembrando que o arquivo de configurao dever ser estrategicamente planejado.