Think Think .Net
Diego Nogare [MVP | MCT | MCITP | MCTS | MCP | INETA BR]

Plataforma de BI dentro do SQL Server 2008 – prt 7

quarta-feira, 14 abril 2010 06:27 by Nogare

Fala galera, como prometido na palestra sobre SQL Azure Database, dia 10/04/2010 no Marília Tech Day 2010, vou escrever o artigo! A idéia será utilizar aquele mesmo arquivo TXT de nomes para importar dados através do SSIS (SQL Server Integration Services) escrevendo no SQL Azure Database.

Para começar, vamos abrir o BIDS (Business Intelligence Development Studio), que está dentro da pasta do SQL Server 2008:

image

Após a abertura do BIDS, inicie um novo projeto de “Business Intelligence Projects” utilizando o tipo “Integration Services Project”. O nome que vou salvar meu projeto é “txtParaAzure”. Veja estas opções na imagem abaixo:

image

Ao iniciar o projeto, quatro abas superiores são apresentadas na área de desenvolvimento do processo: Control Flow, Data Flow, Event Handlers e Package Explorer. Não vou falar sobre as abas que não utilizaremos, vou falar apenas da Control Flow e Data Flow. A aba Control Flow é responsavel por criar as execuções do pacote, é dentro desta área que são colocados os objetos “macro”, neste exemplo, vamos inserir um Data Flow Task. Pode possuir um ou mais destes objetos (Data Flows Task), que são os responsaveis reais por realizar o ETL (Extration, Transformation and Loading – Extração, Transformação e Carregamento). É no Data Flow que informamos qual é a origem e o destino dos dados que serão processados. Veja as abas superiores e o item do Data Flow na toolBox (à esquerda). Ele será arrastado para dentro do Control Flow e irá controlar o processo.

image

Após arrastar o item Data Flow Task para o Control Flow, dê dois cliques no item e vamos analisar o toolbox desta área. Repare que os ítens do toolbox foram modificados para se adequar à área Data Flow. As sessões da toolbox são “Data Flow Sources” (objetos referentes à origem dos dados), “Data Flow Transformation” (objetos referentes à transformação dos dados) e “Data Flow Destinations” (objetos referentes à destino dos dados). Os dois grupos que sempre serão usados em um projeto de SSIS serão os de Origem (Data Flow Sources) e de Destino (Data Flow Destinations). O grupo de transformação (Data Flow Transformations) pode ser usado ou não, vai depender da sua necessidade.

image

Bom, sabendo que os ítens mínimos para se criar um fluxo no SSIS são Origem e Destino, vamos adicionar esses itens e fazer as conexões. A origem será um arquivo TXT, para isso, vou adicionar o “Flat File Source”. Encontre esse objeto na toolbox à esquerda e arraste para a área de design.

image

Depois, como o destino será um banco de dados na nuvem, vou adicionar um “ADO NET Destination”. Mesmo processo, encontre o objeto na toolbox e arraste para a área de design. Repare que os ítens estão um na sessão de Origem e outro no Destino.

image

Para se criar o fluxo do processo, visto que podem existir diversas atividades de origens e destinos acontecendo em um mesmo fluxo, é necessário criar uma ordem lógica dos acontecimentos. Para isso, vamos selecionar o item que será processado primeiro (Origem) e arrastar a setinha verde para o item seguinte (Destino). Neste caso, selecionamos o item “Flat File Source”, arrastamos sua setinha verde e ligamos no “ADO NET Destination”. Reparem que existem duas setas na origem, a seta verde segue o fluxo quando não ocorrer problema no processamento, já e a seta vermelha é utilizada como caminho quando o fluxo do processamento der algum problema. Geralmente a seta vermelha segue para um ítem que permite enviar um e-mail ou salvar a mensagem do erro em um arquivo de texto para análise posterior. Neste exemplo, vou apenas mostrar a seta verde.

image

Agora que já foram criados os fluxos do trabalho, vamos criar as conexões que servirão para orientar a origem e o destino dos dados. Para isso, clique com o botão direito na Origem e depois selecione Edit…

image Uma tela com as opções para se carregar um arquivo são apresentadas. Vamos configurar para ler o arquivo nomes.txt que criamos no post: Plataforma de BI dentro do SQL Server 2008 – prt 6 

Após clicar no Edit, uma tela se abrirá para selecionar qual será a conexão, como ainda não criamos a que será utilizada, clique no botão New… e configure as opções do arquivo que será lido.

A configuração inicial será somente colocar o Nome e a Descrição, e selecionar o arquivo de origem. A primeira caixa de texto é referente ao Nome, a segunda à Descrição e o botão Browse… para localizar o arquivo.

image

Agora que o arquivo foi carregado, vá até o item Advanced na lista da esquerda, selecione a Column 1 e clique no botão Delete. Na mesma tela, selecione a Column 0 e modifique a propriedade OutputColumnWidth para 100. Clique em Ok até voltar para a tela inicial.

image image

