8-BI- Ferramenta ETL - Manual Integration Services

download 8-BI- Ferramenta ETL - Manual Integration Services

of 23

Transcript of 8-BI- Ferramenta ETL - Manual Integration Services

Ferramenta ETL SQL Server Integration ServicesSobre o ETLA sigla ETL vem de Extraction, Transformation and Loader que consiste na extrao, Transformao e Carga de Dados geralmente de um ambiente Transacional para um ambiente Dimensional (Isso em um projeto de DW). Uma ferramenta de ETL deve ter funcionalidades que permitam a extrao de dados de virtualmente todas as fontes de informao, carga em diversos destinos diferentes e ainda permitir realizar transformaes para que o dado seja manipulado e armazenado de acordo com a necessidade. Alm disso, performance, robustez, tolerncia falhas (restart e recovery), escalabilidade e facilidade so exigidos de uma ferramenta ETL, caractersticas que somente uma aplicao projetada para essa finalidade pode possuir, da a necessidade de uma ferramenta de ETL.

Sobre a Ferramenta:SQL Server Integration Services (SSIS) uma das caractersticas mais poderosas do SQL Server 2005. classificada como uma ferramenta de Business Intelligence e de uma maneira robusta carrega os dados e realiza tarefas de transformao em um fluxo de dados. O Business Intelligence Development Studio (BIDS) a ferramenta principal que ns iremos utilizar, cuja base a interface do Visual Studio 2005. Para iniciar o aplicativo clique em SQL Server Business Intelligence Development Studio:

Para criar um projeto novo clique em File New Project:

Para criar o projeto em questo (ETL) escolha Integration Service Project:

Preencha os campos adequadamente: Name: Digite o nome do seu projeto. Ex: Projeto Aula ETL Location: Use o boto Browse para escolher o diretrio onde os arquivos do seu projeto sero gravados. Ex: C:\Aula BI Neste momento voc acaba de criar um Projeto de construo ETL. A ferramenta j inicia com a criao de um Package. Packages (Pacotes) Principal elemento do SSIS. Um package uma coleo de tarefas que executada seguindo um fluxo de dados pr-estabelecido. Uma package salva como um arquivo .DTSX. A idia que criemos um Package para cada tabela que precisamos carregar de dados. Pensando em um modelo dimensional de dados, iremos criar um package para cada tabela dimenso e para a tabela de fatos. Para que possamos acessar as tabelas da base de dados de origem e da base de dados de destino, precisamos criar uma conexo com os bancos de dados onde se encontram estas tabelas. Devemos criar uma conexo para cada banco de dados.

Connection Manager Para criar uma conexo com um Banco de Dados, clique com o boto direito na rea Connection Manager e escolha New OLE DB Connection. No geral podem ser qualquer fonte de dados OLE-DB tal qual SQL Server, Oracle, DB2.

Configurando Connection Manager:

Server Name: Escolha ou digite o nome do servidor. Log on to the Server: Escolha o modo de logar no servidor de dados do SQLServer. Na faculdade estamos utilizando a prpria autenticao do Windows. Select or enter a database name: Escolha o nome do banco de dados que voc deseja conectar.

Data Sources Data sources representam as conexes que podero ser usadas para uma fonte de dados ou um destino. Crie um Data source para cada conexo. Para incluir um Data Source, v para o Solution Explorer e clique com o boto direito em Data Source e depois clique em New Data Source.

Escolha a conexo na lista esquerda e clique em Finish. Caso a conexo no tenha sido criada ainda, clique em New. Ir aparecer a tela de Connection Manager j explicada anteriormente.

A criao de um processo ETL (cada package) deve comear com o fluxo de tarefas que definido no painel Control Flow .

Tasks(Tarefas) Uma tarefa pode ser descrita como uma unidade individual de trabalho. Elas que proporcionam funcionalidade ao package. Podemos comparar uma task com um mtodo em uma linguagem de programao. Alguns exemplos: Bulk Insert: Carrega dados em uma tabela usando o comando BULK INSERT SQL. Data Flow: Tarefa especializada em realizar transformaes e carregar os dados transformados em uma tabela destino. FTP: permite receber ou enviar arquivos via FTP Send mail: Envia mensagens (e-mails) atravs de SMTP. Execute SQL Task: Conecta a um banco de dados e executa um comando SQL. Fluxo de tarefas Diferente de linguagens de programao estruturadas ou orientadas objeto, nas ferramentas ETL trabalhamos por fluxo de dados atravs das tarefas especificadas. formada uma espcie de cadeia de tarefas, uma realizada aps a outra seguindo as restries abaixo indicadas: Sucesso: a tarefa realizada apenas se a tarefa anterior foi executada com sucesso. Completeza: a tarefa realizada aps a tarefa anterior ser executada. Independente se houve sucesso ou falha. Falha: a tarefa realizada apenas se a tarefa anterior foi executada, mas falhou.Ex: Se tarefa Copy File executou com sucesso Executar tarefa Data Flow Task Se tarefa Copy File falhou Executar tarefa Send mail Task

