UM ESTUDO DE CASO SOBRE A IMPLANTAÇÃO DE BUSINESS INTELLIGENCE NA COUROS BOM RETIRO - PDF
UM ESTUDO DE CASO SOBRE A IMPLANTAÇÃO DE BUSINESS INTELLIGENCE NA COUROS BOM RETIRO
Download "UM ESTUDO DE CASO SOBRE A IMPLANTAÇÃO DE BUSINESS INTELLIGENCE NA COUROS BOM RETIRO"
Diego Back Sacramento
1 CENTRO UNIVERSITÁRIO UNIVATES CURSO DE SISTEMAS DE INFORMAÇÃO UM ESTUDO DE CASO SOBRE A IMPLANTAÇÃO DE BUSINESS INTELLIGENCE NA COUROS BOM RETIRO Leandro Görgen Portz Lajeado, novembro de 2014
2 Leandro Görgen Portz UM ESTUDO DE CASO SOBRE A IMPLANTAÇÃO DE BUSINESS INTELLIGENCE NA COUROS BOM RETIRO Trabalho de Conclusão de Curso II apresentado ao Centro de Tecnologia da Informação do Centro Universitário UNIVATES, como parte dos requisitos para a obtenção do título de Bacharel em Sistemas de Informação. Orientador: Prof. Ms. Pablo Dall'Oglio Lajeado, novembro de 2014
3 Leandro Görgen Portz UM ESTUDO DE CASO SOBRE A IMPLANTAÇÃO DE BUSINESS INTELLIGENCE NA COUROS BOM RETIRO Este trabalho foi julgado adequado para a obtenção do título de bacharel em Sistemas de Informação do CETEC e aprovado em sua forma final pelo Orientador e pela Banca Examinadora abaixo: Prof. Pablo Dall'Oglio UNIVATES, Mestre em computação aplicada pela UNISINOS São Leopoldo, Brasil. Prof. Vílson Cristiano Gärtner, UNIVATES, Mestre em computação aplicada pela UNISINOS São Leopoldo, Brasil. Prof. Juliano Dertzbacher, UNIVATES, Mestre em computação pela UFRGS, Porto Alegre, Brasil. Lajeado, novembro de 2014
4 DEDICATÓRIA Dedico este trabalho aos meus pais, em especial pela dedicação e apoio em todos os momentos.
5 AGRADECIMENTOS A Couros Bom Retiro pelo apoio, os colegas de trabalho pelo tempo disponibilizado para a realização deste trabalho. Aos professores da UNIVATES pelos conhecimentos e experiências transmitidos, principalmente ao meu orientador Pablo pela oportunidade de realização deste trabalho, paciência e auxílio. A minha noiva, Datini, pelos puxões de orelha nos momentos de distração e pelo apoio e compreensão em todos os momentos. A minha prima Joice Junqueira pela revisão do presente documento. A todos meus colegas de curso pelas experiências compartilhadas e principalmente pelas amizades construídas ao longo do curso.
6 RESUMO Atualmente, o mercado muda rapidamente e as organizações devem adequar-se ao novo cenário na mesma velocidade. Para que isso aconteça, as organizações devem possuir um processo de tomada de decisão eficaz e eficiente. Este fator torna a informação um dos bens mais valiosos das organizações. Para que esse processo seja possível, este deve estar baseado em informações íntegras e confiáveis. Uma das estratégias que vem sendo muito utilizada para obter informações com estas qualidades é a implantação de um Data Warehouse, que integra as informações de várias fontes e disponibiliza tais informações para os tomadores de decisão, através de uma ferramenta de Business Intelligence, com o intuito de gerar informações relevantes para o processo de tomada de decisão. O presente trabalho tem como objetivo a modelagem de um Data Warehouse, bem como a implantação de uma ferramenta de Business Intelligence, assim como executar todos os processos necessários para seu correto funcionamento, na empresa Couros Bom Retiro. Palavras-chave: Informação, Decisão, Business Intelligence, Data Warehouse, OLAP, ETL.
7 ABSTRACT Currently the market is rapidly changing and organizations must adapt to the new environment at the same speed. To make this possible, organizations must have a process for making effective and efficient decisions. This makes the information one of the most valuable assets of organizations. For this process to be possible it must be based on reliable and accurate information. One strategy that has been widely used for information with these qualities is the implementation of a data warehouse, where it integrates information from multiple sources and makes it available to decision makers, through a Business Intelligence tool, in order to generate information relevant to the process of decision making. The present work goal is to model a Data Warehouse, and implement a Business Intelligence tool, as well as all to perform all the processes required for correct operation, on the company Couros Bom Retiro. Keywords: Information, Decision, Business Intelligence, Data Warehouse, OLAP, ETL.
8 LISTA DE FIGURAS Figura 1 Pirâmide organizacional...23 Figura 2 Estrutura básica de um sistema de apoio a decisão...25 Figura 3 Cubo de dados com 4 dimensões...28 Figura 4 Ambiente de Data Warehouse...33 Figura 5 Representação gráfica de um DW com ODS...33 Figura 6 Cubo de dados...35 Figura 7 Representação gráfica dos esquemas estrela, flocos de neve e multiestrela...38 Figura 8 Cubo de compras...54 Figura 9 Cubo de consumo...56 Figura 10 Cubo de Ajuste...58 Figura 11 Cubo de estoque...60 Figura 12 Cubo de Faturas...63 Figura 13 Cubo de Comissões...66 Figura 14 Diagrama de atividade do processo de ETL da área de compras...70 Figura 15 Diagrama de atividade do processo de ETL da área comercial...73 Figura 16 Arquitetura do ambiente...75 Figura 17 Tela de principal do Pentaho...79 Figura 18 Configuração do DB...80 Figura 19 Marketplace...81 Figura 20 Pentaho Schema Workbench editando o schema estoque...82 Figura 21 Tabela e seus atributos...83 Figura 22 Atributos da dimensão...84
9 Figura 23 Atributos do nível hierárquico...85 Figura 24 Atributos da métrica...86 Figura 25 Saiku com o cubo de compras...87 Figura 26 Tela de publicação...88 Figura 27 Tela principal do CDE...89 Figura 28 Tela de criação das consultas...90 Figura 29 Tela de configuração dos gráficos...91 Figura 30 Primeira parte do painel da área de compras...93 Figura 31 Segunda parte de painel da área de compras...94 Figura 32 Painel da área comercial...95
10 LISTA DE CÓDIGOS Listagem 1 Código para criação das dimensões tempo, produto e filial...50 Listagem 2 Código da função PopulaTempo...51 Listagem 3 Código para criação do fato compra e a dimensão fornecedor...54 Listagem 4 Código para criação do fato compra e a dimensão requisição...56 Listagem 5 Código para criação do fato ajuste...58 Listagem 6 Código para criação do fato estoque...60 Listagem 7 Código para criação do fato fatura e as dimensões cliente, tipo de fatura e banco...63 Listagem 8 Código para criação do fato comissão e as dimensões representante e tipo de comissão...66
11 LISTA DE TABELAS Tabela 1 Mapa de transformação das dimensões compartilhadas...52 Tabela 2 Mapa de extração...67 Tabela 3 Tabela de Informação volumétrica da área de compras...68 Tabela 4 Mapa de transformação da área de compras...69 Tabela 5 Tabela de Informação volumétrica da área comercial...71 Tabela 6 Tabela de transformação da área comercial...72
12 LISTA DE ABREVIATURAS ACID Atomicidade, Consistência, Isolamento e Durabilidade BD Banco de Dados BI Business Intelligence CDE Community Dashboard Editor CNPJ Cadastro Nacional de Pessoa Jurídica CRM Customer Relationship Management DER Diagrama Entidade e Relacionamento DSS Decision Support System DW Data Warehouse EIS Executive Information System ER Entidade e Relacionamento ERP Enterprise Resource Planning ETL Extract, Transform e Load FAD Ferramentas de Apoio a Decisão JNDI Java Naming and Directory Interface ODS Operational Data Store OLAP Analytic Processing On-Line PHP Hypertext Preprocessor PSW Pentaho Schema Workbench SAD Sistema de Apoio a Decisão SGBD Sistema Gerenciador de Banco de Dados SI Sistemas de Informação
13 SIG Sistemas de Informações Gerenciais SIT Sistemas de Informação Transacionais SO Sistema Operacional Structured Query Language TI Tecnologia da Informação
14 SUMÁRIO 1 INTRODUÇÃO Motivação Objetivos Organização do Trabalho REFERENCIAL TEÓRICO Tomada de decisão Sistemas de apoio a decisão Business Intelligence Ferramentas OLAP Operações OLAP Data Warehouse Características de um Data Warehouse Arquitetura de um Data Warehouse Modelagem dimensional Passos para modelagem dimensional ETL METODOLOGIA TRABALHO PROPOSTO Visão geral Caracterização da empresa Justificativa Áreas de negócio Processos modelados Levantamento de requisitos Grupos de informações identificados Modelagem dimensional Informações compartilhadas Área de Compras...52
15 4.3.3 Área comercial Transformação dos dados Área de compras Área comercial Escolha da ferramenta de BI Arquitetura Tecnologias utilizadas AVALIAÇÃO DO BI Implantação Criação dos cubos de dados Criação dos dashboards Dashboards criados Disponibilização Questionário de avaliação CONCLUSÕES...98 REFERÊNCIAS APÊNDICES...102
16 15 1 INTRODUÇÃO Com o passar das décadas, a informação vem obtendo uma maior relevância no contexto das organizações. Segundo Freitas et al. (1997), no ambiente organizacional, a informação já é considerada como um recurso vital, assim como a mão de obra e a matériaprima. A informação é vista como um elemento decisivo que pode determinar o sucesso ou o fracasso de uma organização. A informação obtém uma crescente importância, o aumento da concorrência e a globalização dos negócios, obrigam as organizações a enfrentarem novas situações, onde a informação torna-se fundamental. A qualidade da decisão tomada pelos gestores vai depender diretamente da qualidade e relevância das informações que forem disponibilizadas pelos sistemas da organização. Segundo Colaço (2004), para levar as corporações a um lugar de destaque, os administradores precisam ter a capacidade de analisar os dados disponíveis e tomar decisões rápidas e seguras. Para Freitas et al. (1997), as organizações que conseguem trabalhar a informação de uma maneira satisfatória certamente terão maior competitividade. Há algumas décadas, as organizações vêm utilizando Sistemas de Informação Transacionais (SIT) para registrar suas transações de negócio, tais como: entradas e saídas no estoque, emissões de nota fiscal, gerações de duplicatas, folha de pagamento, lançamentos contábeis, ordens de produção e de compra, pedidos, dentre outros. Este tipo de sistema é caracterizado principalmente pelo seu grande volume de transações e alta taxa de atualizações. As organizações também fazem uso de Sistemas de Informações Gerenciais
17 16 (SIG) para extrair informações que contribuam para o processo de tomada de decisão, o que nem sempre é uma tarefa fácil. O SIG reúne informação de um SIT, apresentando as informações integradas e sumarizadas que auxiliam na análise, planejamento e suporte à decisão, além de permitir o acompanhamento do desempenho de um ou mais departamentos (COLAÇO, 2004). Geralmente estas duas categorias de sistemas são englobadas nos famosos pacotes Enterprise Resource Planning (ERP). Embora forneça informações importantes para a tomada de decisões, um SIG possui algumas limitações tais como: raramente busca informações de várias fontes de dados; possui restrições quanto à capacidade de análise e cruzamento de informações, bem como não permite simulações com cenários futuros. Em geral, o SIG é eficaz no auxílio de decisões para problemas estruturados, que são caracterizados por sua linearidade, repetitividade e facilidade de definição do problema. Para resolver problemas que estão além da capacidade de um SIG, foi criado o conceito de Sistema de Apoio a Decisão (SAD). Podemos conceituar um SAD como um ambiente projetado para apoiar, contribuir e influenciar o processo de tomada de decisão (COLAÇO, 2004). Segundo Freitas et al. (1997), os SAD são sistemas que contribuem para o processo de decisão, onde o foco está em suportar e não em automatizar as decisões. Um SAD é um sistema que se caracteriza por permitir uma análise histórica dos dados da organização, pesquisar informações de várias fontes e permitir a criação de cenários para que uma decisão possa ser simulada. Em geral, este tipo de sistema é eficaz para auxiliar na resolução de problemas estruturados ou não estruturados, sendo que os não estruturados tem como característica a falta de completude e precisão nas informações necessárias para sua solução. Uma tendência muito forte nos últimos anos são os softwares de Business Intelligence (BI), que podem ser entendidos de uma forma mais ampla, como a utilização de várias fontes de informação para definir estratégias de competitividade nos negócios da empresa (BARBIERI, 2011). Onde a ideia é olhar para os dados já existentes na organização, analisar e gerar conhecimento.
18 17 Para o correto funcionamento do BI se faz necessário o uso de uma base de dados específica para este fim, com uma modelagem dimensional, a qual denomina-se Data Warehouse ou simplesmente DW. Esse tipo de banco armazena as informações históricas da organização orientadas por assunto. Além disso, as informações de um DW não são voláteis, ou seja, uma vez carregadas, não sofrem alterações. Os dados encontrados dentro do DW são obtidos a partir dos sistemas da empresa, planilhas, dados externos a empresas, entre outras fontes. Com todos os dados unificados em uma nova base pode-se gerar consultas unificadas, cruzamentos de informações, entre outras operações (COLAÇO, 2004). Para serem armazenados de forma íntegra, os dados devem passar por um processo chamado Extract, Transform, Load (ETL), o que traduzindo obtemos: extração, transformação e carga, para só então serem armazenados no DW. A partir de então, esses dados ficam disponíveis para análises, consultas, acompanhamento de indicadores, entre outras possibilidades dentro de uma ferramenta de BI. Esse tipo de ferramenta proporciona uma maior liberdade para os gestores, pois estes ganham a possibilidade de visualizar, cruzar, gerar gráficos com os dados da organização sem a dependência da área de desenvolvimento para confecção de novos relatórios. 1.1 Motivação Muitas empresas, atualmente, mantêm vários sistemas de informação para administrar suas atividades. Na grande maioria das vezes, estes sistemas são desenvolvidos por diferentes fornecedores, e assim, não compartilham um mesmo repositório de dados, o que pode gerar problemas de consistência de informações. Como exemplo, pode-se citar a dificuldade na tomada de decisão com informações distribuídas em bases de dados diferentes, o que configura um problema de integração. Para Colaço (2004) os executivos sempre sofrem ao emitir relatórios gerenciais em sistemas diferentes e encontrarem resultados diferentes sobre o mesmo assunto. Um Business Intelligence é um Sistema de Apoio a Decisão, que resolve este tipo de problema por meio da carga de dados centralizada em um Data Warehouse, reunindo e integrando dados contidos em vários sistemas, a até mesmo fora deles, possibilitando que
19 18 gestores realizem consultas, façam simulações, entre outras operações, em uma base de dados íntegra (COLAÇO, 2004). O BI apesar de ser um conceito já estabelecido, ainda não é realidade para todas empresas, pois algumas organizações desconhecem este tipo de solução, ou não acreditam que isso possa agregar algum resultado a seu negócio e em outros casos o custo do projeto é maior que os seus benefícios. O grande desafio na implantação de um BI está na escolha das informações a disponibilizar, o que varia muito de empresa para empresa, pois, mesmo empresas do mesmo ramo estão inseridas em ambientes de negócios diferentes, tem enfoques diferentes, isso faz com que a necessidade de informações para tomada de decisão seja diferente. Neste sentido, um projeto de implantação de um sistema de BI em uma organização possui características que o tornam único. A estratégia de um BI precisa estar sempre alinhada ao plano estratégico e interesses de cada empresa, e direcionada às metas previamente estabelecidas pelos gestores. Segundo Primak (2009, texto digital) de nada adianta a empresa possuir todas as ferramentas disponíveis no mercado para a extração das informações e não saberem ao certo interpretálas. É fundamental que a organização saiba dar um rumo ao seu capital intelectual para que dessa forma as informações obtidas através do Business Intelligence atendam às expectativas esperadas (PRIMAK, 2009). Assim, o presente trabalho propõe um estudo de caso para a implantação de uma ferramenta de BI na empresa Couros Bom Retiro LTDA, com sede na cidade de Teutônia-RS, com o objetivo de melhorar a qualidade dos dados sobre quais são baseadas as decisões necessárias para o bom desenvolvimento e gerenciamento da organização. 1.2 Objetivos Este trabalho tem como objetivo geral implantar um sistema de Business Intelligence na empresa Couros Bom Retiro, visando integrar as informações e consequentemente contribuir para melhorar o processo de tomada de decisões.
20 19 Já como objetivos específicos podemos citar: 1.3 Levantamento das necessidades de tomada de decisão; Projeto e construção do Data warehouse; Escolha de uma ferramenta de BI; Implementação das rotinas dos processos de ETL; Elaboração dos painéis e relatórios para os usuários; Treinamento para utilização do ambiente; Disponibilização da ferramenta para análise; Avaliação dos resultados obtidos. Organização do Trabalho O presente trabalho encontra-se subdividido da seguinte maneira: no capítulo dois apresenta-se o referencial teórico, cujo objetivo é explanar os conceitos utilizados para a construção do conhecimento necessário para a elaboração e entendimento do estudo de caso proposto. Já no terceiro capítulo, encontra-se a descrição da metodologia utilizada para o desenvolvimento do presente trabalho, como se dará a pesquisa, bem como o levantamento de informações sobre o processo decisório, além das informações necessárias para a implantação do BI. No quarto capítulo, serão apresentadas as técnicas de modelagem dimensional, assim como sua documentação, e a descrição dos processos de ETL. No quinto capítulo, estão descritos os métodos utilizados para a disponibilização do ambiente para os usuários assim como a avaliação realizada por eles e a interpretação dos resultados obtidos.
21 20 No sexto capítulo, encontram-se as considerações finais do presente trabalho.
22 21 2 REFERENCIAL TEÓRICO Neste capítulo apresentam-se os conceitos que são inerentes a total compreensão do estudo de caso proposto. 2.1 Tomada de decisão Segundo Freitas et al. (1997) o ato de tomar decisão é inerente a todos os seres humanos, acontecendo nas mais variadas circunstâncias, faixas etárias e classes sociais. Nas organizações não é diferente, decisões são tomadas a todo momento sejam elas para resolver os problemas estruturados e os não estruturados. Os problemas estruturados, são caracterizados por sua linearidade, repetitividade, facilidade de definição e estrutura definida, é o tipo de situação que ocorre no cotidiano da organização. Já os problemas não estruturados são novos para a organização, onde a informação é incompleta e imprecisa e sem uma estrutura definida, este tipo de decisão ocorre esporadicamente nas organizações (FREITAS et al., 1997). Além da sua estrutura, as decisões pode ser classificadas quanto à atividade administrativa a que pertencem, segundo três níveis apresentados abaixo (ANTHONY apud FREITAS et al., 1997, p. 54):
23 22 Nível operacional: significa o uso eficaz e eficiente das instalações e recursos da organização para executar as operações da melhor forma possível; a decisão neste nível é um processo pelo qual se assegura que as atividades operacionais serão bem executadas; grande parte das decisões que ocorrem neste nível são estruturadas e os procedimentos a serem seguidos são geralmente muito consistentes; as decisões operacionais e suas ações geralmente geram uma resposta imediata; Nível tático: as decisões deste nível são normalmente relacionadas com o controle administrativo e são utilizadas para definir as ações de controle, formular novas regras de decisão que irão ser utilizadas no nível operacional, englobando também a aquisição de recursos, localização de projetos e novos produtos; neste nível são necessárias informações sobre o funcionamento planejado tomando por base normas, expectativas e pressupostos; Nível estratégico: engloba a definição de objetivos, políticas e critérios gerais para planejar o curso da organização; o propósito das decisões no nível estratégico é desenvolver estratégias para que a organização seja capaz de atingir seus objetivos; as atividades neste nível não possuem um período com ciclo uniforme; estas atividades podem ser irregulares, ainda que alguns planos estratégicos se façam dentro de planejamentos anuais ou em períodos preestabelecidos. Na pirâmide da Figura 1, apresentada a seguir, encontra-se representado graficamente os três níveis apresentados anteriormente, dando a ideia clara de hierarquia entre os níveis. Por meio desta representação, se torna claro também o nível de abrangência das decisões que são tomadas em cada nível da organização, ou seja, quanto mais alto o nível maior será a abrangência das consequências da decisão tomada.
24 23 Figura 1 Pirâmide organizacional. Fonte: FREITAS et al.1997, p.55. Segundo Leme (2004) os executivos vivem da tomada de decisões, e o processo que envolve a ação gera inúmeras incertezas. A solução para a mitigação das incertezas é, dispor do maior número de informações relevantes possíveis, para tornar isso uma realidade, é preciso fazer uso de um Sistema de Apoio a Decisão. 2.2 Sistemas de apoio a decisão Segundo Leme (2004) é possível dividir os Sistemas de Informação (SI) das organizações em dois grandes grupos, onde no primeiro encontram-se os Sistemas de Informação Transacionais, que são responsáveis pelo controle das funções da empresa, como faturamento, contas a pagar e receber, folha de pagamento, entre outros. Já no segundo grupo, estão localizados os sistemas de possibilitam a análise e mensuração do desempenho da organização, estas ferramentas são os Sistemas de Apoio a Decisão. Para Freitas et al. (1997) os SADs são sistemas que contribuem para o processo de decisão, onde o foco está em suportar e não em automatizar as decisões, ou seja, os sistemas são criados para apresentarem o maior número de informações relevantes a tomada de decisão para o decisor e não para automatizar o seu trabalho. Busca-se definir uma ferramenta que dê suporte ao usuário final, e não que venha substituir o seu julgamento e, por consequência, a sua decisão.
25 24 Sistema de Apoio a Decisão é um sistema computacional, que permite o decisor ampliar a sua capacidade na identificação e na resolução de problemas mal estruturados (COURBON apud FREITAS, 1997, p. 84). Segundo Colaço (2004), muitos conceitos de Sistema de Apoio a Decisão o rotula como Sistema de Informação (SI) que apoia qualquer processo de tomada de decisão em todos os níveis da organização. Porém, isso não é o suficiente, a diferença está no fato de um SAD não apenas fornecer informações, mas também contribuir e influenciar o processo de tomada de decisão. Então, o conceito que melhor define um SAD está relacionado a um ambiente complexo, projetado para fornecer subsídios para que a alta gerência tome decisões. Este ambiente é composto pelos seguintes componentes: Banco de Dados (BD): Este pode ser visto como uma coleção de dados interrelacionados. Nos ambientes de suporte a decisão estes dados pode ser tanto interno ou externos a organização, podem ser de conhecimentos e experiências de especialistas e de um histórico de decisões tomadas; Sistema Gerenciador de Banco de Dados (SGBD): Software desenvolvido para que usuários possam definir, criar e manipular Banco de Dados para as mais diversas finalidades, devem ser integrados e compartilhados para que as redundâncias de dados sejam mitigadas; Aplicativos com características gerenciais: São aplicativos com funções gerências de análise, ou seja, com a capacidade de analisar alternativas e fornecer sugestões para resolução dos problemas. Softwares com estas funcionalidades podem fazer parte do grande ambiente de suporte à decisão; Ferramentas de Apoio a Decisão (FAD): São aplicativos desenvolvidos para apresentar graficamente as informações, auxiliar a simulação de cenários, capacitar a análise ou descobrimento de conhecimento, entre outras funcionalidades. Estes aplicativos também são conhecidos como ferramentas de BI. A Figura 2 apresenta como os componentes apresentados estão relacionados.
26 25 Figura 2 Estrutura básica de um sistema de apoio a decisão. Fonte: COLAÇO, 2004, p.10. Como geralmente essas ferramentas são utilizadas por gestores, a sua interface deve ser de fácil utilização e flexível, pois devem possibilitar inúmeras formas de consultas e cruzamento de dados sem a necessidade de um conhecimento muito apurado em informática. 2.3 Business Intelligence Business Intelligence (Inteligência Empresarial), ou apenas BI, é um termo do Gartner Group. É um conceito, um modelo que atende os gestores que ocupam posições estratégicas dentro das organizações, que estão diretamente ligadas ao negócio e que possuem poder de decisão e influência sobre os rumos da empresa. O conceito surgiu na década de 80 e refere-se ao processo de coleta, organização, análise, compartilhamento e monitoramento de informações que oferecem suporte a gestão de negócios, desenvolvendo percepções e entendimentos a seu respeito, o que lhes permite tornar o processo de tomada de decisão mais consciente. Para Leme (2004) o termo BI reúne todos os assuntos ligados à tomada de decisão, armazenamento de dados, publicação de informações, até a produção de cubos multidimensionais de dados, o que será apresentado na subseção 2.5. Segundo Barbieri (2011) o BI, pode se compreendido como a utilização de várias fontes de dados para transformá-los
27 26 em informação que possibilitem a definição de estratégias competitivas, análises e tomadas de decisões. Com o passar do tempo, BI ganhou maior dimensão e importância, dentro de um processo natural de aperfeiçoamento e crescimento, anexando uma grande quantidade de ferramentas, tais como: o Executive Information System (EIS), o Decision Support System (DSS), planilhas eletrônicas, geradores de consultas e relatórios, Data Mining, ferramentas Analytic Processing On-Line (OLAP), entre tantas outras, que permite às empresas transformar dados gerados por seus sistemas de informação transacionais em informação qualitativa e relevante para a tomada de decisão (PRIMAK, 2009, texto digital). Mas as empresas que implantaram o Enterprise Resource Planning (ERP), cuja função é controlar e gerenciar o operacional das empresas, registrando, processando e documentando cada novo fato do cotidiano da organização e distribuindo essas informações de maneira clara e segura, em tempo real, chegaram à conclusão de que apenas armazenar grande quantidade de dados de nada adianta se estes se encontram repetidos, incompletos e pulverizados em vários sistemas dentro da organização. Chegou-se à conclusão que era necessário a utilização de ferramentas que possibilitassem o agrupamento destes dados em uma base única e integrálos de forma que possibilitem a realização de análises sob diferentes ângulos (PRIMAK, 2009, texto digital). Para Barbieri (2011) as ferramentas de BI são baseadas em processos fortemente transformadores de dados, tornando a qualidade dos dados que serve como base para a ferramenta, cada vez mais, de extrema importância, pois, a qualidade dos dados de entrada vai refletir diretamente na qualidade da informação utilizada na tomada de decisão. Com a implantação de uma ferramenta de BI, os gestores poderão ter acesso às informações de uma maneira ágil, abreviando assim o tempo de resposta a problemas ou à mudanças no mercado. Segundo Leme (2004) a implantação de um sistema de BI apresenta vários benefícios, entre os quais estão os citados a seguir: Possibilidade de reconhecer, criar, organizar e usufruir dos ativos informacionais de uma organização; Antecipação às mudanças de mercado; Conhecimento sobre o negócio;
28 27 Aprendizado pelos sucessos e falhas internos e dos concorrentes; Visão clara sobre novos mercados; Compreender as tendências dos negócios, melhorando a consistência no momento de decisão de estratégias e ações a serem tomadas; Facilitar a identificação de riscos; Planejamento corporativo mais amplo; Facilitar o acesso e distribuir informação de modo mais amplo para obter envolvimento de todos dentro da empresa; Oferecer dados estratégicos para análise com um mínimo de atraso em relação a uma transação ou evento dentro da empresa. 2.4 Ferramentas OLAP Segundo Colaço (2004) uma das tarefas mais solicitadas da equipe de Tecnologia de Informação (TI) é a construção de consultas ou relatórios, sejam estas simples listagens ou complexos mapas de custos, que apresentem informações sobre a organização. Como este tipo de demanda é difícil de ser prevista na concepção ou aquisição de sistemas, a solução da indústria de TI foi o desenvolvimento de ferramentas para geração de relatórios, porém, com o surgimento do Data Warehouse e a elevação da relevância da informação no ambiente organizacional, surge a necessidade de ferramentas com maior poder de análise, surge então em 1993 através do Dr. Codd1, a tecnologia Analytic Processing On-Line (OLAP) ou processamento analítico on-line, que caracteriza o conjunto de técnicas utilizadas para navegar por informações contidas em Data Warehouse. As ferramentas de OLAP são capazes de navegar pelos dados de um Data Warehouse, com o objetivo final de transformar dados em informações capazes de dar suporte ao processo 1 Cr. E.F. (Ted) Codd escreveu em 1993 um ensaio intitulado Providing OLAP to User-Analysts: An IT Mandate, onde foi criado o termo OLAP.
29 28 de tomada de decisão de forma amigável e flexível ao usuário em tempo hábil (Araújo; Batista; Magalhães, texto digital). Atualmente as linguagens de programação e as principais organizações mantenedoras de SGBDs oferecem APIs2 e componentes prontos para criação de softwares OLAP, causando em alguns gestores de projetos de TI a falsa impressão de simplicidade no que envolve o desenvolvimento deste tipo de software os encorajando a desenvolvê-los, o que geralmente resulta em projetos fracassados ou em ferramentas com carência interminável de manutenção. O ideal é escolher uma ferramenta OLAP que venha pronta, seja comprando-a ou buscando em comunidades de softwares livres, este tipo de ferramenta possui algumas características, sendo a principal delas, a possibilidade de visualização multidimensional dos dados. Os dados são modelados na estrutura denominada cubo, onde em cada dimensão fica representado um tema que representa um assunto importante da empresa. Na Figura 3, pode ser visto um exemplo de cubo. Figura 3 Cubo de dados com 4 dimensões. Fonte: COLAÇO, 2004, p.29. Para Colaço (2004) as ferramentas de OLAP possuem doze regras, que foram criadas por Dr. Codd, para sua avaliação, estas são descritas a seguir: Visão conceitual multidimensional: os dados são estruturados em várias dimensões, desta maneira, possibilitando o cruzamento de informações de diversas formas; 2 Application Program Interface Um conjunto de funções predefinidas, documentadas e disponibilizadas por um software que serve de interface para outras aplicações interagirem com o mesmo.
30 29 Transparência: as solicitações enviadas a uma ferramenta OLAP devem ser atendidas, não importando a origem dos dados, de forma transparente ao usuário final; Acessibilidade: os softwares OLAP devem suportar conexão com todas as bases de dados onde as informações foram mapeadas; Desempenho de informações consistentes: significa o conhecimento de todas as informações armazenadas a fim de que a disponibilização das consultas, para o usuário seja simples; Arquitetura cliente/servidor: as aplicações OLAP deve ser concebidas na arquitetura cliente/servidor, com o intuito de atender a qualquer usuário independentemente do local em que ele se encontre; Dimensionalidade genérica: deve possuir a capacidade de tratar os dados com a quantidade de dimensões que forem necessário para geração da informação; Manipulação de dados dinâmicos: deve tratar as células nulas, ou sem valor, que usualmente ocorrem com o grande volume de dados registrados nas diversas dimensões; Suporte a multiusuários: habitualmente a ferramenta OLAP vai ser acessada por vários usuários e estes podem estar analisando o mesmo cubo de dados. As ferramentas devem suportar este acesso simultâneo; Operações ilimitadas em dimensões cruzadas: os softwares OLAP devem possuir a capacidade de navegação em todas as dimensões que os dados que estão sendo analisados possuírem; Manipulação intuitiva dos dados: a ferramenta deve ser intuitiva, ou seja, o usuário deve poder manipular os dados livremente, ou seja, sem nenhum tipo de auxílio; Flexibilidade nas consultas: a ferramenta deve possibilitar que o usuário possa efetuar qualquer tipo de consulta sobre os dados disponibilizados a ele; Níveis de dimensão e agregação ilimitados: devido ao grande volume de dados gerado pelas dimensões, a ferramenta deve prover vários níveis de associações de dados.
31 30 Fundamentalmente, ferramentas OLAP são softwares direcionados a usuários finais para fazerem uso dos dados registrados no DW, gerando relatórios que são capazes de auxiliar a tomada de decisão (LEME, 2004) Operações OLAP Para que a geração das informações seja possível, as ferramentas OLAP devem permitir a montagem e manipulação de cenários. Atualmente estas ferramentas suportam funções de derivação de dados complexos, o que é nomeado Slice and Dice. Estas funções servem para alterar a ordem das dimensões, alterar linhas por colunas, com o intuito de permitir a análise das informações por outros ângulos, permitindo a investigação de diferentes inter-relacionamentos. O Slice and Dice engloba quatro operações, que são (COLAÇO, 2004): Ranging: operação responsável por modificar o resultado das consultas incluindo ou removendo dados, para que isso ocorra é necessário a intervenção do usuário, como por exemplo a inclusão de um novo fornecedor em uma consulta, o resultado refletirá nas demais operações; Drilling: operação responsável por permitir a navegação entre diferentes níveis de detalhamento de um cubo de dados. Esta operação possui um subconjunto de operações que possibilitam a navegação, que são: Drill down, que permite aumentar o nível de detalhamento, Drill Across, que permite a navegação transversal dos dados, e Drill up ou Roll up, que permite diminuir o nível de detalhamento dos dados; Rotation: operação responsável por permitir a alteração da forma de visualização dos dados, sem a alteração de conteúdo visualizado. A grande vantagem no rotation é que a operação é processada apenas em memória sem novas consultas no servidor; Ranking: operação responsável por permitir que os usuários filtrem os dados apresentados, eliminando as informações desnecessárias para o processo de tomada de decisão.
32 Data Warehouse Surgiu na década 90 um conceito cujo foco é a grande base de dados informacionais, ou seja, um repositório único de dados, chamado de Data Warehouse (Armazém de dados). Para Leme (2004), DW está entre os principais componentes para a execução prática de um projeto de Business Intelligence. Segundo Colaço (2004) Data Warehouse pode ser conceituado como um Banco de Dados projetado para armazenar informações integradas de toda organização, separado lógica e fisicamente dos sistemas da organização, formando assim um histórico destas informações Características de um Data Warehouse O Data Warehouse segundo Leme (2004) possui quatro características principais, que são: Não volatilidade: Os dados armazenados dentro de um Data Warehouse não são voláteis, ou seja, estes representam uma fotografia da empresa no momento de sua extração. Os dados gravados neste repositório não devem ser alterados após sua gravação, com apenas algumas exceções, como por exemplo, uma falha no processo de carga. Assim é possível fazer a comparação entre dois momentos distintos da organização sem o risco de que uma alteração no sistema transacional da empresa tenha efeito nos dados históricos armazenados dentro do Data Warehouse; Estrutura por assunto: As informações armazenadas dentro desta base de dados estão agrupadas por um determinado assunto, como por exemplo, faturamento, contas a pagar, contas a receber, entre outros. Cada assunto é considerado um cubo de dados ou cubo de conhecimento. Cada assunto é representado por uma ou mais tabelas fato, na qual são registradas as transações da organização; Integrado: Para Leme (2004), esta possivelmente seja a característica mais importante em um Data Warehouse. Os dados registrados em um Data Warehouse são
33 32 provenientes de sistemas distintos, com padrões e formatos diferentes. Porém antes do seu efetivo registro, os dados devem passar por um processo que os tornem totalmente íntegros para que assim assumam um único padrão; Variável com o tempo: Os sistemas de informação transacional fazem alterações nos dados de suas bases a sempre que forem necessário, perdendo assim o histórico da informação, pois em uma consulta o valor retornado será sempre o último registrado. Já em um Data Warehouse quando uma alteração é feita gera um novo registo, mantendo assim o histórico da informação. Para que o Data Warehouse mantenha as características citadas acima, os dados dos sistemas transacionais da organização, bem como os dados externos, precisam passar por um processo de extração e transformação para depois serem armazenados. A seguir, apresenta-se a arquitetura do sistema onde estes dados são armazenados Arquitetura de um Data Warehouse Segundo Colaço (2004) os dados são inicialmente extraídos das aplicações da organização, sendo armazenado em uma área intermediária chamada Staging Area, ou área de estágio. Neste local, os dados são integrados e limpos, para só então serem exportados para o DW. No processo de integração, os dados passam por um processo que o colocam em conformidade com um padrão. Já no processo de limpeza, as chaves repetidas, os valores inválidos ou outros tipos de erros são eliminados. Na Figura 4 podemos ver o caminho trilhado pelos dados até serem armazenados no DW para então podem ser acessados por aplicativos de BI.
34 33 Figura 4 Ambiente de Data Warehouse. Fonte: COLAÇO, 2004, p. 19. Para Kimball apud Colaço (2004), as soluções de DW podem ter outra área intermediária de armazenagem de dados, além da Staging Area, denominada Operational Data Store (ODS), que fica posicionada logicamente após o processo de ETL, como apresentado na Figura 5. Nesta área, se encontram dados parcialmente estruturados e analíticos, organizados por área de negócio, os dados são uma cópia do processo de ETL. A área de dados ODS, pode ser compreendida como um cadastro consolidador de informações, porém mantendo a granularidade e estrutura não dimensional oriundas dos sistemas de extração (BARBIERI, 2011). Figura 5 Representação gráfica de um DW com ODS. Fonte: KIMBALL apud COLAÇO, 2004, p. 20.
35 34 Os dados contidos em um ODS são mantidos como uma cópia de um curto intervalo de tempo dos dados operacionais, podendo então servir para recuperação de cargas defeituosas e em alguns casos para dar suporte a operações em tempo real, como no caso de aplicativos Customer Relationship Management (CRM). O Data Warehouse, não está preparado para atender a demanda de sistemas que necessitem de dados em tempo real ou quase real (KIMBALL; ROSS, 2002). Por questão de economia de espaço, alguns projetos são implementados sem o ODS, o que não acarreta problemas graves, pois cargas problemáticas podem ser refeitas com uma nova extração, porém isso demanda mais tempo (COLAÇO, 2004). Não basta apenas a implementação desta arquitetura para o correto armazenamento das informações em um Data Warehouse. Para que isso seja possível, é necessário um esforço dos administradores de banco de dados, já que a modelagem dos dados de um DW é diferente da modelagem do ambiente operacional, este assunto será abordado no capítulo a seguir Modelagem dimensional Na década de 70 surgiu o conceito de Diagrama Entidade e Relacionamento (DER). Este foi o responsável pela significativa melhora na performance das bases de dados, pois seu intuito é eliminar em sua totalidade a redundância de dados, com isso garantindo que inclusões, alterações ou remoções de dados sejam feitas em um único local (COLAÇO, 2004). Este tipo de modelagem é eficiente para os registros de transações nos SITs, porém, em consultas gerenciais, o modelo perde sua eficiência, devido à complexidade das consultas, e também da alta taxa de atualização dos dados, fazendo com que os dados históricos da organização sejam perdidos. A realização de consultas gerenciais, que são geralmente complexas devido ao grande número de conexões entre tabelas, são impraticáveis em um banco de dados construído a partir de um modelo Entidade e Relacionamento (ER). Para diminuir esta complexidade e aumentar o desempenho das consultas, surgem os modelos dimensionais. A modelagem dimensional para Barbieri (2011) é a simples alteração na ordem de distribuição de campos por entre as tabelas do modelo ER, modificando a estrutura para que
36 35 se torne mais voltada a muitos pontos de entrada, que são as dimensões, e menos para os dados mensuráveis, que são os fatos. Isso significa que os dados estão organizados em um formato diferente do proposto pelo modelo ER, assemelhando-se a uma estrela, onde no centro encontra-se a tabela fato e ao seu redor, ligados a ela, estão as tabelas de dimensões com informações que facilitam a visualização dos dados contidos na tabela fato. O resultado da modelagem dimensional pode ser associada a um cubo, onde dentro do cubo se encontram os dados mensuráveis da organização, como quantidade de venda, valor de faturamento, entre muitas outras medidas. Já nas faces do cubo estão localizadas as formas que os dados podem ser analisados, como por cliente, por período, por produto, entre outras, como mostra a Figura 6. Para Barbieri (2011), o conceito de cubo representa o conjunto de dados de dimensões e de fatos, extraídos dos sistemas, com o objetivo de atender necessidades específicas. Figura 6 Cubo de dados. Fonte: LEME, 2004, p Tabela Fato Para Barbieri (2011) nas tabelas fato concentram-se os dados de interesse, passíveis de manipulação numérica e estatística da organização, cada linha nesta tabela representa um fato. Este pode, ou não, estar agrupado, dependendo do nível de granularidade da tabela fato. Em
37 36 suas linhas estão registradas uma ou mais medidas numéricas. Geralmente estas tabelas possuem como chave primária uma combinação entre as chaves de todas as tabelas de dimensões e possuem uma quantidade de linhas muito superior a estas tabelas. Possuem uma quantidade inferior de colunas, em comparação com as dimensões, porém ocupam mais de 90% do espaço de um Data Warehouse (LEME, 2004). Segundo Kimball (2002) a tabela fato, é a primeira tabela em um modelo dimensional, onde as medidas de desempenho do negócio são armazenadas. Nas tabelas fato, apenas métricas numéricas devem ser armazenadas, sendo que informações textuais necessárias devem ser armazenadas nas tabelas de dimensões. Os fatos armazenados nesta tabela podem ser de três tipos: aditivos, onde os fatos armazenados geram somas coerentes em todas as dimensões, como por exemplo a quantidade vendida, semi-aditivas, são os fatos que geram medidas coerentes em algumas dimensões da tabela fato, como, por exemplo, uma temperatura, onde não faz sentido sua soma e sim sua média, e por fim os fatos não-aditivos, que são as métricas em que sua agregação não fazem sentido em nenhuma das dimensões, como, por exemplo, um campo onde é armazenado o total de vendas até o momento da extração, este tipo de fato é utilizado para contagens para resumo de registros e não pode ser somado ao longo do tempo Tabela Dimensão Na órbita de todas as tabelas fato existem algumas tabelas, as quais são denominadas tabelas dimensões. Por meio delas são feitos os filtros e agrupamentos dos dados. Para Barbieri (2011), estas são as tabelas que possuem as chaves de entrada do modelo, como tempo, fornecedores, produtos, entre outras. Essas tabelas possuem uma relação de 1:N com a tabela fato, ou seja, cada linha da tabela de dimensão pode estar relacionada com várias linhas na tabela fato. Uma dimensão possui um número significativamente inferior de linhas em relação a tabela fato e possui as informações descritivas relacionadas a dimensão. Sua chave primária deve ser única, e sempre diferente da sua chave no sistema de origem, este conceito é chamado de chave artificial.
38 37 Existem duas formas de criar uma tabela dimensão, que são o Star Schema ou esquema estrela e o Snowflake Schema ou esquema flocos de neve, onde o último prega a normalização das informações contidas nas tabelas de dimensão e o outro não. Para Barbieri (2011) a utilização do esquema estrela é altamente recomendável, pois o ganho de desempenho deste esquema é muito superior, devido à quantidade de junções necessárias para obter informações de uma dimensão modelada no esquema flocos de neve. Este, por sua vez, leva vantagem na economia de espaço gerada pela normalização, porém, a quantidade de espaço ocupada pelas tabelas de dimensão é muito inferior a ocupada pelas tabelas fato, cujo espaço economizado será desprezível se comparado com o ganho de desempenho gerado pelas consultas sem junções realizados pelo esquema estrela. Dentro de um Data Warehouse podem ser armazenadas várias tabelas fato e suas respectivas dimensões que podem ser compartilhadas entre as tabelas fatos, para que isso seja possível, deve haver uma compatibilidade entre as dimensões e as tabelas fato envolvidas devem possuir uma granularidade compatível. No interior de um DW se encontram muitos cubos de dados em formato de estrela. Quando as dimensões começam a ser reutilizadas em novos fatos temos um novo esquema chamado multiestrela (BARBIERI, 2011). A Figura 7, a divisão a apresenta como as tabelas dimensões desnormalizadas, no esquema estrela, relacionam-se com a tabela fato, já na divisão b está representada como as dimensões conectam-se com suas tabelas auxiliares, para atender a normalização exigido pelo esquema flocos de neve, na parte c apresenta-se uma representação de como as tabelas fato podem compartilhar dimensões compatíveis com outras tabelas fato, formando o esquema multiestrela.
39 38 Figura 7 Representação gráfica dos esquemas estrela, flocos de neve e multiestrela. Fonte: BARBIERI, 2011, p.170. Durante a evolução natural dos dados da organização pode exigir que alguns dados sejam atualizadas nas tabelas de dimensões, com por exemplos, clientes podem alterar seu estado civil, fornecedores podem alterar seu endereço, entre outros casos possíveis. Isso exige que uma estratégia para controle das atualizações dos dados seja adotada, existem três maneiras disponíveis na literatura, que são classificados por tipo: Tipo 1: A atualização dos campos desta tabela é um processo mais simples, porém os dados históricos são perdidos, assim como nos sistemas de informação transacional. Esta abordagem é geralmente utilizada quando a informação não possui um fator relevante ao processo de negócio; Tipo 2: Criação de um novo registro na tabela de dimensão. Com esta abordagem, se mantêm o histórico dos dados, porém é necessário a inclusão de campos para controle da validade do registro na tabela dimensão, quando um novo registro é inserido na tabela fato, este se relaciona apenas com o registro válido no momento da inclusão; Tipo 3: Criação de uma nova coluna na tabela dimensão, onde é registrado o último valor válido, antes da atualização, mantendo assim a informação atual e a informação anterior.
40 Granularidade Granularidade é um termo utilizado para definir o nível de detalhamento dos dados armazenados nas tabelas fato de um Data Warehouse, ou seja, quanto maior for o nível de granularidade, menor será o detalhamento da informação, e quanto menos detalhe maior será o nível da granularidade. Nos sistemas transacionais, por exemplo, o nível de granularidade é o menor possível, já que os dados se encontram no mais puro detalhe. A granularidade é um dos pontos-chave no projeto de um Data Warehouse, pois este influi diretamente na quantidade de dados que serão armazenadas em disco e também no tipo de consulta que poderão ser realizadas (LEME, 2004) Hierarquia dimensional Hierarquias são formadas através do relacionamento entre atributos de uma mesma dimensão, estes são responsáveis diretamente pela possibilidade de realização das operações OLAP, mais especificamente das funções que envolvem Drilling, criando níveis de agregação entre alguns atributos de uma dimensão e desta maneira influenciando a granularidade dos dados (COLAÇO, 2004). Para exemplificar a utilização de hierarquias pode-se citar a mais simples delas, na dimensão que representa o tempo, claramente existe uma relação hierárquica entre os atributos ano, semestre, mês e dia, onde o maior nível de agregação é o ano e o menor é o dia Passos para modelagem dimensional Segundo Kimball e Ross (2002) o processo de modelagem dimensional possui quatro passos, que são:
41 40 Escolha do processo de negócio a ser modelado: um processo é uma atividade da organização, que normalmente é suportada por um SIT, como faturamento, compras, pedidos, entre outros. A maneira mais eficiente para escolha dos processos é através de entrevistas com os usuários, concentrando-se em processos de negócios, em vez de áreas de negócio; Definição do nível de granularidade dos dados: definir o nível de granularidade é especificar exatamente o que uma linha na tabela de fatos representa individualmente. Este representa o nível de detalhe associado com as medidas da tabela de fatos. Ele fornece a resposta para a pergunta: Como você descreve uma única linha na tabela de fato? ; Escolha as dimensões que se aplicam a cada linha da tabela fato: atributos que são dimensões normalmente são as respostas para o questionamento Como são descritos os dados que resultam do processo de negócio?. Pode-se citar como exemplos de dimensões: data, produto, cliente, tipo de transação, entre outras; Identificar os fatos numéricas que serão registrados na tabela fato: atributos que estão entre os fatos são respostas para a pergunta O que estamos medindo?, todos os fatos devem ser compatíveis com o nível de granularidade definido no segundo passo, como exemplo de fato temos: quantidade vendida, valor de custo, valor da venda, entre outros. 2.6 ETL Antes de os dados serem armazenados no Data Warehouse, eles devem passar por um conjunto de processos chamados Extract, Transform e Load (ETL). Para Colaço (2004), durante o projeto de um DW, os processos de ETL consomem mais de 70% do tempo de desenvolvimento, devido ao alto grau de customização exigido por estes processos, pois, cada empresa possui uma estrutura de dados específica em suas fontes de dados e também à falta de conhecimento e documentação destas. Nas organizações, em alguns casos, os dados estão armazenados fora dos sistemas de informação, como legislações, dados estratégicos armazenados em planilhas eletrônicas, entre outras situações, o processo de ETL também é
42 41 responsável por integrar essas informações com os dados extraídos dos sistemas da organização. Segundo Kimball e Caserta (2004) o processo de ETL é a base do Data Warehouse, pois este processo, quando devidamente projetado, é responsável pela extração dos dados nos sistemas de origem, imposição de padrões de qualidade e consistência e a oferta dos dados no formato próprio para os softwares com o objetivo de auxílio no processo de tomada de decisão. Geralmente a equipe de desenvolvimento do projeto tem uma escolha a fazer neste ponto, que é a escolha, no mercado, de uma ferramenta pronta para este fim ou o desenvolvimento interno destas rotinas, seja com a utilização de scripts3 de banco de dados ou o desenvolvimento de uma ferramenta completa. O processo de ETL é dividido em fases, onde cada uma executa uma tarefa específica. As fases são: Extração: primeira fase do processo, onde os dados são extraídos dos sistemas fonte e armazenados em uma área temporária. Alguns fatores devem ser observados neste processo, como: frequência da extração, os critérios de seleção dos dados a serem extraídos e o melhor momento para a extração; Transformação: segunda fase do processo, fase esta que demanda maior empenho e tempo da equipe de desenvolvimento. Nesta etapa, são aplicadas as regras de negócio, ajustes de granularidade, regras de agregações, integração e limpeza, entre outras. A integração consiste na consolidação dos dados de diversas origens, que geralmente envolve diferentes codificações. Os dados devem ser perfeitamente integrados para que ao serem armazenados assumam uma única convenção. A limpeza é a rejeição de valores inválidos, chaves repetidas ou registros com outros tipos de erro; Carga: Fase final do processo de ETL, onde os dados são transferidos da área temporária utilizada pelo processo para o ambiente de produção. 3 Script é um texto com instruções que deve ser seguidas, seja por um sistema computacional ou por pessoas.
43 42 3 METODOLOGIA Para o desenvolvimento do presente trabalho, a definição da metodologia se faz necessário. Segundo Gerhardt e Silveira (2009, p.11) pode-se compreender metodologia como o estudo do método, ou seja, é o corpo de regras e procedimentos estabelecidos para realizar uma pesquisa. A metodologia tem como atividade principal a pesquisa, que no presente trabalho pode ser caracterizada como de natureza exploratória. Para Wainer (2007, p. 29), uma pesquisa deve ser caracterizada como exploratória quando além de descrever o fenômeno, faz propostas para novas teorias, ou novas observações, novas métricas para medir o fenômeno. Segundo Gerhardt e Silveira (2009, p. 35) a pesquisa exploratória tem como objetivo proporcionar maior familiaridade com o problema, com vistas a torná-lo mais explícito ou a construir hipóteses. Quanto à abordagem da pesquisa utilizada para o desenvolvimento do presente trabalho, esta pode ser classificada como qualitativa. Segundo Wainer (2007, p. 5), a pesquisa qualitativa baseia-se na observação cuidadosa do ambiente onde o sistema será utilizado, do entendimento das várias perspectivas dos usuários ou potenciais usuários do sistema. Segundo Gerhardt e Silveira (2009, p. 31) a pesquisa qualitativa não se preocupa com a representação numérica, mas, sim, com o aprofundamento do comportamento de um grupo social, de uma organização, etc, ou seja, esta abordagem de pesquisa visa o entendimento do ambiente pesquisado e não de sua mensuração.
44 43 Ainda segundo Wainer (2009, p. 28) de um modo geral, métodos qualitativos em ciência da computação são métodos que se caracterizam por ser um estudo aprofundado de um sistema no ambiente onde ele está sendo usado, ou, em alguns casos, onde se espera que o sistema seja usado. Sendo esta uma pesquisa muito específica, podemos reconhecer que ela adota a forma de um estudo de caso, o que vem de acordo com Wainer (2009, p. 31) o qual afirma que, as áreas da computação que estão interessadas em processos, decisões e opiniões optam por um estilo de estudo de caso. Segundo Ventura (2007, p.2) o estudo de caso visa à investigação de um caso específico, bem delimitado, contextualizado em tempo e lugar para que se possa realizar uma busca circunstanciada de informações. O estudo de caso caracteriza-se, segundo Wainer (2009), pela forma que o pesquisador interage com os sujeitos pesquisados, que geralmente é de forma semiformal, utilizando entrevistas e conversas programadas, e normalmente tem acesso a documentos, dados e outros materiais formais da organização, tendo como objetivo descobrir as práticas formais desta e os valores, opiniões e atitudes dos sujeitos pesquisados. Para Yin (2010, p.24) o método de estudo de caso permite que os investigadores retenham as características globais e significativas dos eventos da vida real, tais como, comportamento dos pequenos grupos, os processos organizacionais e administrativos, entre outros. Este método permite ao investigador a visualização do cenário pesquisado como um todo, e não apenas da perspectiva dos entrevistados, podendo, assim, propor melhorias globais nos processos. Após a caracterização do presente trabalho quanto aos aspectos metodológicos, é necessário definir os principais passos para realização do estudo. Este trabalho se caracteriza como um Estudo de Caso, com o objetivo de compreender o cenário que envolve o processo de tomada de decisão e acompanhamentos de indicadores de desempenho da empresa Couros Bom Retiro LTDA. Para dar suporte ao assunto abordado no estudo de caso, outras fontes se fazem necessárias, sendo que para o presente trabalho, foram utilizadas pesquisas bibliográficas e de campo.
45 44 Segundo Fonseca apud Gerhardt e Silveira (2009, p.36) pesquisa bibliográfica se caracteriza como, [ ] o levantamento de referências teóricas já analisadas, e publicadas por meios escritos e eletrônicos, como livros, artigos científicos, páginas de web sites. Qualquer trabalho científico inicia-se com uma pesquisa bibliográfica, que permite ao pesquisador conhecer o que já se estudou sobre o assunto. Ainda segundo Fonseca apud Gerhardt e Silveira (2009, p.36) a pesquisa de campo caracteriza-se pelas investigações em que, além da pesquisa bibliográfica e/ou documental, se realiza coleta de dados junto a pessoas, com o recurso de diferentes tipos de pesquisa. O primeiro passo do Estudo de Caso será o levantamento das necessidades de tomada de decisão, que será realizado através de uma pesquisa qualitativa com os tomadores de decisão da organização e os responsáveis pelo acompanhamento dos indicadores do setor selecionado para implantação. Após ter definido as necessidades de tomada de decisão, com base na análise das respostas da pesquisa qualitativa, as informações sobre os processos serão sintetizadas e se tornarão a base para o projeto do Data Warehouse e sua posterior implementação. Para a apresentação dos dados para os administradores se faz necessária a utilização de uma ferramente de BI, que será selecionada nesta fase do projeto. A escolha da ferramenta será baseada na política de software da organização, que basicamente consiste na utilização de softwares livres. A próxima fase, envolverá o projeto e implementação das rotinas de ETL, que serão responsáveis pela população de dados nos cubos de dados contidos no DW, com a ferramenta de BI já definida, estes processos devem contemplar as suas possíveis particularidades. Após os testes das rotinas de ETL e o DW estarem com uma certa quantidade de informações, a ferramenta de BI será disponibilizada aos usuários para análise, onde estes avaliarão a qualidade e confiabilidade das informações obtidas por meio da utilização da ferramenta. Para que seja realizada a avaliação do trabalho realizado, uma nova pesquisa qualitativa será realizada com os usuários, coletando assim as suas opiniões e sugestões, as quais serão registradas e utilizadas para eventuais melhorias no Data Warehouse, bem como analisadas para a redação das conclusões do presente trabalho.
46 TRABALHO PROPOSTO Visão geral Este capítulo apresenta o processo de modelagem e criação do Data Warehouse assim como a apresentação das ferramentas utilizadas para a preparação do ambiente para os usuários Caracterização da empresa Fundado em 1989, o GRUPO BOM RETIRO tem história marcada pela simplicidade e seriedade com que trata seus negócios transformando a relação com seus clientes em pessoal, fiel e duradoura. No início das atividades, terceirizava-se o beneficiamento de peles em outros curtumes. Em 1994, foi alugado um prédio em Taquari onde se produzia 400 peles por dia. Atualmente, o Grupo conta com 11 unidades produtivas no Brasil e uma na Argentina, somando uma área construída superior a m², com a capacidade de industrializar couros por dia de salgado a acabado e gera aproximadamente empregos diretos.
47 46 O grupo é formado por cinco empresas, sendo elas, Medicouros indústria e comércio de couros, Couros Bom Retiro, Future Indústria de Couros LTDA, Curtume CBR e Bom Retiro Transporte e Logística. O grupo tem como missão oferecer soluções em couro com qualidade, segurança e responsabilidade, visando resultados aos clientes, funcionários, fornecedores, comunidade e acionistas Justificativa A justificativa do presente trabalho se dá pelo aumento da dinamicidade do mundo dos negócios, forçando assim as organizações a serem mais ágeis em seus processos internos de tomada de decisão, também pelo interesse dos gestores da organização em softwares que lhes proporcionem acesso aos dados da empresa de uma forma mais ágil e dinâmica, sem a dependência da equipe de TI Áreas de negócio Para a realização do presente trabalho, entre as diversas áreas de negócio, foram selecionadas duas para a aplicação do presente estudo de caso. Para a seleção utilizou-se como critério balizador a experiência do autor nas áreas disponíveis e optou-se pelas áreas: compras e comercial.
48 Processos modelados O primeiro passo para a modelagem dos processos foi a descoberta dos mesmos. Este processo de descoberta foi realizado através de uma pesquisa com os usuários responsáveis pelas decisões das áreas selecionadas da organização Levantamento de requisitos Para que as informações fossem modeladas de maneira correta foi elaborado um questionário, que pode ser encontrado no Apêndice A deste documento, cujo objetivo era obter os processos específicos mais relevantes dentro da sua esfera de trabalho, onde as informações utilizadas para a tomada de decisão eram encontradas. Os colaboradores selecionados para responder o questionário estão integrados ao corpo de colaboradores da organização há mais de 15 anos, sendo então: um Gerente Administrativo de 41 à 43 anos que possui de 15 à 20 anos de experiência e uma Gerente de Compras de 30 à 34 anos que possui de 8 a 12 anos de experiência Grupos de informações identificados Com a análise das respostas dos questionários nas áreas selecionadas encontrou-se a necessidade de modelar os processos. Na área de compras são: compra, consumo de produtos, ajuste de estoque e níveis de estoque, já na área comercial os processos são faturas de exportação e comissão dos agentes comerciais. As principais regras de negócio envolvidas nos processos são:
49 48 Compras: As compras são realizadas com base na programação de produção que são informadas pelas unidades, com posse destas informações são geradas as ordens de compra para os fornecedores com os quais os preços já foram negociados; Consumo: O processo de industrialização da matéria-prima é baseado em fórmulas de produção. Através destas e da quantidade de matéria-prima presente em cada lote, o sistema calcula a quantidade de material e realiza as baixas no estoque, as quais são consideradas baixas por lote e são os consumos reais de insumos; Ajustes: No final de cada mês é realizado o balanço de almoxarifado. Quando for encontrada uma diferença de estoque onde a quantidade física é maior que a quantidade que o sistema está registrando, este processo de ajuste é realizado. Nos casos em que a situação é inversa, ou seja, o sistema registra maior quantidade do que existe fisicamente, o ajuste é feito através de uma requisição que gera no sistema um consumo de material, que é tratado como consumo manual; Níveis de estoque: Registro dos níveis de estoque diários para cada item de estoque; Faturas: Documento responsável pela venda de exportação, podendo assumir duas formas, sendo estas comerciais ou de amostras. A forma comercial é responsável pelo real faturamento com exportação da organização. As faturas de amostra, embora possuam valor, não são efetivamente pagas, visto que nestes casos o material é remetido para confecção de amostras; Comissão: Os clientes entram em contato com a empresa através dos representantes comerciais, estes recebem uma porcentagem do valor faturado dependendo da relevância do cliente e do próprio agente. 4.3 Modelagem dimensional Para o processo de modelagem dimensional foram utilizados os quatro passos sugeridos por Kimball e Ross (2002), que são: a escolha do processo a ser modelado, definição da granularidade, escolha das dimensões e a identificação dos fatos.
50 49 Para auxiliar nos passos dois e três da modelagem foi utilizada a técnica do 5W2H, porém não há a necessidade da utilização dos dois H, que são o how que indica como será feito e o how much indicando quanto vai custar para ser feito, uma vez que o how much é a própria métrica escolhida. Os cinco W são: What: consiste no que será registrado como fato; Why: porque será feito, aqui é analisada a real necessidade do item anterior, eventualmente outra estratégia pode atender a necessidade levantada; Where: onde será feito, este W consiste em informações sobre a localização; When: representa a informação de quando será feito, utilizado para obter informações sobre as dimensões de tempo; Who: indica por quem será feito, possui informações do responsável pelo fato. Durante a terceira fase do processo de modelagem percebeu-se que algumas dimensões poderiam ser utilizadas em mais de um cubo de informações, criando assim um esquema multiestrela. Desta forma gerando uma economia de espaço em disco e no processo de ETL Informações compartilhadas As seguintes dimensões são compartilhadas por dois ou mais cubos de dados dentro do Data Warehouse: Dimensão Tempo (DimTempo): Esta dimensão contém a informação do tempo em que os fatos ocorreram. A dimensão possui um registro por dia, sendo inserida conforme necessário. Como o fato estoque é registrado diariamente isso evita que existam lacunas na dimensão. Ela possui as informações de ano, semestre, trimestre, mês, dia e dia da semana;
51 50 Dimensão Produto (DimProduto): Esta dimensão possui as informações dos produtos consumidos e comprados na organização. Possui os seguintes dados: código, descrição do produto, estrutural, unidade de medida, categoria e subcategoria; Dimensão Filial (DimFilial): Esta dimensão possui as informações da filial onde o fato ocorreu. Possui as seguintes informações: código, nome fantasia, descrição completa da filial, Cadastro Nacional de Pessoa Jurídica (CNPJ), cidade e estado em que está situada a filial. Na Listagem 1 encontra-se o código escrito em Structured Query Language () para a criação das dimensões de tempo, produtos e filiais no banco de dados. Listagem 1 Código para criação das dimensões tempo, produto e filial Tabla DimTempo CREATE TABLE DimTempo ( iddimtempo serial, Data DATE, Dia INT, Mes INT, Ano INT, DiaSemana VARCHAR(15), MesExtenso VARCHAR(15), Semestre VARCHAR(15), Trimestre VARCHAR(15), CONSTRAINT PK_dimTempo_id PRIMARY KEY (iddimtempo)); Tabla DimProduto CREATE TABLE DimProduto ( iddimproduto serial, Codigo VARCHAR(6), Descricao VARCHAR(45), Estrutural VARCHAR(25), NCM VARCHAR(15), Unidade VARCHAR(3), CategoriaN1 VARCHAR(35), CategoriaN2 VARCHAR(35), CategoriaN3 VARCHAR(35), CONSTRAINT PK_dimProduto_id PRIMARY KEY (iddimproduto)); Tabla DimFilial CREATE TABLE DimFilial ( iddimfilial serial, Codigo INT, Fantasia VARCHAR(25), Descricao VARCHAR(40), CNPJ CHAR(18), Cidade VARCHAR(32),
52 51 41 Estado VARCHAR(30), 42 CONSTRAINT PK_dimFilial_id PRIMARY KEY (iddimfilial)); Fonte: Elaborado pelo autor. Para criar os registros da dimensão tempo foi desenvolvida uma função na linguagem pl/pgsql4, basicamente esta linguagem permite que sejam agrupados códigos escritos em em uma função, e esta pode ser chamada em uma consulta ou separadamente. A função que está transcrita na Listagem 2 é responsável por transformar a data passada por parâmetro em um registro na dimensão tempo. Listagem 2 Código da função PopulaTempo. 1 CREATE OR REPLACE FUNCTION PopulaTempo(dataIns date) 2 RETURNS date 3 AS $$ 4 DECLARE 5 mes integer; 6 dias integer; 7 sem integer; 8 tri integer; 9 trimestre varchar[] := '{"1 trimestre", "2 trimestre", 10 "3 trimestre", "4 trimestre"}'; 11 semestre varchar[] := '{"1 semestre", "2 semestre"}'; 12 diasemana varchar[] := '{"Domingo", "Segunda-Feira", 13 "Terca-Feira", "Quarta-Feita", 14 "Quinta-feira", "Sexta-Feira", 15 "Sabado"}'; 16 Meses varchar[] := '{"Janeiro", "Fevereiro", "Marco", 17 "Abril", "Maio", "Junho", "Julho", 18 "Agosto", "Setembro", "Outubro", 19 "Novembro", "Dezembro"}'; 20 BEGIN 21 IF NOT EXISTS(SELECT * FROM DimTempo WHERE data=datains) THEN 22 SELECT date_part('month', datains) INTO mes; 23 SELECT date_part('dow', datains) INTO dias; 24 SELECT trunc((mes-1)/3, 0)+1 INTO tri; 25 SELECT trunc((mes-1)/6, 0)+1 INTO sem; 26 INSERT INTO DimTempo VALUES (default, datains, 27 date_part('day', datains), mes, 28 date_part('year', datains), 29 diasemana[dias+1], 30 Meses[mes], semestre[sem], 31 trimestre[tri]); 32 END IF; 33 return datains; 34 END; 35 $$ LANGUAGE plpgsql; Fonte: Elaborado pelo autor. A função apresentada na Listagem 2 basicamente decompõem a data passada por parâmetro, utilizando funções, nas suas três informações, ou seja em ano, mês e dia, com base nestes três dados é calculado o semestre, trimestre e dia da semana, para posterior registro na dimensão. 4 Plpgsql é uma linhagem procedural para desenvolvimento de funções e gatilhos dentro do SGBD Postgre.
53 52 Para a documentação das transformações realizadas para a formação das tabelas dimensão e fato de um DW utiliza-se uma matriz que registra os campos de origem e de destino de cada coluna das tabelas, assim como as transformações sofridas pelos dados antes da carga no DW. Esta matriz se denomina mapa de transformação. Na Tabela 1 encontra-se o mapa de transformação das dimensões compartilhadas. Tabela 1 Mapa de transformação das dimensões compartilhadas. Origem Banco de dados Tabela Origem dfiliais dfiliais dfiliais dfiliais dsce045 dscp060 dsce100 dsce100 dsce100 dsce100 dsce100 dscp067 dscp067 Destino Campo Origem Tipo campo Tabela Destino codi fant desc cnpj nome desc redu desc estrutural ncm unid nivel nivel Char(2) Char(25) Char(40) Char(18) Char(32) Char(30) Char(6) Char(35) Char(26) Char(14) Char(2) Char(34) Char(34) dimfilial dimfilial dimfilial dimfilial dimfilial dimfilial dimproduto dimproduto dimproduto dimproduto dimproduto dimproduto dimproduto Campo Destino codigo fantasia descricao cnpj cidade estado codigo descricao estrutural ncm unidade categorian1 categorian2 Tipo Campo Tipo Tabela Integer Varchar(25) Varchar(40) Char(18) Varchar(32) Varchar(40) Char(6) Varchar(45) Varchar(25) Varchar(15) Varchar(3) Varchar(35) Varchar(35) Dimensão Dimensão Dimensão Dimensão Dimensão Dimensão Dimensão Dimensão Dimensão Dimensão Dimensão Dimensão Dimensão S C Transformação D Fonte: Elaborado pelo autor. A coluna Slowly Changing Dimensions (SCD) do mapa de transformação registra a estratégia de atualização da dimensão, onde o número 2 representa a criação de uma nova linha na dimensão caso o campo seja alterado e o número 1 representa a atualização do campo na tabela de dimensão Área de Compras A área de compras é responsável pelas compras de insumos para produção, material para embalagem, material de segurança, entre outros tipos de materiais. A compra de matériaprima é realizada por um setor especializado, não entrando no escopo do presente trabalho Cubo de Compras
54 53 O cubo de compra tem como objetivo o registro das compras realizadas pela organização junto a seus fornecedores, este fato possui as seguintes métricas: Quantidade adquirida, valor líquido e valor da nota fiscal. Os cinco W para o fato de compras são: What: Valores e quantidades relativas as compras de materiais; Why: Uma compra de insumos ocorre para reposição de estoques para produção. Como é uma constante, não é necessário armazenar esta informação; Where: Representa o local onde esta compra foi realizada, e está relacionada com a dimensão DimFilial; When: Representa o momento em que a compra foi realizada, e está relacionado com a dimensão DimTempo; Who: Representa o fornecedor do pedido de compra, e está relacionado com a dimensão DimFornecedor. O cubo de compras possui quatro dimensões, sendo as três dimensões compartilhadas (DimTempo, DimFilial e DimProduto), detalhadas no item 4.3.1, e a dimensão fornecedor (DimFornecedor). Esta última possui as informações dos fornecedores da organização, contendo as seguintes informações: código, nome, nome fantasia, CNPJ, Cidade, Estado e Pais. Na Figura 8 encontra-se o diagrama da tabela fato com suas dimensões.
55 54 Figura 8 Cubo de compras. Fonte: Elabora pelo autor. Na Listagem 3 encontra-se o código para a criação da tabela fato (FatCompra) e da dimensão fornecedor, que é específica deste cubo (DimFornecedor), no banco de dados. Listagem 3 Código para criação do fato compra e a dimensão fornecedor Table DimFornecedor CREATE TABLE DimFornecedor ( iddimfornecedor serial, Codigo char(5), Nome VARCHAR(58), Fantasia VARCHAR(18), CNPJ CHAR(18), Cidade VARCHAR(32), Estado VARCHAR(30), Pais VARCHAR(40), PaisIngles VARCHAR(40), CONSTRAINT PK_dimFornecedor_id PRIMARY KEY (iddimfornecedor) ); Table FatCompra CREATE TABLE FatCompra ( idfatestoque serial, iddimproduto INT NOT NULL, iddimfilial INT NOT NULL, iddimfornecedor INT NOT NULL, iddimtempo INT NOT NULL, Quantidade DECIMAL(15,2) DEFAULT 0, Valor_liquido DECIMAL(15,2) DEFAULT 0,
56 55 28 Valor_NF DECIMAL(15,2) DEFAULT 0, 29 CONSTRAINT PK_FatCompra_id PRIMARY KEY (idfatestoque), 30 CONSTRAINT FK_FatCompra_DimProduto FOREIGN KEY 31 (iddimproduto) REFERENCES DimProduto(idDimProduto), 32 CONSTRAINT FK_FatCompra_DimFilial FOREIGN KEY 33 (iddimfilial) REFERENCES DimFilial(idDimFilial), 34 CONSTRAINT FK_FatCompra_DimFornecedor FOREIGN KEY 35 (iddimfornecedor) REFERENCES DimFornecedor(idDimFornecedor), 36 CONSTRAINT FK_FatCompra_DimTempo FOREIGN KEY 37 (iddimtempo) REFERENCES DimTempo(idDimTempo) 38 ); Fonte: Elaborado pelo autor Cubo de Consumo O cubo de consumo tem como objetivo o registro dos consumos de materiais pela organização. Este fato possui as métricas de valor consumido e quantidade consumida. Os cinco W para o fato de compras são: What: Valores e quantidades relativos aos consumos de materiais; Why: Um consumo ocorre por motivos diversos. Não é uma necessidade categorizar os motivos de um consumo; Where: Representa o local onde o consumo foi realizado, e está relacionado com a dimensão DimFilial; When: Representa o momento da realização do consumo, e está relacionado com a dimensão DimTempo; Who: Apesar do ERP armazenar o usuário que realizou o a baixa, esta informação é irrelevante para a realização de análises no BI. O cubo de consumo possui quatro dimensões, sendo as três dimensões compartilhadas (DimTempo, DimFilial e DimProduto), detalhadas no item 4.3.1, e a dimensão requisição (DimRequisicao). Esta última possui a função de tipificar o consumo, contendo apenas a descrição da requisição. Na Figura 9 encontra-se o diagrama da tabela fato com suas dimensões.
57 56 Figura 9 Cubo de consumo. Fonte: Elaborado pelo autor. Na Listagem 4 encontra-se o código para a criação da tabela fato (FatConsumo) e da dimensão requisição, que é específica deste cubo (DimRequisicao), no banco de dados. Listagem 4 Código para criação do fato compra e a dimensão requisição Table DimRequisicao CREATE TABLE DimRequisicao ( iddimrequisicao serial, Descricao VARCHAR(15), CONSTRAINT PK_dimRequisicao_id PRIMARY KEY (iddimrequisicao) ); Table FatConsumo CREATE TABLE FatConsumo ( idfatconsumo serial, iddimproduto INT NOT NULL, iddimfilial INT NOT NULL, iddimrequisicao INT NOT NULL, iddimtempo INT NOT NULL, Quantidade DECIMAL(15,2) DEFAULT 0, valor DECIMAL(15,2) DEFAULT 0, CONSTRAINT PK_FatConsumo_id PRIMARY KEY (idfatconsumo), CONSTRAINT FK_FatConsumo_DimProduto FOREIGN KEY (iddimproduto) REFERENCES DimProduto(idDimProduto), CONSTRAINT FK_FatConsumo_DimFilial FOREIGN KEY (iddimfilial) REFERENCES DimFilial(idDimFilial), CONSTRAINT FK_FatConsumo_DimRequisicao FOREIGN KEY (iddimrequisicao) REFERENCES DimRequisicao(idDimRequisicao),
58 57 28 CONSTRAINT FK_FatConsumo_DimTempo FOREIGN KEY 29 (iddimtempo) REFERENCES DimTempo(idDimTempo) 30 ); Fonte: Elaborado pelo autor Cubo de Ajuste O cubo de ajuste tem como objetivo o registro dos ajustes positivos de materiais, estes ajustes são necessários quando é encontrada uma divergência no balanço de estoque realizado mensalmente. Este fato possui as métricas de valor ajustado e quantidade ajustada. Os cinco W para o fato de compras são: What: Valores e quantidades relativos aos ajustes de materiais; Why: As causas de um ajuste são diversas. Não é necessidade do presente trabalho o mapeamento das mesmas; Where: Representa o local onde o ajuste foi realizado, e está relacionado com a dimensão DimFilial; When: Representa o momento em que foi realizado o ajuste, e está relacionado com a dimensão DimTempo; Who: Apesar do ERP armazenar o usuário que realizou o ajuste, esta informação é irrelevante para a realização de análises no BI. O cubo de ajuste possui apenas as três dimensões compartilhadas (DimProduto, DimTempo e DimFilial), detalhadas no item Na Figura 10 encontra-se o diagrama da tabela fato (FatAjuste) com suas dimensões.
59 58 Figura 10 Cubo de Ajuste. Fonte: Elaborado pelo autor. Na Listagem 5 encontra-se o código para a criação da tabela fato (FatAjuste) no banco de dados. Listagem 5 Código para criação do fato ajuste Table FatAjuste CREATE TABLE FatAjuste ( 5 idfatajuste serial, 6 iddimproduto INT NOT NULL, 7 iddimfilial INT NOT NULL, 8 iddimtempo INT NOT NULL, 9 Quantidade DECIMAL(15,2) DEFAULT 0, 10 valor DECIMAL(15,2) DEFAULT 0, 11 CONSTRAINT PK_FatAjuste_id PRIMARY KEY (idfatajuste), 12 CONSTRAINT FK_FatAjuste_DimProduto FOREIGN KEY 13 (iddimproduto) REFERENCES DimProduto(idDimProduto), 14 CONSTRAINT FK_FatAjuste_DimFilial FOREIGN KEY 15 (iddimfilial) REFERENCES DimFilial(idDimFilial), 16 CONSTRAINT FK_FatAjuste_DimTempo FOREIGN KEY 17 (iddimtempo) REFERENCES DimTempo(idDimTempo) 18 ); Fonte: Elaborado pelo autor.
60 Cubo de Estoque O cubo de estoque tem como objetivo o registro dos níveis de estoque dos materiais mantidos pela organização. Esta tabela fato contém uma linha por dia para cada produto movimentado pela empresa. Este fato possui as métricas de valor em estoque e quantidade em estoque. Os cinco W para o fato de compras são: What: Valores e quantidades relativos aos estoques de materiais; Why: Não se aplica; Where: Representa o local onde o estoque está alocado, e está relacionado à dimensão DimFilial; When: Representa o momento em que foi registrado os níveis de estoque está relacionado com a dimensão DimTempo; Who: Não se aplica. Diferentemente de outros cubos que representam transações de negócios, e que possuem carga diferencial, ou seja, somente as transações ocorridas em um determinado período são carregadas para o Data Warehouse, o cubo de estoque possui carga total. Cargas totais, ou snapshots são realizadas sempre que precisamos ter uma fotografia ou monitoramento de um certo dado ao longo do tempo. O cubo de estoque possui apenas as três dimensões compartilhadas (DimTempo, DimFilial e DimProduto), detalhadas no item Na Figura 11 encontra-se o diagrama da tabela fato(fatestoque) com suas dimensões.
61 60 Figura 11 Cubo de estoque. Fonte: Elaborado pelo autor. Na Listagem 6 encontra-se o código para a criação da tabela fato (FatEstoque) no banco de dados. Listagem 6 Código para criação do fato estoque Table FatEstoque CREATE TABLE FatEstoque ( 5 idfatestoque serial, 6 iddimfilial INT NOT NULL, 7 iddimproduto INT NOT NULL, 8 iddimtempo INT NOT NULL, 9 Quantidade DECIMAL(15,2) DEFAULT 0, 10 Valor DECIMAL(15,2) DEFAULT 0, 11 CONSTRAINT PK_FatEstoque_id PRIMARY KEY (idfatestoque), 12 CONSTRAINT FK_FatEstoque_DimFilial FOREIGN KEY 13 (iddimfilial) REFERENCES DimFilial(idDimFilial), 14 CONSTRAINT FK_FatEstoque_DimTempo FOREIGN KEY 15 (iddimtempo) REFERENCES DimTempo(idDimTempo), 16 CONSTRAINT FK_FatEstoque_DimProduto FOREIGN KEY 17 (iddimproduto) REFERENCES DimProduto(idDimProduto) 18 ); Fonte: Elaborado pelo autor.
62 Área comercial A área de comercial é responsável pelo recebimento dos pedidos de compra, feitos diretamente pelos clientes ou com intermédio de representantes, também chamados de agentes. Neste setor são tratados tanto os pedidos de exportação quanto os de mercado interno, para o presente trabalho serão abordados apenas os pedidos de exportação Cubo de Faturas O cubo de faturas tem como objetivo o registro das faturas de exportação efetuadas pela organização junto a seus clientes e representantes, este fato possui as seguintes métricas: Valor faturado, valor da comissão em conta gráfica5. Os valores registrados neste cubo estão em dólares. Os cinco W para o fato de compras são: What: Valores da fatura e valor da comissão em conta gráfica; Why: Representa o motivo da fatura. Não se aplica; Where: Representa o local onde a fatura foi realizada, e está relacionado com a dimensão DimFilial; When: Representa o momento em que a fatura foi emitida, e está relacionado com a dimensão DimTempo. Who: Representa o applicant (responsável pelo pagamento), que está relacionado com a dimensão DimCliente. O cubo de fatura possui cinco dimensões, sendo duas dimensões compartilhadas (DimTempo e DimFilial), detalhadas no item 4.3.1, e as outras dimensões são: 5 Comissão em conta gráfica ocorre quando o representante é do exterior, então o valor da comissão é informado ao Banco Central, junto com outras informações através do Registro de Exportação. No momento que o applicant efetuar o pagamento da fatura o próprio Banco Centra retem o valor da comissão e o envia diretamente a conta no exterior do representante.
63 62 Dimensão banco (DimBanco): Contém os dados referente ao banco por onde vai ser realizado o pagamento da fatura, contendo as seguintes informações: código do banco, nome, nome fantasia; Dimensão tipo de fatura (DimTipoFatura): Esta dimensão tem como função a segregação das faturas em basicamente dois tipos: comercial e amostra; Dimensão cliente (DimCliente): Contém dos dados referente aos clientes da organização, as seguintes informações: código, nome, nome fantasia, Classe do cliente, CPF ou CNPJ dependendo se o cliente for pessoa física ou jurídica, Cidade, Estado e País. Na Figura 12 encontra-se o diagrama da tabela fato (FatFatura) com suas dimensões. Pode-se notar que existem quatro ligações entre a tabela fato e a dimensão cliente, isso representa que para a emissão de uma fatura são necessários quatro clientes, que são o emitente, o cedente, o applicant e o notify, os dois primeiros são para controle interno da organização, por outro lado o applicant representa o cliente que vai pagar pela mercadoria e o notify representa as informações do cliente que será apenas notificado sobre a fatura. Existe ainda uma quinta informação que é o consignee, que representa quem vai receber a mercadoria no exterior, porém, esta informação foi julgada irrelevante para o presente trabalho.
64 63 Figura 12 Cubo de Faturas. Fonte: Elaborado pelo autor. Na Listagem 7 encontra-se o código para a criação da tabela fato (FatFatura) e das dimensões (DimBanco, DimTipoFatura e DimCliente) no banco de dados. Listagem 7 Código para criação do fato fatura e as dimensões cliente, tipo de fatura e banco Table DimCliente CREATE TABLE DimCliente ( iddimcliente serial, Codigo CHAR(5), Nome VARCHAR(58), Fantasia VARCHAR(18), Classe CHAR(1), PJPf CHAR(18), Cidade VARCHAR(32), Estado VARCHAR(30), Pais VARCHAR(40), PaisIngles VARCHAR(40), CONSTRAINT PK_dimCliente_id PRIMARY KEY (iddimcliente) ); Table DimTipoFatura
65 CREATE TABLE DimTipoFatura ( 22 iddimtipofatura serial, 23 tipofatura VARCHAR(10), 24 CONSTRAINT PK_dimTipoFatura_id PRIMARY KEY (iddimtipofatura) 25 ); Table DimBanco CREATE TABLE DimBanco ( 31 iddimbanco serial, 32 codigo CHAR(3), 33 nome VARCHAR(60), 34 fantasia VARCHAR(12), 35 CONSTRAINT PK_dimBanco_id PRIMARY KEY (iddimbanco) 36 ); Table FatFatura CREATE TABLE FatFatura ( 42 idfatfatura serial, 43 iddimcliente_applicant INT NOT NULL, 44 iddimcliente_notify INT NOT NULL, 45 iddimcliente_emitente INT NOT NULL, 46 iddimcliente_cedente INT NOT NULL, 47 iddimfilial INT NOT NULL, 48 iddimbanco INT NOT NULL, 49 iddimtempo INT NOT NULL, 50 iddimtipofatura INT NOT NULL, 51 fatura VARCHAR(11), 52 valor DECIMAL(15,2) DEFAULT 0, 53 ComissaoCC DECIMAL(15,2) DEFAULT 0, 54 CONSTRAINT PK_fatFatura_id PRIMARY KEY (idfatfatura), 55 CONSTRAINT FK_fatFatura_DimCliente_Applicant FOREIGN KEY 56 (iddimcliente_applicant) REFERENCES DimCliente(idDimCliente), 57 CONSTRAINT FK_fatFatura_DimCliente_notify FOREIGN KEY 58 (iddimcliente_notify) REFERENCES DimCliente(idDimCliente), 59 CONSTRAINT FK_fatFatura_DimCliente_Emitente FOREIGN KEY 60 (iddimcliente_emitente) REFERENCES DimCliente(idDimCliente), 61 CONSTRAINT FK_fatFatura_DimCliente_Cedente FOREIGN KEY 62 (iddimcliente_cedente) REFERENCES DimCliente(idDimCliente), 63 CONSTRAINT FK_fatFatura_DimFilial FOREIGN KEY 64 (iddimfilial) REFERENCES DimFilial(idDimFilial), 65 CONSTRAINT FK_fatFatura_DimBanco FOREIGN KEY 66 (iddimbanco) REFERENCES DimBanco(idDimBanco), 67 CONSTRAINT FK_fatFatura_DimTempo FOREIGN KEY 68 (iddimtempo) REFERENCES DimTempo(idDimTempo), 69 CONSTRAINT FK_fatFatura_DimTipoFatura FOREIGN KEY 70 (iddimtipofatura) REFERENCES DimTipoFatura(iddimTipoFatura) 71 ); Fonte: Elaborado pelo autor.
66 Cubo de comissões O cubo de comissões tem como objetivo o registro das comissões relativas as faturas de exportação efetuadas pela organização, este fato possui as seguintes métricas: Base de comissão, percentual de comissão e o valor da comissão, os valores registrados neste cubo estão em dólares. Os cinco W para o fato de compras são: What: Base de comissão, percentual da comissão e valor da comissão; Why: Representa a razão do comissionamento. Como é uma constante, não se aplica; Where: Representa o local onde a comissão foi gerada, e está relacionada com a dimensão DimFilial; When: Representa o momento em que a comissão foi gerada, e está relacionado com a dimensão DimTempo; Who: Representa o agente que recebeu a comissão, e está relacionado com a dimensão DimRepresentante. O cubo de fatura possui quatro dimensões, sendo duas dimensões compartilhadas (DimTempo e DimFilial), detalhadas no item 4.3.1, e as outras dimensões são: tipo de comissão (DimTipoComissao), onde esta dimensão tem como função a segregação das comissões em três tipos: comissão em conta gráfica, comissão a remeter 6 e por nota fiscal. Além disso, também possui a dimensão representante (DimRepresentante), onde está contém dos dados referente ao representante da organização junto ao cliente, com as seguintes informações: código, nome e nome fantasia. Na Figura 13 encontra-se o diagrama da tabela fato com suas dimensões. 6 Comissão a remeter é semelhante a conta gráfica, porém é o departamento financeiro da organização que decide o momento de realizar o pagamento do representante.
67 66 Figura 13 Cubo de Comissões. Fonte: Elaborado pelo autor. Na Listagem 8 encontra-se o código para a criação da tabela fato (FatComissaoFatura) e das suas dimensões específicas (DimRepresentante DimTipoComissao) no banco de dados. Listagem 8 Código para criação do fato comissão e as dimensões representante e tipo de comissão Table DimRepresentante CREATE TABLE DimRepresentante ( iddimrepresentante serial, Codigo CHAR(3), Nome VARCHAR(40), Fantasia VARCHAR(12), CONSTRAINT PK_dimRepresentante_id PRIMARY KEY (iddimrepresentante) ); Table DimTipoComissao CREATE TABLE DimTipoComissao ( iddimtipocomissao serial, tipocomissao VARCHAR(20), CONSTRAINT PK_dimTipoComissao_id PRIMARY KEY (iddimtipocomissao) ); Table FatComissaoFatura e
68 CREATE TABLE fatcomissaofatura ( 25 idfatcomissao serial, 26 iddimfilial INT NOT NULL, 27 iddimtempo INT NOT NULL, 28 iddimrepresentante INT NOT NULL, 29 iddimtipocomissao INT NOT NULL, 30 idfatfatura INT NOT NULL, 31 basecomissao DECIMAL(15,2) DEFAULT 0, 32 Comissao DECIMAL(15,2) DEFAULT 0, 33 Percentual DECIMAL(15,2) DEFAULT 0, 34 CONSTRAINT PK_fatComissaoFatura PRIMARY KEY (idfatcomissao), 35 CONSTRAINT FK_FatComissaoFatura_DimRepresentante FOREIGN KEY 36 (iddimrepresentante) REFERENCES DimRepresentante(idDimRepresentante), 37 CONSTRAINT FK_FatComissaoFatura_DimTempo FOREIGN KEY 38 (iddimtempo) REFERENCES DimTempo(idDimTempo), 39 CONSTRAINT FK_FatComissaoFatura_DimFilial FOREIGN KEY 40 (iddimfilial) REFERENCES DimFilial(idDimFilial), 41 CONSTRAINT FK_FatComissaoFatura_DimTipoComissao FOREIGN KEY 42 (iddimtipocomissao) REFERENCES DimTipoComissao(idDimTipoComissao), 43 CONSTRAINT FK_FatComissaoFatura_fatFatura FOREIGN KEY 44 (idfatfatura) REFERENCES FatFatura(idfatFatura) 45 ); Fonte: Elaborado pelo autor. 4.4 Transformação dos dados Para a documentação dos processos ETL utilizam-se alguns documentos que indicam detalhes do processo de extração, como o mapa de extração, que é responsável pela documentação dos sistemas de origem das informações, os responsáveis pela informação, tipo de banco de dados, SO, tamanho do banco de dados da aplicação e a quantidade de transações diárias. A Tabela 2 apresenta o mapa de extração dos grupos de informação modelados no presente trabalho. Tabela 2 Mapa de extração Grupo de Área de Nome do Responsável pelo seinformação negócio aplicativo tor Compra Compras SCE Estoque Compras SCE Ajuste Compras SCE Consumo Compras SCE Fatura Comercial COM Comissões Comercial COM Fonte: Elaborado pelo autor. Maria Cecilia de Vargas Maria Cecilia de Vargas Maria Cecilia de Vargas Maria Cecilia de Vargas André Gustavo Hass André Gustavo Hass SGDB PostgreSql PostgreSql PostgreSql PostgreSql xbase xbase Quantidade Tamanho Transações de usuários do DB por dia GB 23 GB 23 GB 23 GB 8 GB 8 GB
69 68 Devido ao fato de algumas informações sobre a extração serem as mesmas para todas as linhas da tabela, as respectivas colunas foram suprimidas do mapa de extração para facilitar a visualização. Essas informações são: Linux (Sistema Operacional), e Leandro Portz (Responsável técnico) Área de compras Outro documento utilizado para a documentação do processo ETL é a tabela de informação volumétrica, esta é responsável por auxiliar nas decisões referentes ao armazenamento físico dos dados, mostrando uma previsão de crescimento do BD. Na Tabela 3 encontram-se as informações volumétricas para a área de compras. Tabela 3 Tabela de Informação volumétrica da área de compras. Contagem Média de Nome da tainicial de comp. de bela linhas linha DimTempo DimFilial DimProduto DimRequisicao FatAjuste FatCompra FatConsumo FatEstoque Cresce com 80 Novo dia 153 Nova filial 233 Novo produto 19 Novo tipo de requisição 136 Novo ajuste 200 Nova compra 140 Novo consumo 136 Novo dia Expectativa Expectativa Tamanho Tamanho mensal de mensal de inicial da para seis linhas Bytes tabela meses MB ,014 0,002 0,924 0,000 0,165 6,307 37,371 87,656 Fonte: Elaborado pelo autor. Devido ao fato de alguns dados sobre a informação volumétrica serem os mesmos para todas as linhas da tabela, as respectivas colunas foram suprimidas do mapa de extração para facilitar a visualização. Essas informações são: inserir (Estratégia atualização), diária (Frequência de carga), etl_estoque (Nome do processo de ETL), Na Tabela 4 encontra-se o mapa de transformação para as tabelas fato e dimensões específicas da área de compras. O mapa de transformação indica a origem e o destino das informações no processo de carga, bem como possíveis transformações realizadas sobre os dados.
70 69 Tabela 4 Mapa de transformação da área de compras. Origem Banco Tabela Campo Tipo de Origem Origem campo dados codi Char(2) fant Char(25) desc Char(40) cnpj Char(18) nome Char(32) desc Char(30) redu Char(6) desc Char(35) estrutural Char(26) ncm Char(14) unid Char(2) nivel Char(34) nivel Char(34) nivel Char(34) forn Char(5) nome Char(58) fant Char(18) classecli Char(1) cgc/cpf Char(18) nome Char(32) desc Char(30) desc Char(40) descing Char(40) forn Char(5) nome Char(58) fant Char(18) cgc Char(18) nome Char(32) desc Char(30) desc Char(40) descing Char(40) qtde numeric valr numeric qtde numeric Destino Tabela Destino dfiliais dfiliais dfiliais dfiliais dsce045 dscp060 dsce100 dsce100 dsce100 dsce100 dsce100 dscp067 dscp067 dscp067 dsce200 dsce200 dsce200 dsce200 dsce200 dsce045 dscp060 dscp220 dscp220 dsce200 dsce200 dsce200 dsce200 dsce045 dscp060 dscp220 dscp220 dsce400 dsce400 dsce400 dsce400 valr numeric fatcompra dsce400 vlnf numeric fatcompra Campo Destino dimfilial codigo dimfilial fantasia dimfilial descricao dimfilial cnpj dimfilial cidade dimfilial estado dimproduto codigo dimproduto descricao dimproduto estrutural dimproduto ncm dimproduto unidade dimproduto categorian1 dimproduto categorian2 dimproduto categorian3 dimcliente codigo dimcliente nome dimcliente fantasia dimcliente classe dimcliente pjpf dimcliente cidade dimcliente estado dimcliente pais dimcliente paisingles dimfornecedor codigo dimfornecedor nome dimfornecedor fantasia dimfornecedor cnpj dimfornecedor cidade dimfornecedor estado dimfornecedor pais dimfornecedor paisingles fatajuste quantidade fatajuste valor fatcompra quantidade Tipo Campo integer Varchar(25) Varchar(40) Char(18) Varchar(32) Varchar(40) Char(6) Varchar(45) Varchar(25) Varchar(15) Varchar(3) Varchar(35) Varchar(35) Varchar(35) Char(5) Varchar(58) Varchar(18) Char(1) Char(18) Varchar(32) Varchar(30) Varchar(40) Varchar(40) Char(5) Varchar(58) Varchar(18) Char(18) Varchar(32) Varchar(30) Varchar(40) Varchar(40) numeric numeric numeric S Tipo C Tabela D Dimensão Dimensão Dimensão Dimensão Dimensão Dimensão Dimensão Dimensão Dimensão Dimensão Dimensão Dimensão Dimensão Dimensão Dimensão Dimensão Dimensão Dimensão Dimensão Dimensão Dimensão Dimensão Dimensão Dimensão Dimensão Dimensão Dimensão Dimensão Dimensão Dimensão Dimensão Fato Fato Fato valor_liquid numeric o Fato 2 valor_nf Fato 2 numeric dsce400 obse Char(20) dimrequisicao descricao Varchar(15) Dimensão 2 dsce400 qtde dsce400 valr numeric fatconsumo numeric fatconsumo fatestoque fatestoque numeric numeric numeric numeric quantidade valor quantidade valor Fato Fato Fato Fato Transformação Se obse contiver 'MANUAL' então 'Req manual' se não 'Req. Lote' Fonte: Elaborado pelo autor. A tabela FatEstoque não possui informações de origem, pois os dados registrados nesta são o resultado de uma função e não dados encontrados em outras tabelas. A função utilizada para gerar os níveis de estoques é a saldorazao115, esta recebe como parâmetro o código da filial, o código do produto e a data em que se deseja os valores de estoque.
71 70 Para que a transformação dos dados, descrita na Tabela 4, ocorra estes devem passar pelo processo ETL. Na área de compras este processo é executado todos os dias a 1 hora e 5 minutos da madrugada. O processo está representado pelo diagrama de atividade encontrado na Figura 14. Este diagrama tem a função de demonstrar graficamente os passos realizados por um algoritmo para facilitar o seu entendimento. Como pode ser visto na Figura 14, após a conexão com os respectivos BD, vários grupos de informação são inseridos e atualizados, tais como: Filiais, produtos, fornecedores e datas. Para essas informações somente serão importados os dados inexistentes na base do BI, mediante a alguma relação com o fato importado. As únicas informações a serem importadas integralmente são as referentes a movimentação dos estoque da organização. Figura 14 Diagrama de atividade do processo de ETL da área de compras. Fonte: Elaborado pelo autor. No Apêndice B pode-se encontrar o código fonte, escrito em PHP, do processo ETL da área de compras.
72 Área comercial Na Tabela 5 encontram-se as informações volumétricas para a área comercial, com o objetivo de auxiliar nas decisões referentes ao armazenamento físico dos dados, mostrando uma previsão de crescimento do BD. Tabela 5 Tabela de Informação volumétrica da área comercial. Contagem Média de Nome da tabela linhas inici- comp. de ais linha DimBanco 4 DimCliente 724 DimRepresentante 60 DimTipocomissao 3 DimTipofatura 2 fatcomissaofatura 0 fatfatura 0 Fonte: Elaborado pelo autor. Cresce com Expectati- Expectati- Tamanho Tamanho va mensal va mensal inicial da para seis de linhas de Bytes tabela meses MB 79 Nova Banco 246 Novo Cliente 49 Novo Representante 24 Novo tipo de comissão 14 Novo tipo de fatura 204 Nova comissão 167 Nova fatura ,001 0,181 0,003 0,000 0,000 0,060 0,049 Devido ao fato de alguns dados sobre a informação volumétrica serem os mesmos para todas as linhas da tabela, as respectivas colunas foram suprimidas do mapa de extração para facilitar a visualização. Essas informações são: inserir (Estratégia atualização), diária (Frequência de carga), cargabi (Nome do processo de ETL). Na Tabela 6, encontra-se o mapa de transformação para as tabelas fato e dimensões específicas da área comercial. O mapa de transformação indica a origem e o destino das informações no processo de carga, bem como possíveis transformações realizadas sobre os dados.
73 72 Tabela 6 Tabela de transformação da área comercial. Origem Banco Campo Tabela Tipo de de Tabela Destino Origem campo dados Origem dspr130 bco dspr130 nome dspr130 fant dscp210 repr dscp210 nome dscp210 fant DBF dspr800 tfat DBF dspr910 vcom DBF dspr910 comi DBF DBF DBF dspr800 invo dspr800 tfat dspr800 ccgr Char(3) dimbanco Char(59) dimbanco Char(12) dimbanco dimrepresenchar(3) tante dimrepresenchar(40) tante dimrepresenchar(12) tante fatcomissaofanumeric tura fatcomissaofanumeric tura fatcomissaofanumeric tura Char(10) fatfatura numeric fatfatura numeric fatfatura Destino Tipo Tabela S C D codigo nome fantasia Char(3) Dimensão Varchar(60) Dimensão Varchar(12) Dimensão codigo Char(3) Dimensão 2 nome Varchar(40) Dimensão 1 fantasia Varchar(12) Dimensão 1 Campo Destino basecomisnumeric sao Fato 2 comissao numeric Fato 2 percentual numeric Fato 2 fatura Varchar(11) Fato valor numeric Fato comissaocc numeric Fato dimtipocomisdescricao sao DBF dspr910 tcon Char(1) DBF dspr800 cosa Char(1) dimtipofatura Tipo Campo tipofatura Varchar(20) Dimensão Varchar(10) Dimensão Transformação Se tcom='n' então 'Nota Fiscal' se não 2 se tcom='s' então 'Conta Gráfica' se não 'A Remeter' Se cosa='s' então 2 'Amostra' se não 'Comercial' Fonte: Elaborado pelo autor. Para que a transformação dos dados, descrita na Tabela 5 ocorra, estes devem passar pelo processo ETL. Na área comercial este processo é executado manualmente, pois os dados referente as faturas estão armazenados em um formato que não é mais possível acessar utilizando o PHP. O processo está representado pelo diagrama de atividade encontrado na Figura 15. Como pode ser visto na Figura 15, após a conexão com os respectivos Bancos de Dados, vários grupos de informação são inseridos e atualizados, tais como: filiais, clientes, bancos e representantes. Para essas informações somente serão importados os dados inexistentes na base do BI, mediante a alguma relação com o fato importado. As únicas informações a serem importadas integralmente são as referentes as faturas e suas comissões.
74 73 Figura 15 Diagrama de atividade do processo de ETL da área comercial. Fonte: Elaborado pelo autor. 4.5 Escolha da ferramenta de BI Nesta etapa realizou-se uma pesquisa para a escolha de uma ferramenta de BI para implantação na organização, para a avaliação mais criteriosa foram selecionados apenas os softwares com versões gratuitas para teste, ficando para um segundo momento apenas as
75 74 ferramentas open source, uma vez que esta era uma restrição imposta pela organização. Neste caso, então os seguintes aplicativos foram avaliados: QlikView: Esta ferramenta permite as empresas começarem com uma única versão do QlikView Desktop e expandirem para múltiplos servidores que suportam milhares de usuários ou milhões de registros. Acessa informações em dados armazenados em Oracle, Microsoft Server ou My. Trabalha com o conceito de pesquisa associativa, que possibilita uma experiência familiar que apresenta respostas rápidas. A sua interface intuitiva sublinha relações importantes nos seus dados, mostrando não só as associações, como também dados que não estão relacionados. A visualização é a parte divertida, em apenas alguns segundos, o usuário visualiza seus dados da forma que quiser, colocando em tabelas, quadros ou gráficos de todos os tipos imagináveis, ampliando ou minimizando a visualização. Para disponibilizar a ferramenta para múltiplos usuários é necessário a aquisição do Qlikview server. A forma de licenciamento da versão server é por usuário, sendo que para 5 usuários finais e 5 desenvolvedores o licenciamento custa por volta de R$ ,00 (QLIK, 2014, texto digital). Pentaho: É um software open source criado pela Pentaho, fundada em 2004, tendo sua primeira versão anunciada em 2005 nos Estados Unidos. Abordagem moderna, simplificada e interativa da Pentaho permite que os usuários possam acessar, descobrir e misturar todos os tipos e dados. Com um espectro de análise cada vez mais avançadas, os usuários podem analisar e visualizar dados em várias dimensões, ao mesmo tempo, minimizando a dependência de TI (PENTAHO, 2014, texto digital). SpagoBI: É um software open source criado pela SpagoBI Labs, na Itália. Abrange todas as áreas de análises de BI, com temas e motores inovadores. SpagoBI oferece uma ampla gama de ferramentas analíticas, como: Gerador de relatórios, ferramenta OLAP, gráficos, ETL, entre outras (SPAGOBI, 2014, texto digital). Após a análise das ferramentas, optou-se pela utilização do Pentaho, pois este se mostrou uma ferramenta de configurações inicias mais simples, possui vasta documentação em Português, além de ser open source, o que está de acordo com a diretriz estabelecida pela organização.
76 75 O QlikView foi descartado por apenas poder ser utilizado na plataforma Windows, o que não ocorre no parque de máquinas da organização. Já o SpagoBI apesar de ser uma ferramenta web, assim como o Pentaho, logo após a instalação mostrou-se um aplicativo de configuração complexa e extensa, além de possui uma documentação escassa e apenas no idioma Inglês. 4.6 Arquitetura Para a disponibilização do ambiente de apoio a decisão para os usuários efetuarem os testes foi utilizado um computador com o Pentaho e o SGBD instalados, realizando o papel de servidor. Porém, quando o sistema entrar em produção, sendo utilizado por um grupo maior de usuários, a arquitetura de disponibilização do serviço será semelhante o encontrado na Figura 16, tendo um servido de Banco de dados e outro para a aplicação, aumentando assim o desempenho do ambiente. Figura 16 Arquitetura do ambiente. Fonte: Elaborado pelo autor.
77 Tecnologias utilizadas Para a realização das tarefas necessárias para a concretização dos objetivos propostos algumas tecnologias foram necessárias, dentre elas podemos citar: Banco de dados Postgre: Postgre é um poderoso sistema de banco de dados open source. Ele tem mais de 15 anos de desenvolvimento ativo e uma arquitetura que ganhou uma forte reputação de confiabilidade, integridade de dados e correção. Funciona em todos os principais sistemas operacionais, tais como Linux, UNIX, MAC e Windows. É totalmente compatível com o conceito de Atomicidade, Consistência, Isolamento e Durabilidade (ACID), tem suporte completo para chaves estrangeiras, junções, views, triggers e stored procedures em várias linguagens. Suporta o armazenamento de grandes objetos binários, incluindo imagens, sons ou vídeos. Possui interfaces de programação nativas para C/C++, Java, PHP, entre várias outras linguagens. O tamanho máximo de uma base de dados é ilimitada, cada tabelas pode possuir até 32 terabytes de tamanho, cada linha de uma tabela pode possuir o tamanho de 1.6 terabytes (POSTGRE, 2014, texto digital). DBlink: É um módulo que oferece suporte a conexão com outros bancos de dados Postgre de dentro de uma conexão ativa (POSTGRE, 2014, texto digital). PHP: Utilizado neste trabalho para criação dos scripts ETL. É uma linguagem de script open source de uso geral, muito utilizada para o desenvolvimento de aplicações Web. O PHP pode ser utilizado na maioria dos sistemas operacionais, incluindo Linux, várias variantes Unix (incluindo HP-UX, Solaris e OpenBSD), Windows, Mac OS X, e provavelmente outros. O PHP também é suportado pela maioria dos servidores web atuais, incluindo Apache, Microsoft Internet Information Server, e muitos outros (PHP, 2014, texto digital). Schema Workbench: O Schema Workbench é uma ferramente visual que permite a criação, modificação e teste de cubos de dados. Os cubos de dados criados nesta ferramenta podem ser exportados diretamente para o Pentaho, possibilitando a utilização imediata dos mesmos (PENTAHO, 2014, texto digital).
78 77 Report Designer: O Report Designer é uma ferramenta visual para criação de relatórios. Através desta ferramenta os relatórios podem ser exportados em diversos formatos, entre eles PDF, planilha eletrônica, HTML, entre outros. Os relatórios desenvolvidos com esta ferramenta podem ser exportados diretamente para o servidor Pentaho (PENTAHO, 2014, texto digital).
79 78 5 AVALIAÇÃO DO BI Neste capítulo será apresentado como foi realizado o processo de implantação e disponibilização do ambiente e ainda o questionário de avaliação e suas respostas. 5.1 Implantação Como plataforma de suporte para o ambiente de apoio a decisão foi utilizado um computador com o Sistema Operacional (SO) Linux, mais precisamente com Ubuntu 14.04, para a instalação do SGBD e do Java foi utilizado o gerenciador de pacotes padrão da distribuição. Para a instalação do Pentaho o primeiro passo foi realizar o download do pacote de instalação, que pode ser encontrado no site da comunidade do Pentaho 7. Este pacote é um arquivo comprimido com todos os arquivos necessários para a inicialização da ferramenta. O processo de instalação da ferramenta é simples, basta apenas executar a ferramenta de descompressão disponível no sistema operacional utilizado como servidor e escolher o diretório onde os arquivos serão descompactados, no presente trabalho o sistema foi instalado no diretório /usr/local/. 7 A comunidade do Pentaho fica hospedada no seguinte endereço:
80 79 Para iniciar o serviço do ambiente basta executar o arquivo de inicialização, no processo de instalação são criados dois arquivos, sendo um para execução no Windows, que o o arquivo start-pentaho.bat e outro para MAC, Linux e UNIX, que é o arquivo startpentaho.sh. O encerramento do serviço deve ser feito utilizando o arquivo stop-pentaho, utilizando a extensão específica para o SO do servidor. Com o servidor em execução o serviço já está disponível para a utilização, para acessar o sistema utiliza-se um software cliente web, na barra de endereços deve-se utilizar o endereço do servidor seguido do símbolo : e a porta do servidor, como padrão o Pentaho está executando na porta 8080, esta configuração pode ser alterada no arquivo server.xml, que pode ser encontrado no diretório /usr/local/biserver-ce/tomcat/conf/. A Figura 17 apresenta a tela inicial do Pentaho, esta tela é apresentada após o usuário passar pelo processo de autenticação, como padrão o usuário de administrador é admin como a senha password, com este usuário é possível a manutenção dos usuários do sistema e a configuração das conexões com o SGBD, entre outras atividades. Figura 17 Tela de principal do Pentaho. Fonte: Elaborado pelo autor. Para que o Pentaho obtenha acesso aos dados, é necessário a configuração da conexão com o SGBD, sendo que isso é feito através do Manage Data Source. A Figura 18 apresenta as telas de configuração, onde o primeiro passo está representado pelo quadro
81 80 identificado com o número 1, sendo que nesta tela está listado as conexões já configuradas. Para criação de uma nova conexão, é necessário clicar no símbolo +, então será apresentada a tela identificada pelo número 2. Para criação da nova conexão é necessário definir o nome da conexão, escolher o SGBD, definir o endereço do servidor, nome do BD, a porta de conexão, usuário e senha. Figura 18 Configuração do DB. Fonte: Elaborado pelo autor. Para acrescentar novas funcionalidades ao Pentaho é possível a instalação de complementos, como o Community Dashboard Editor (CDE), responsável pela criação e edição dos painéis e o Saiku, ferramenta para criação de análises dos cubos de dados. A instalação destas ferramentas é realizada através do Marketplace, ferramenta disponível a partir da versão 4.8 do Pentaho. A Figura 19 apresenta a tela do Marketplace que lista os complementos que estão instalados no servidor. Para realizar a instalação do software desejado basta apenas clicar no botão install, disponível ao lado de cada complemento. O Pentaho realiza o processo de download dos arquivos necessários e procederá com a instalação. Ao término do processo a reinicialização do servidor é solicitada para que a nova funcionalidade esteja disponível.
82 81 Figura 19 Marketplace. Fonte: Elaborado pelo autor. Durante o acesso ao Marketplace, é realizada uma verificação dos complementos instalados em busca de atualização para os mesmos. Ao encontrar uma atualização disponível, o sistema apresenta o botão Upgrade ao lado do nome do complemento, como mostra a Figura Criação dos cubos de dados Com a modelagem dimensional realizada e a criação das tabelas físicas no SGBD, é necessária a configuração dos cubos de dados. Este processo foi realizado com o auxílio da ferramenta Pentaho Schema Workbench (PSW). Na Figura 20, encontra-se a tela principal da ferramenta já com um schema sendo criado. Para que a criação do schema seja possível, é necessária a configuração de acesso ao SGBD. Isso pode ser feito através do ícone marcado pelo número 1. A tela de configuração apresentada pelo software é muito semelhante a encontrada no quadro 2 da Figura 18.
83 82 Figura 20 Pentaho Schema Workbench editando o schema estoque. Fonte: Elaborado pelo autor. Na Figura 20 pode-se observar a barra de ferramentas, onde os botões marcados com os números de 2 a 6 tem as seguintes funções, respectivamente: Novo cubo de dados, nova dimensão, nova hierarquia, nova métrica e novo nível de hierarquia. Para a criação de um novo cubo de dados, o primeiro passo é a inserção de um novo cubo através do ícone marcado com o número 2. Após está ação, o novo cubo é apresentado e seus atributos ficam disponíveis para edição, assim como está representado pela Figura 20. Ao deixar o ponteiro do mouse sobre o nome do atributo, a ferramenta apresenta uma breve descrição com a funcionalidade do mesmo. Após a criação do cubo e a alteração do atributo name para o nome desejado, o próximo passo é a definição da tabela fato onde os dados referentes ao cubo estão armazenados. Este procedimento é realizado através do botão direito do mouse sobre o nome do cubo selecionando então a opção Add Table. Na Figura 21 apresenta-se a tabela já incluída e seus atributos, para esta operação apenas o atributo name precisa ser alterado.
84 83 Figura 21 Tabela e seus atributos. Fonte: Elaborado pelo autor. Após a definição da tabela fato, o próximo passo é a criação das dimensões. Para realizar este procedimento, pode-se utilizar o ícone na barra de ferramentas ou o botão direito do mouse e a opção Add Dimension. Ao selecionar uma das duas opções, a ferramenta cria então, uma nova dimensão já com uma hierarquia. Neste momento, a ferramenta exigirá a criação de um nível na hierarquia, porém, isso só é possível após a definição da tabela que contém os dados da dimensão. Para realizar esta operação o usuário deve clicar com o botão direito do mouse sobre o nome da hierarquia e selecionar a opção Add Table, sendo que os atributos a ser alterado são os mesmos da tabela fato. Após a seleção da tabela que representa a dimensão, o usuário deve selecionar a dimensão para editar os seus atributos, como mostra a Figura 22, os campos que devem ser alterados são: Name: para definir o nome da dimensão; ForeignKey: indica qual é a coluna que serve como chave estrangeira para a tabela fato. A configuração correta deste campo é muito importante. Caso isso seja feito de
85 84 maneira incorreta durante a análise do cubo no Pentaho, utilizando o Saiku por exemplo, ocorre um erro de tipo de dados incompatíveis na consulta e o Pentaho não deixa claro o motivo do erro; Type: este atributo tem a função de definir se a dimensão é normal ou de tempo. Figura 22 Atributos da dimensão Fonte: Elaborado pelo autor. Outra configuração importante a ser realizada é a alteração do atributo primarykey na hierarquia, este parâmetro é responsável por informar a hierarquia qual é a coluna da tabela no banco de dados que é a chave primária. Com a hierarquia configurada, o próximo passo é adicionar os níveis. Isso pode ser feito utilizando a barra de ferramentas ou o botão direito do mouse dobre a hierarquia selecionando a opção Add Level. A Figura 23 apresenta a tela da ferramenta com os atributos do nível disponíveis para edição.
86 85 Figura 23 Atributos do nível hierárquico. Fonte: Elaborado pelo Autor. Para cada nível hierárquico adicionado, os seguintes atributos devem ser alterados: Name: Indica o nome do nível. O nome informado neste parâmetro é o que vai aparecer na ferramenta de análise; Column: Indica qual coluna da tabela na BD vai ser vinculada a este nível; Type: Indica o tipo de dados que está armazenado no BD; LevelType: Indica o tipo de nível que está sendo criado. Neste ponto o atributo type da dimensão faz diferença. Caso este atributo tenha sido configurado como StandardDimension, a única opção válida é Regular, caso contrário, em que o type for TimeDimension, deve-se escolher o paramento que melhor se enquadra ao conteúdo da coluna da tabela. HideMemberif: Indicando em que condições o nível da hierarquia deve ser oculto.
87 86 O último tipo de objeto a ser incluído do cubo é a métrica, isso pode se feito através da barra de ferramentas ou pelo botão direito do mouse sobre o cubo selecionando a opção Add Measure. Na Figura 24 encontra-se representado a métrica com seus atributos. Figura 24 Atributos da métrica. Fonte: Elaborado pelo autor. Os atributos a serem alterados nesta etapa são: Name: Representa o nome da métrica; Aggregator: indica qual a função de agrupamento que será executado sobre a métrica durante o processo de análise. Dentre as funções podemos citar: soma, média, máximo, mínimo, entre outras; Column: Indica qual é o nome da coluna da tabela fato associada a métrica. DataType: Indica o tipo de dado que está armazenado no Banco de Dados.
88 87 Em todos os objetos configurados existe o atributo visible que indica se o objeto vai ser apresentado na ferramenta de análise. A figura 25 apresenta a ferramenta de análise Saiku com o cubo de compras selecionado para análise. Figura 25 Saiku com o cubo de compras. Fonte: Elaborado pelo autor. Para que o cubo esteja disponível para análises, relatórios e painéis, este deve ser publicado no Pentaho. Para realizar esta operação, após salvar todas as alterações, o usuário deve clicar em file e selecionar a opção Publish. Ao realizar este procedimento será apresentada a tela representada pela Figura 26. Onde o usuário deve informar o endereço do servidor, usuário e senha, pra realizar a publicação. Outro passo muito importante a ser realizado é a limpeza dos caches do servidor, após cada publicação, para que o servidor utilize a versão mais recente do arquivo publicado. Este processo é realizado pela tela principal do Pentaho, acessando o menu Ferramentas e após a opção Atualizar, clicando em seguida na opção limpar cache do mondriam.
89 88 Figura 26 Tela de publicação. Fonte: Elaborado pelo autor Criação dos dashboards Com os cubos configurados e publicados, o Pentaho já está pronto para ser utilizado para criação de análises, porém um recurso da ferramenta ainda pode ser explorado, que é a utilização de dashboards ou painéis. Estes são responsáveis pelo monitoramento das informações registradas no Data Warehouse através de inúmeros recursos, como gráficos, tabelas, mapas, entre outros. Para a criação dos painéis disponibilizados no presente trabalho foi utilizado a ferramenta CDE, esta é uma ferramenta livre desenvolvida pela webdetails8 e está disponível no Marketplace. Após a instalação da ferramenta no Pentaho e a reinicialização do servidor, a opção de criar painéis já estará disponível no menu Create New, na tela principal do ambiente. A opção a ser escolhida é CDE Dashboard, ao realizar esta operação a tela representada pela Figura 27 será apresentada, porém sem nenhuma configuração de Layout. 8 Mais detalhes e demostrações estão disponíveis no endereço
90 89 Figura 27 Tela principal do CDE. Fonte: Elaborado pelo autor. Na Figura 27, na parte superior esquerda pode-se ver os botões responsáveis por salvar e configurar o painel. No lado direito, marcado pelo quadro 1, encontram-se os botões para alternância entre o layout do painel, configuração dos gráficos e outros objetos do painel, a criação das consultas no banco de dados por último temos o botão responsável pela prévisualização do painel, que pode ser realizada a qualquer momento do desenvolvimento. A Figura 27 apresenta o layout desenvolvido para os painéis criados para o presente trabalho. A ferramenta permite que o layout possa ser salvo como modelo, reduzindo assim o trabalho para criação de novos painéis. A tela de criação do layout é dividida em duas partes, onde a da esquerda apresenta os objetos criados, e a da direita os atributos do objeto selecionado. Para inserir novos objetos no layout utiliza-se os botões marcados pelo quadro 2, na Figura 27. Os botões têm diversas funções, como adicionar nova linha, nova coluna, entre outras. A cada tipo de objeto selecionado, a configuração e quantidade de botões é diferente.
91 90 No quadro da direita pode-se alterar as propriedades dos objetos inseridos no layout, entre as disponíveis, as seguintes têm uma maior relevância. Name: Representa o nome do objeto. Esta propriedade é utilizada para referenciar o local onde um gráfico será apresentado; Span size: Representa a largura do objeto; Height: Representa a altura do objeto, caso não seja informado um valor para esta propriedade, o sistema adequará a altura do objeto ao seu conteúdo; BackgroundColor: Representa a cor de fundo do objeto. Com o layout definido, o próximo passo é a criação das consultas no BD. A tela de criação das conexões é dividida em três partes, onde temos: os componentes disponíveis para utilização, os componentes adicionados ao painel e por último as propriedades do objeto selecionado. A Figura 28 apresenta a tela de criação das consultas. Figura 28 Tela de criação das consultas. Fonte: Elaborado pelo autor. Os componentes disponíveis estão organizados em grupos. Para o desenvolvimento do presente trabalho foi utilizado apenas o grupo Queries, onde é possível criar consultas utilizando apenas comandos. Ao selecionar o componente desejado, este é inserido na parte central da página. A partir desse momento suas propriedades serão disponibilizadas para edição. As propriedades alteradas para a criação das consultas utilizadas neste trabalho foram:
92 91 Name: Representa o nome da consulta, através deste que é feito a ligação com o componente que vai ser exibido no painel; JNDI: Representa o nome da conexão com o Banco de Dados; Query: Representa o código responsável pela obtenção dos dados; Parameters: Representa os parâmetros utilizados como filtro de dados para a consulta. Com as consultas criadas, o próximo passo é a criação dos gráficos e parâmetros de filtro do painel, quando estes existirem. A tela de criação e configuração é semelhante a vista na Figura 28, como pode ser verificado na Figura 29. A separação em três também existe e mantêm a mesma configuração da tela de criação de consultas. Figura 29 Tela de configuração dos gráficos. Fonte: Elaborado pelo autor Os componentes utilizados nos painéis desenvolvidos para o presente trabalho pertencem aos seguintes grupos: Generic: Componente simple parameter. Pode ser comparado com uma variável, utilizada para registrar o conteúdo selecionado em um filtro e envia para o gráfico; Selects: Componente Select Component. Cria um combobox no painel, utilizado para filtrar as informações que serão apresentadas. Aqui, deve se alterar o nome, e indicar
93 92 qual o componente simple parameter que vai receber o seu conteúdo e a consulta responsável pelos dados apresentados no componente; Charts: Os componentes utilizados foram: bar chart, pie chart e line chart. Para todos estes componentes, as seguintes propriedades foram alteradas: Name (representa o nome do objeto), Title (representa o título do gráfico, onde este título será apresentado no painel), Listeners (representa quais são os parâmetros que o gráfico vai ficar ouvindo, ou seja, assim que ocorrer uma alteração em seu conteúdo o gráfico reexecuta a consulta no Banco de Dados e altera o seu conteúdo), Parameters (representa quais componentes do tipo simple parameter serão repassados para a consunta), DataSource (representa o nome da consulta responsável pelos dados apresentados no gráfico) e HtmlObject (representa o nome do objeto do layout onde o componente será exibido) Dashboards criados Após a definição dos cubos, foram elaborados alguns painéis, sendo que estes são responsáveis pela visualização dos dados contidos no Data Warehouse de uma maneira sumarizada, através de uma representação gráfica, com a utilização de elementos visuais, como mapas, gráficos, relógios de desempenho, entre outros. Para a realização deste trabalho foram desenvolvidos dois painéis, um para cada área de negócio modelada. Na Figura 30, encontra-se a primeira parte do painel responsável pelo monitoramento das informações da área de compras. Este painel possui dois gráficos de linha que apresentam as informações relativas as compras e consumos de materiais na organização. Estes gráficos sofrem influência apenas do ano selecionado, já que apresentam as informações totalizadas mensalmente.
94 93 Figura 30 Primeira parte do painel da área de compras. Fonte: Elaborado pelo autor. Este painel ainda possui mais seis gráficos onde estes representam as informações de ajustes e requisições manuais, como pode ser observado na Figura 31. Os gráficos estão organizados da seguinte maneira: um gráfico de barras e um em formato de pizza para ajustes apresentado os valores em quantidade, um gráfico de barras e um de pizza para ajustes apresentando as informações em valor, e por fim, dois gráficos de barras para as informações de requisições manuais, sendo um para quantidade e outro para valores. Esses últimos gráficos sofrem influência de todos os filtros do painel.
95 94 Figura 31 Segunda parte de painel da área de compras Fonte: Elaborado pelo autor. Na Figura 32, encontra-se o painel responsável pelo monitoramento das informações da área comercial. Este painel possui um gráfico de linha que apresenta as informações relativas as faturas de exportação e a comissão em dólares totalizado por dia. Este painel ainda possui mais quatro gráficos que representam as informações de maiores clientes e representantes, organizados da seguinte maneira: um gráfico de barras apresentado os valores para os 10 maiores applicants, um gráfico de barras apresentando as informações em valores para os 10 maiores notify, e, por fim, dois gráficos de barras para as informações dos 10 maiores representantes, sendo um apresentando os maiores valores de comissão e outro apresentando a quantidade de faturas realizadas. Para esse painel os filtros alteram as informações em todos os gráficos.