Após fazer a configuração dos dados de origem, repare que o objeto não está mais com um x dentro. Isso representa que ele está configurado com uma determinada fonte de dados. Comparando com o destino, que ainda não foi configurado, fica facil de ver o x. Agora é a hora de configurar o destino dos dados, vamos então fazer o mesmo processo com o destino, clique com o botão direito e selecione Edit…

Uma tela para selecionar a conexão é apresentada, vamos clicar em New… e ir para uma segunda tela. Nesta segunda tela, uma lista com as conexões existentes é apresentada, novamente clique em New… e agora sim, configure a conexão. Neste caso, vou configurar meu servidor do SQL Azure Database, mas poderia ser qualquer outro SGBD que você utilize.

image

Após configurar, volte até a primeira tela da configuração e informe qual será a tabela que vai escrever a informação.

image 

Após selecionar a tabela na combo de tabelas, clique no item Mappings à esquerda e faça a ligação entre a Column0 (Origem) e o nome (Destino). Essa configuração irá representar qual informação se liga na outra. Após ligar as colunas, é só dar OK.

image

O processo está quase concluído, só precisa executar (apertando F5) e aguardar o final do processamento. Se tudo estiver configurado corretamente, as caixinhas ficarão todas verdes, isso significa que foram executadas com sucesso. Caso alguma fique vermelha, ela não chegou a concluir todo o processamento.

image

Para confirmar a inclusão de todos os dados do arquivo TXT para o SQL Azure Database, vou fazer uma consulta simples para me retornar a quantidade de registros na tabela.

image

Com esse processo do SSIS funcionando, foi possível migrar dados de um arquivo TXT para o SQL Azure Database. O arquivo TXT foi só uma das possiveis origem de dados, podendo ser qualquer uma que estivesse dentro do grupo Data Flow Sources na toolbox da aba Data Flow.

Plataforma de BI dentro do SQL Server 2008 – prt 6

quarta-feira, 7 abril 2010 07:39 by Nogare

Fala galera, neste post, vou mostrar uma das formas de utilizar o SSIS (SQL Server Integration Services) para importar dados para o SQL Server 2008 R2. Vou mostrar como popular uma tabela já existente com base em um arquivo de texto simples. Utilizarei o Import and Export Data que é uma ferramenta que já acompanha o SQL Server e não nos obriga a criar um projeto no BIDS (Business Intelligence Development Studio) que é o Visual Studio 2008 com um template para se trabalhar com BI. O Import and Export Data é muito mais limitado que o BIDS, mas para esse propósito que vou utilizar, é ideal!

Para gerar a massa de dados que vou utilizar para explicar (e aprender) BI, criei uma tabela de clientes e nesta tabela preciso inserir nomes à eles. Estou tentando fazer uma forma mais automatizada para criar esses dados, por isso, procurei na internet algum site que pudesse me dar uma lista de nomes. Para minha felicidade, encontrei esse site com uma lista bem diferente: http://fernando.felix.vilabol.uol.com.br/humor/nomes.html

Copiei a lista com os nomes e salvei em um arquivo txt, no qual de o nome de nomes.txt. Se quiser baixar o arquivo que usei pra importar no SQL Server, pode pegar diretamente no meu Skydrive: http://cid-e2bc89dfc1ec2551.skydrive.live.com/browse.aspx/.Public/BI

Para importar esse arquivo para o SQL Server, vou criar uma tabela simples para armazenar esse nomes.

create table tbl_Nomes
(id_nome int identity(1,1) not null
, nome varchar(100) not null)

Depois de criada a tabela, é hora de abrir o aplicativo Import and Export Data, ele fica dentro da pasta do SQL Server 2008 R2. Veja no caminho abaixo:image

A primeira tela que se abre, é uma tela de boas vindas, ela não realiza nenhuma atividade especial no processo. É só avançar sem nenhum problema.

image 

A segunda tela é bem importante, é aqui que selecionamos a origem dos nossos dados. Como vamos importar informações de um arquivo txt, no primeiro combo (no topo da tela) a origem que deve ser selecionada éFlat File Source. Nesta combo existem outras diversas origem de dados, mas nesse caso específico será o Flat File. Após escolher essa opção, os campos da tela se adaptam à ela e solicitam informações sobre o arquivo. O botão “Browse…” nos permite escolher o arquivo que será utilizado para importar os dados. Selecionamos este arquivo e algumas informações relativa à ele são preenchidas. Se quiser dar uma olhada nos dados que tem no arquivo, vá até a opção “Preview” que está na listagem à esquerda na tela. Depois de escolher o arquivo, pode avançar para a próxima tela clicando em “Next >”

Sugestão 1: Altere a propriedade “Header row delimiter:” para “Comma (,)” assim ele vai quebrar a linha em cada virgula que ele encontrar.

Sugestão 2: Vá até o item “Advanced” na listagem da esquerda, selecione a coluna que tem seus dados (você vai saber qual é, olhando em “Preview”) e vá até a propriedade OutputColumnWidth e mude de 50 para 100. Esse é o tamanho da coluna, se deixar 50, alguns nomes podem ser truncados.

image