Para incluir tarefas clique no boto Toolbox que aparece esquerda da tela. Caso no esteja aparecendo v ao Menu horizontal e clique em View Toolbox

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

Elementos da tarefa Data FlowA tarefa Data Flow responsvel pelo principal processo da ferramenta ETL. No painel Data Flow ser criado o fluxo de componentes que sero responsveis por realizar a Extrao, as Transformaes e a Carga (Load) na tabela destino. Para incluir tarefa Data Flow Task, apenas clique na tarefa e arraste para o painel Control Flow.

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

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

Para efetivamente criar um processo ETL, devemos incluir os vrios componentes que necessitamos de acordo com a carga que devemos dar na tabela destino escolhida. Para incluir um componente novamente clique no boto Toolbox. Entretanto agora ir aparecer um novo conjunto de componentes: Componentes de Origem (Source) A origem o local onde as fontes de dados sero extradas. Origem geralmente ir apontar para o Connection Manager no SSIS. Existem seis fontes que podem ser usadas: OLE DB: conexo realizada com qualquer data source OLE DB, tais quais SQL Server, Oracle, Access, etc. Excel: Origem especializada em receber dados de planilhas Excel. Esta origem possibilita criar queries a partir dos dados da planilha. Flat File: conecta a um arquivo texto delimitado por algum caracter ou com tamanho de colunas pr-definido. Raw File: componente especializado em ler arquivos de formato produzido por Raw File Destination. XML: Busca dados de um documento XML. Data Reader: uma conexo ADO.NET.

Componentes de Destino (Destination) O destino o local onde os dados sero carregados. Estes dados podem vir de uma Origem ou de uma Transformao. Os destinos disponveis no SSIS so: DataReader: Permite que os dados sejam destinados um processo externo, como o Reporting Services ou uma aplicao .NET. Dimension Processing: Carrega e processa uma dimenso no Analysis Services. Pode realizar uma carga full (carga completa), carga incremental ou de atualizao.

Excel: Grava os dados em uma planilha Excel. Flat File: Grava os dados em um arquivo texto, delimitado por vrgula ou de colunas pr-definidas. OLE DB: Grava os dados em tabelas de banco de dados com conexo OLE DB como SQL Server, Oracle, Access. Partition processing: Permite a realizao de processamento incremental, total ou atualizaes em uma partio Analysis Services. Raw file: Libera dos dados que podem ser usados em uma Origem Raw File. Recordset: Grava dados em um conjunto de registros ADO. SQL Server: mais eficiente para gravar dados em uma base SQL Server. SQL Server Mobile: Grava dados em uma base SQL Server rodando em um Pocket PC.

Componentes de Transformaes (Transformations) Estes so os principais componentes para o fluxo de dados. a partir das transformaes que conseguiremos dar aos dados o formato desejado. Segue abaixo a lista de transformaes existentes nesta ferramenta: Aggregate: Possibilita agregar dados que venham de uma origem ou de outras transformaes. Audit: Fornece informaes de auditoria, como qual package est sendo executado e por quem. Character Map: Possibilita aplicao de funes de alterao de strings, como transformar um texto em letras maisculas.