A terceira tela que será utilizada, é a tela referente ao destino dos dados, neste caso, como vamos colocar os dados do arquivo no SQL Server 2008 R2, vou selecionar minha instância e realizar a autenticação no servidor, após a autenticação eu posso escolher o Database que vou armazenar meus dados. Após preencher esses campos vou avançar de tela.

image

A tela seguinte permite escolher em qual tabela do banco os dados serão armazenados. Por padrão, ele sugere criar uma tabela nova com o nome do arquivo, mas isso não é obrigatório, veja que neste caso vamos preencher a tabela que criamos lá em cima, a tbl_nome. Para informar à essa ferramenta qual coluna do arquivo irá preencher qual coluna da tabela, vamos clicar no botão “Edit Mappings…” lá no final da tela.

Nesta edição de colunas, no item Destination da Column1 deixe como <ignore> e então selecione o Destination da Column0 como nome. Não dá pra fazer em outra ordem porque a princípio o destination “nome” está alocado para a column1.

image

Após a escolha da tabela de destino e a coluna que receberá os dados do arquivo, a ferramenta nos pergunta se quer executar o processo imediatamente ou se quer armazenar para realizações futuras. No nosso caso, vamos apenas popular esta tabela agora, então não teremos problema em mandar executar agora e não salvar essa configuração. Para isso, marque a opção “Run immediately” e desmarque a opção “Save SSIS Package”. E novamente, avance.

 image

Este é o penúltimo passo, ele mostra um resumo do que será realizado e solicita que clique em “Finish” para realizar o processo.

image

Ao clicar em finalizar, o processo começa a ser executado e se estiver tudo configurado certo não haverá problema e uma tela parecida abaixo com essa será apresentada. Veja que todos os passos foram executados com sucesso.

image

Agora pra provar a inclusão dos dados na tabela, fiz um SELECT simples e retornaram os 244 registros incluídos.

image

Reparem que os nomes estão com uma virgula no final, para resolver isso, eu fiz um update removendo elas do registro. O update é esse:

update tbl_Nomes set nome = replace(nome, ',', '')

Essa ferramenta é bem útil para importar e exportar dados de um lugar para outro, neste exemplo utilizamos para ler um arquivo TXT e salvar no SQL Server 2008 R2.

Plataforma de BI dentro do SQL Server 2008 – prt 5

segunda-feira, 5 abril 2010 09:49 by Nogare

Fala galera, terminei de criar os scripts para criação dos bancos e das tabelas nos Abrir PúblicaSGDBs SQL Server 2008 R2, Oracle e MySQL. Vocês vão ver que no script não tem os relacionamentos entre as tabelas, fiz desta forma porque ainda não sei em quais SGBD vou popular cada tabela para depois consultar através do SSIS.

Podem baixar os scripts no meu SkyDrive:

http://cid-e2bc89dfc1ec2551.skydrive.live.com/browse.aspx/.Public/BI

Para não ter problema, criei todas as estruturas das tabelas nos três scripts, cada um baixa qual quiser. :)

Plataforma de BI dentro do SQL Server 2008 – prt 4.1

segunda-feira, 5 abril 2010 09:38 by Nogare

Fala galera, estava montando os scripts dos bancos de dados SQL Server 2008 R2, Oracle e MySQL e percebi que o diagrama que tinha apresentado à vocês na parte 4 dos estudos de BI estava errado.

O erro estava na tabela tbl_Cliente, tinha uma coluna referenciando o id_pedido da tabela tbl_Pedido. Pronto, problema resolvido e diagrama corrigido. Desculpem a confusão, mas o Visio me “derrubou” nesse diagrama. :)

MER

Plataforma de BI dentro do SQL Server 2008 – prt 4

segunda-feira, 5 abril 2010 07:30 by Nogare

Fala galera, continuando com meus estudos em BI cheguei a conclusão, que para melhor explicar (pelo menos mostrar) alguns dos principais passos que poderiam surgir em um cenário real, seria realmente montar um cenário próximo do real!

Seguindo a lógica que estou utilizando pra aprender, vou mostrar um cenário de uma loja de musicas que vende CDs, DVDs e BlueRays de artistas nacionais e estrangeiros. Para isso, montei um diagrama de algumas tabelas que eu utilizarei para fazer esse banco. Vou dividir as tabelas em alguns SGBDs diferentes, como SQL Server 2008 R2, Oracle, MySQL e Access 2010.

A idéia de criar as tabelas separadas em vários bancos é poder utilizar o SSIS (SQL Server Integration Services) para juntar todos os dados e simular diversos aplicativos que não são integrados e que servirão para montar a massa de dados do nosso BI quando formos montar nossas tabelas Fato, Dimensões e Cubos no SSAS (SQL Server Analysis Services) e pra finalizar, depois dos dados estarem todos já montados, utilizar o SSRS (SQL Server Reporting Services) para montar os relatórios e apresentar os dados para os “Gerentes” e “Diretores". rss

Bom, o diagrama da minha loja de musica é esse abaixo:

MER

Ainda vou criar as tabelas, colocando uma ou duas em cada SGBD e depois fazer um programinha para popular centenas de valores em cada uma das tabelas, só pra gerar massa de dados.