Conditional Split: Divide os dados baseando-se em certas condies atendidas. Por exemplo, enviar os dados para um fluxo diferente caso a coluna do Estado seja igual a Minas Gerais. Copy Column: Adiciona a cpia de uma coluna para uma nova coluna. Data Conversion: Converte de um tipo (data type) para outro. Data Mining Query: realize uma query data-mining do Analysis Services. Derived Column: Cria uma nova coluna calculada, derivada de uma expresso. Export Column: Permite exportar uma coluna do fluxo de dados para um arquivo. Por exemplo, pode-se usar esta transformao para gravar uma coluna que contm uma imagem, em um arquivo. Fuzzy Grouping: Realiza a limpeza de dados, encontrando linhas que sejam duplicadas. Fuzzy Lookup: Encontra e padroniza dados baseados em lgica fuzzy. Por exemplo, pode transformar o nome Jon em John. Import Column: L os dados de um arquivo e adiciona no fluxo de dados. Lookup: Busca um dado em uma tabela para ser adicionado ao fluxo de dados ou para usado depois em uma transformao. Por exemplo, pode-se buscar o nome de uma cidade a partir do campo CEP. Merge: Rene 2 conjuntos de dados previamente ordenados, transformado-os em um nico fluxo de dados. Merge join: Realiza a unio de 2 conjuntos de dados em um nico fluxo utilizando a funo Join. (basicamente uma reunio de colunas). Multicast: Envia a cpia dos dados para um caminho extra no fluxo de dados. OLE DB Command: Executa um comando OLE DB para cada linha no fluxo de dados. Percentage Sampling: Captura uma amostra de dados a partir do fluxo de dados usando um percentual do total de linhas. Pivot: Basicamente os dados de uma coluna so convertidos em mais de uma forma no-relacional. Row Count: Armazena o nmero da linha no fluxo de dados em uma varivel. Row Sampling: Captura uma amostra dos dados a partir do fluxo de dados usando o nmero da linha do total de linhas. Script Component: Usa um script para realizar uma transformao. Slowly Changing Dimension: Coordena a insero ou atualizao condicional dos dados em uma dimenso que muda lentamente. Sort: Especificada uma coluna, ordena os dados do fluxo de dados. Term Extraction: Busca um nome ou adjetivo em um texto. Term Lookup: Busca um termo de um texto e referencia o valor em uma tabela. Union All: Rene mltiplos conjuntos de dados em um nico fluxo de dados (basicamente uma reunio de linhas) Unpivot:Transforma os dados de um formato desnormalizado em um formato relacional.

Criando um processo ETLUm processo de carga sempre se inicia escolhendo um componente de origem. O componente mais utilizado uma tabela de banco de dados. Para inclu-lo escolha na toolbox o OLE DB Source e arraste para o painel Data Flow.

Configurando o componente OLE DB Source. Clique 2 vezes no componente. No primeiro item da lista, Connection Manager, escolha a conexo e a tabela de origem. O item Data access mode pode ser mantido com o default Table or view que indica que ser acessada uma tabela.

Conexo

Tabela de Origem

Clique no segundo item da lista, Columns. Ir aparecer a lista de campos que existem na tabela de origem escolhida. Voc pode selecionar os campos que sero utilizados no fluxo de dados, clicando no checkbox que aparece esquerda do campo.

Alm da origem, um processo de carga sempre possui um componente de destino. Este componente a tabela em que vamos realizar a carga dos dados, geralmente uma tabela de Dimenso ou uma tabela Fato. O componente mais utilizado uma tabela de banco de dados. Para inclu-lo escolha na toolbox o OLE DB Destination e arraste para o painel Data Flow.

Devemos ligar o componente de origem no componente de destino. Para tal apenas clique no primeiro componente. Iro aparecer duas setas: uma verde e uma vermelha. A escolha de qual seta usar deve ser: Verde: se o componente executar com sucesso, ento executar o prximo. Vermelha: se o componente falhar, ento executar o prximo. Vamos sempre considerar o fluxo de sucesso, usando a seta verde. Clique na seta verde e arraste ate o prximo componente (OLE DB Destination).

Configurando o componente OLE DB Destination. Clique 2 vezes no componente. No primeiro item da lista, Connection Manager, escolha a conexo e a tabela de destino. O item Data access mode pode ser mantido com o default Table or view que indica que ser acessada uma tabela

Conexo

Tabela de Destino

Clique no segundo item da lista, Mappings. Ir aparecer a lista de campos que esto no fluxo de dados (esquerda) e a lista de campos que existem na tabela de destino (direita). Caso os nomes dos campos coincidam, a ligao j vem pronta. Caso contrrio apenas arraste um campo da primeira lista para o campo correspondente da segunda lista. Voc pode tambm escolher o campo na lista abaixo Input Column.

Uma carga simples pode possuir apenas um componente de origem e um de destino. Ou seja, apenas iremos escolher uma tabela de origem de dados e a partir desta tabela carregar os campos da tabela de destino, uma tabela de Dimenso simples, por exemplo a tabela DIM_BAIRRO. Entretanto, existem tabelas de destino que para serem carregadas necessrio que algumas transformaes sejam realizadas. Para tal existem os componentes de transformao. Iremos ver alguns exemplos a seguir.

Sort: Especificada uma coluna, ordena os dados do fluxo de dados. Arraste o componente e solte no painel. Faa as ligaes: Origem para o Sort e Sort para o Destino.

Configurando o componente Sort: Ir aparecer a lista de campos que est no fluxo de dados. No checkbox da esquerda escolha os campos que voc deseja ordenar. Eles iro aparecer na lista da parte debaixo. No checkbox da direita escolha os campos que voc deseja que continue no fluxo de dados.

Na lista de campos a ordenar voc pode digitar um novo nome para o campo Output Alias e escolher o tipo de ordenao Sort Type: ascendente ou descendente. Uma opo interessante e muito til aparece na parte de baixo da tela de configurao : Remove rows with duplicate sort values, que significa remover as linhas duplicadas. Assim, caso voc queira que seu fluxo prossiga tendo apenas uma linha para cada campo ordenado, ou seja, caso voc queira remover os registros em duplicidade clique neste item. Lookup: Busca um dado em uma tabela para ser adicionado ao fluxo de dados ou para usado depois em uma transformao.

Configurando o componente Lookup: Na aba Reference Table escolha a conexo com o banco de dados onde se encontra a tabela que voc deseja buscar o campo faltante. E em seguida escolha a tabela em questo.

Conexo

Tabela

Tomemos como exemplo a carga da tabela DIM_CIDADE, onde temos os campos Cd_cidade, Nom_Cidade, Cd_UF, Nom_UF. Na tabela de origem CIDADE no existe o nome da UF, assim necessrio buscar o nome da UF em uma outra tabela de origem que a tabela UF. Na aba Columns ir aparecer a lista de campos que esto no fluxo de dados (esquerda) e a lista de campos que existem na tabela escolhida (direita). A ligao deve ser feita entre os campos que representam a chave comum entre as tabelas. No nosso exemplo o campo que relaciona uma tabela a outra o Cd_UF, este campo existe no nosso fluxo e ele esta na tabela UF representando unicamente cada registro, ou seja, para cada nome de UF temos apenas um cdigo.

Na lista da parte de baixo da tela de configurao iro aparecer os campos que necessitamos incluir no nosso fluxo de dados. Para incluir os campos necessrios clique no checkbox a esquerda dos campos. No nosso exemplo clicamos apenas no nome da UF, campo nom_UF.

Merge join: Realiza a unio de 2 conjuntos de dados em um nico fluxo utilizando a funo Join. (basicamente uma reunio de colunas).

Vamos utilizar o mesmo exemplo, onde temos que incluir o nome da UF para dar carga na tabela DIM_CIDADE. Neste caso precisamos de 2 origens de dados: CIDADE e UF. O componente Merge Join exige que os fluxos estejam ordenados. Assim preciso incluir um componente Sort aps cada origem. Faa a ligao da tabela esquerda ao componente Merge Join escolhendo a opo Left e depois faa a ligao da tabela a direita ao componente.

Configurando o componente Merge Join: Iro aparecer a lista de campos que esto no fluxo de dados esquerda e a lista de campos que esto no fluxo de dados direita. A ligao deve ser feita entre os campos que representam a chave comum entre as tabelas. Imagine uma query que realiza o join entre duas tabelas. Os campos que ligaremos sero os campos que incluiremos na clusula Where. Os campos que queremos que continuem no nosso fluxo de dados devem ser marcados no checkbox que aparece esquerda do nome do campo.

Para exemplificar a query correspondente a este Join seria:SELECT FROM WHERE CIDADE.cod_UF, CIDADE.cod_cidade, CIDADE.nom_cidade, UF.nom_UF CIDADE, UF CIDADE.cod_UF = UF.cod_UF

Conditional Split: Divide os dados baseando-se em certas condies atendidas. Por exemplo, enviar os dados para um fluxo diferente caso a coluna do Estado seja igual a Bahia. Pode ser usado como um filtro de informaes.

Configurando o componente Conditional Split: Digite a condio no campo Condition. A ferramenta disponibiliza vrias funes na lista esquerda. Voc pode digitar um nome para a condio no campo Output Name. Isto facilita a visualizao.

Derived Column: Cria uma nova coluna calculada, derivada de uma expresso

Configurando o componente Derived Column: Digite a expresso no campo Expression. A ferramenta disponibiliza vrias funes na lista esquerda. Digite o nome da nova coluna (passar a existir no fluxo de dados) no campo Derived Column Name. Escolha o tipo de dados no campo Data Type.

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

Configurando o componente Data Conversion: Ir aparecer a lista de campos que esto no fluxo de dados. Escolha o campo que voc deseja alterar o tipo de dados clicando no checkbox esquerda do nome do campo. Escolha o novo tipo de dados no campo Data Type. Esta coluna ir aparecer como uma nova coluna no fluxo de dados. Voc pode digite o nome desta nova coluna no campo Output Alias.