Parte 1 Começando Capítulo 1 Vamos Começar Bem do Princípio Neste Capítulo Compartilhando Inteligência de Negócios Arquitetura de Construção de Relatórios (Report Authoring Architecture) Arquitetura de Servidor de Relatório (Report-Serving Architecture) Conhecendo o Produto 4 M i c r o s o f t S Q L S e r v e r 2 0 0 8 R e p o r t i n g S e r v i c e s O SQL Server 2000 Reporting Services foi a introdução da Microsoft na arena dos relatórios baseados na web. Essa primeira versão do Reporting Services permitia que você compartilhasse facilmente informação de negócios – o que é comumente chamado hoje em dia de “inteligência de negócios” – com a gerência, colegas de trabalho, parceiros de negócios e clientes do mundo todo. Num local de trabalho interconectado, faz sentido que sua solução de relatório ofereça comunicação que abranja toda a empresa, todo o país e até mesmo o mundo todo. O SQL Server 2005 Reporting Services se fundamentou no sucesso do original. Enquanto a metade dos aspectos da versão 2005 do SQL Server representava uma plataforma completamente nova, o Reporting Services simplesmente acrescentava à sólida base proporcionada pela sua versão anterior para tornar um produto ainda melhor. A versão 2005 fornecia um ambiente adicional report-authoring, melhorava recursos de desenvolvimento de relatório, e incrementava capacidades para distribuir relatórios. Agora, a versão 2008 do SQL Server traz importantes mudanças no Reporting Services. O processamento dos relatórios e a ferramenta de rendering foram completamente redesenhados. Isto permitiu que o Reporting Services se tornasse mais robusto, especialmente ao renderizar relatórios extensos. Essa revisão conduziu a várias outras mudanças. A estrutura de definição do relatório agora inclui algo chamado tablix, um item de relatório cujo nome e definição representam a combinação dos itens de relatório tabela (table) e matriz (matrix). O tablix permite maior flexibilidade no layout do relatório enquanto na verdade simplifica o trabalho interno da ferramenta de renderização do relatório. (Foi dito que este novo objeto poderia facilmente ser chamado de mable. Eu acredito que a Microsoft tenha tomado a melhor decisão com relação ao seu nome.) O Reporting Services ganhou o codinome de Rosetta durante seu desenvolvimento original na Microsoft. Esse nome deriva da Pedra de Rosetta, um bloco de granito encontrado em 1799 e que contém uma inscrição em hieróglifos egípcios e em grego. Essa pedra foi a peça-chave para revelar o mistério dos hieróglifos egípcios para o mundo moderno. Assim como a Pedra de Rosetta trouxe a informação desde 1400 anos de história, o Rosetta, ou o Reporting Services foi desenhado para trazer informação chave através de longas distâncias para revelar o mistério do sucesso para o seu negócio. O projeto Rosetta foi originalmente concebido como um recurso do SQL Server 2005. Entretanto, quando a Microsoft falou sobre os recursos do Rosetta a prospectivos clientes e demonstrou as primeiras versões alpha, a reação foi veemente: “Nós precisamos desse produto e precisamos agora!” Por causa dessa reação, a Microsoft decidiu que o Rosetta não esperaria por 2005, mas, ao invés disso, tornaria-se um produto em si para funcionar com o SQL Server 2000. Mas quais são os recursos do Reporting Services que entusiasmaram todo mundo? O Reporting Services proporciona um ambiente para criar vários tipos diferentes de relatórios a partir de várias fontes de dados diferentes. Os relatórios são pré-visualizados e refinados usando-se a ferramenta de authoring. Uma vez finalizados, os relatórios são implementados num servidor de relatório, o que disponibiliza os relatórios via Internet num ambiente estruturado e seguro. Por último, mas não menos importante, o gerenciamento de relatórios e a porção de distribuição do Reporting Services é gratuito quando instalado num servidor que já roda o SQL Server. Por que esse conjunto de recursos gera tanto entusiasmo? Quando você os junta, o resultado é um produto que facilita a criação, gerenciamento e oportuno uso da inteligência de negócios. Capítulo 1: Vamos Começar B em do Pr incípio 5 Compartilhando a Inteligência de Negócios Se você está lendo este livro, você provavelmente guarda algum tipo de informação importante para sua organização. Você pode ter informação sobre vendas, finanças, produção, entrega – ou qualquer outra de uma centena de áreas. Toda essa informação torna a inteligência de negócios necessária para que as atuais entidades corporativas, acadêmicas e governamentais funcionem harmonicamente. A Necessidade de Compartilhar Além de conservar essa informação, você precisa compartilhá-la com outros. Essa necessidade de compartilhar pode ter vindo de uma importante lição que você aprendeu no jardim de infância (“O mundo seria um lugar muito mais feliz se todos nós aprendêssemos a dividir”) ou, mais provavelmente, essa necessidade de compartilhar sua informação foi sugerida a você por um gerente ou executivo de algum lugar acima na cadeia alimentar. Veja se algum destas situações soa familiar. O Gerente de Produção O sistema de order-entry da sua empresa atualiza automaticamente o banco de dados do inventário de tantas em tantas horas. Na linha de negócios da sua empresa, alguns pedidos podem requerer uma grande quantidade de um determinado produto. Por isso, é importante que o gerente de produção saiba a respeito dessas mudanças nas quantidades do inventário de maneira ágil, para que ele possa ajustar a produção de acordo. O gerente de produção lhe pediu um relatório atualizado sobre o inventário, criado imediatamente depois de cada atualização do banco de dados do inventário durante o horário comercial. Ele gostaria que esse relatório chegasse ao seu PC tão rapidamente quanto possível, para que ele possa fazer modificações na programação da produção dentro do prazo de uma hora após as atualizações. Ele também gostaria de poder imprimir esse relatório para poder acrescentar suas próprias notas enquanto faz sua nova agenda de produção. Mais um fato para se ter em mente: O sistema de inventário da sua empresa está em Cleveland, mas as instalações de produção estão em Portland! O Vice Presidente de Vendas Você é responsável por manter informação sobre a quantidade de crédito que a sua empresa irá estender a cada um de seus clientes. Essa informação é atualizada diariamente no banco de dados da empresa. Um relatório contendo informação sobre o crédito de todos os clientes é impresso semanalmente na sede da empresa e enviada para casa representante de vendas. O vice-presidente de vendas pediu para que a informação sobre crédito fique disponível para o staff de vendas de forma mais ágil. Ele pediu para que esse relatório seja acessível pela Internet a partir de qualquer lugar do país. Os representantes de vendas irão imprimir o relatório quando tiverem acesso à Internet, e então o levarão consigo para as horas em que não puderem estar online. O vice-presidente também pediu para que essa versão online do relatório seja a mais atualizada possível. 6 M i c r o s o f t S Q L S e r v e r 2 0 0 8 R e p o r t i n g S e r v i c e s A Diretora Executiva A diretora executiva (Chief Executive Officer – CEO) da sua empresa tem o estilo “mão na massa”. Ela gosta de participar de todas as facetas do processo de tomada de decisão e, portanto, precisa estar muito bem informada sobre todos os aspectos da empresa. Isso inclui o balanço corporativo, o inventário, a produção e o preço das ações da empresa. A CEO espera que todas essas informações estejam disponíveis no seu desktop quando ela chegar ao trabalho todas as manhãs às 07h00min. As informações devem estar num formato próprio para imprimir e compartilhar com os vice-presidentes da empresa na sua reunião diária às 09h00min da manhã. Enquanto você busca a solução para este último pedido, lembre-se de que não há orçamento para este projeto – e, é claro, seu emprego está em jogo. Possíveis Soluções Estas situações, e milhares de outras semelhantes, confrontam o mercado hoje em dia. No nosso mundo de conectividade massiva, requisições desse tipo não são inviáveis. Mesmo que seja o caso, isto não significa que essas requisições sejam fáceis de satisfazer. Uma Solução em HTML O primeiro candidato a ser explorado quando você procura mover informação através da Internet é, claro, o Hypertext Markup Language (HTML). Você poderia usar uma das numerosas ferramentas para criar páginas HTML data-driven. Isto incluiria Active Server Pages da Microsoft, ColdFusion da Macromedia, uma série de ambientes Java, PHP: Hypertext Preprocessor (PHP) – a lista é interminável. Cada ambiente desses é bom para criar conteúdo dinâmico para a web. Entretanto, todos eles demandam tempo e um nível de conhecimento em programação. Com os deadlines assomando, você pode não ter tempo de criar aplicações para a web personalizadas para resolver cada um desses problemas. Se você está acostumado a manipular dados com o Crystal Reports ou Access reporting, provavelmente não estará pronto para pular para o desenvolvimento de aplicações maduras, e também poderá não desejar fazê-lo em qualquer momento no futuro. Mesmo que você tenha criado uma aplicação para cada um destes cenários, um importante requisito é este: A informação deve poder ser impressa. Telas HTML podem parecer lindas na janela de um browser, mas também podem causar problemas quando impressas. O conteúdo pode ser grande demais para caber em uma página e não há controle das quebras de página. Na verdade, a quebra de página pode acontecer exatamente no meio de uma linha de texto, com a metade superior dos caracteres numa página e a metade inferior na página seguinte! Esses tipos de problemas de formatação podem tornar o output difícil para que representantes de vendas e gerentes de produção leiam. Pedir para que a CEO leve esse tipo de relatório a uma reunião executiva pode fazer com que você seja despedido. Vamos procurar outra opção! Uma Solução em PDF Já que a capacidade de controlar o output impresso é importante, o Adobe PDF deve ser considerado. Arquivos PDF aparentam bem tanto na tela quanto impressos. Você pode Capítulo 1: Vamos Começar B em do Pr incípio 7 controlar onde vão ocorrer as quebras de página e se certificar de que tudo vai ter boa aparência. Entretanto, vários problemas com arquivos PDF precisam ser superados. Antes de tudo, você precisa de algum utilitário para produzir um output em formato PDF. Este pode ser a versão completa do Adobe Acrobat ou algum outro utilitário. Uma vez que isso tenha sido feito, deve ser criado um documento que contenha a informação do banco de dados desejada. Depois de criado esse documento, ele é convertido em um documento PDF usando-se uma função de exportação ou um driver de impressora especial. Uma vez que o documento PDF for criado, ele pode ser copiado para um website para que seja acessado através da Internet. Entretanto, tão logo o documento PDF seja criado, ele se torna uma entidade estática. Ele não consulta novamente o banco de dados a cada vez que é solicitado e acessado pelo website. Para se manter atualizado, o documento PDF deve ser recriado cada vez que a fonte de dados for modificada. Além disso, você deve retornar ao seu ambiente de programação para controlar o acesso ao documento PDF que está no website. Talvez haja um modo melhor. Um Ambiente de Relatório Terceirizado (Third Party) Ambientes de relatório de outras empresas certamente superam as limitações das nossas duas primeiras opções. Estes produtos alternativos permitem que relatórios sejam construídos sem que demandem grande quantidade de programação. Eles também podem gerar output dinamicamente num formato como o Adobe PDF, que se comportará bem tanto na tela, quanto impresso. O problema com o ambiente de relatório terceirizado (third party) é o custo. Alguns programas podem custar milhares ou algumas dezenas de milhares de dólares. Isso pode ser o suficiente para quebrar o orçamento – se é que há um orçamento – para projetos de relatório como os discutidos acima. Microsoft Reporting Services Agora você pode começar a ver porquê as empresas ficam tão entusiasmadas com o Reporting Services. Ele fornece uma solução elegante para todas as demandas dos três usuários – o gerente de produção, o vice-presidente de vendas e a diretora executiva. O Reporting Services não tem problemas, desvantagens (drawbacks)inerentes às possíveis soluções consideradas anteriormente. Nenhuma Programação Necessária O Reporting Services fornece uma abordagem simples, do tipo clique-e-arraste (dragand-drop), para criar relatórios a partir das informações do banco de dados. Você pode usar três diferentes ferramentas para construir relatórios. O Ad Hoc Report Buider permite que você crie relatórios básicos, mesmo que não saiba muito sobre banco de dados e linguagens de consulta (query). O Standalone Report Builder e o Report Designer permitem que você destrave verdadeiramente a potência do Reporting Services para conduzir informações complexas. Você não precisa ser um programador para criar relatórios com o Reporting Services. Todavia, se você está confortável com construções de programação, os Capítulos 7 e 8 incluem algumas expressões simples do Visual Basic que podem ser usadas para apimentar a apresentação do seu relatório. Note, entretanto, que essas expressões não são necessárias 8 M i c r o s o f t S Q L S e r v e r 2 0 0 8 R e p o r t i n g S e r v i c e s para se criarem relatórios úteis. Elas são também simples o suficiente para que aqueles que não estão familiarizados com o Visual Basic possam usá-los com maestria. Um Servidor com Visualização (View) Com o Reporting Services você pode visualizar os relatórios no seu browser. O Reporting Services oferece apresentação de alta qualidade para cada relatório usando HTML dinâmico. Os relatórios são apresentados em várias páginas com controles “VCR” para navegar entre as páginas. O Reporting Services usa HTML dinâmico então não há necessidade de se baixar qualquer programa adicional no seu PC. Não há qualquer controle ActiveX para ser instalado, nenhum applet Java para fazer download. Qualquer browser que suporte HTML 4.0 pode visualizar os relatórios. Interage Bem com Impressoras Além de apresentar relatórios no seu browser usando HTML dinâmico, o Reporting Services pode renderizar um relatório em vários outros formatos. Isso inclui um documento em Adobe PDF, uma imagem Tagged Image File Format (TIFF), uma tabela do Excel, e até mesmo um documento do Word. Todos estes formatos são perfeitamente visualizados na tela, ou no papel quando são impressos. NOTA Quando o Reporting Service gera um relatório, ele busca os dados mais recentes do banco de dados, formata-os da maneira que o autor do relatório especificou, e fornece o relatório no formato selecionado (HTML, PDF, TIFF, e assim por diante). Entrega Especial O Reporting Services oferece vários meios diferentes de fornecer relatórios para usuários finais. O website do Report Manager permite que os usuários acessem os relatórios através da Internet. E também inclui recursos de segurança, o que assegura que os usuários acessem apenas os relatórios que devem acessar. Os usuários também podem assinar relatórios que gostariam de receber regularmente. O Reporting Services manda uma cópia do relatório anexado a uma mensagem de correio para cada assinante, com a freqüência que for agendada. Como alternativa, um administrador do Reporting Services pode mandar uma cópia do relatório como anexo de e-mail para vários destinatários de uma lista de contatos (mailing list). Se isso não é o suficiente, os relatórios podem ser embutidos em aplicações .NET. O Preço é Justo Para qualquer um que tenha uma cópia licenciada do SQL Server 2008, o preço do Reporting Server é justo. Gratuito! Desde que o servidor de relatório seja instalado no mesmo computador que a ferramenta de banco de dados do SQL Server, sua licença do SQL Server 2008 cobrirá tudo. Com esta arquitetura única de servidor, compartilhar seus relatórios com outros usuários do Reporting Service não custará nem um centavo a mais. Capítulo 1: Vamos Começar B em do Pr incípio 9 O Reporting Services para o Salvamento Vamos dar mais uma olhada nos três cenários que consideramos acima – o gerente de produção, o vice-presidente de vendas e a diretora executiva. Como você pode usar os recursos do Reporting Services para satisfazer as necessidades de cada um? O gerente de produção quer um relatório que mostre o inventário atual. Certamente que não é problema consultar os dados do inventário no banco de dados e colocá-los em um relatório. A seguir ele deseja uma nova cópia do relatório a cada vez que o inventário for atualizado durante o horário comercial. O gerente de produção pode assinar seu relatório e, como parte da assinatura, pedir que um novo relatório seja fornecido às 8h15min, 12h15min e 16h15min. Finalmente, o sistema de inventário fica em Cleveland, mas o gerente de produção está em Portland. Como a assinatura de um relatório pode ser enviada por e-mail, o Reporting Services pode ser configurado em Cleveland, produzir um relatório a partir da fonte de dados local, e então enviar um relatório por e-mail para Portland. A solução para o vice-presidente de vendas é ainda mais direta. Ele quer um relatório com informações sobre crédito para cada cliente. Nenhum problema. A seguir, ele quer que o relatório fique disponível para o seu staff de vendas, acessível via Internet. Para tal, você pode publicar o relatório no website do Report Manager. Você pode até configurar os dispositivos de segurança para que apenas os representantes de vendas com user names e senhas apropriados possam acessar o relatório. Além disso, o vice-presidente de vendas quer que o relatório tenha bom aspecto quando impresso. Isso se consegue sem trabalho adicional do lado do desenvolvimento. Quando os representantes de vendas buscarem o relatório do website, este será exibido em HTML. Isso tem bom aspecto no browser, mas pode não ter no papel. Para se ter um relatório que pareça bem sempre que impresso, os representantes de vendas simplesmente precisam exportar o relatório para um formato PDF ou TIFF e então exibir e imprimir o arquivo exportado. Agora eles estão prontos para sair batendo em portas! Para a diretora executiva CEO, você pode construir um relatório, ou talvez uma série de relatórios, que reflitam o estado de sua empresa. Isto servirá para mantê-la informada acerca de todas as facetas do seu negócio. Para que esses relatórios estejam disponíveis em sua mesa às 7h00min, você pode configurar set up uma assinatura que irá rodar os relatórios e enviá-los por e-mail para ela todas as manhãs às 6h15min. Finalmente, porque ela quer imprimir esse relatório e partilhá-lo com os vicepresidentes corporativos, você pode se assegurar de que o serviço de assinatura entregue o relatório em formato PDF sou TIFF. A melhor parte é que dado que você já tem uma licença do SQL Server 2008, a solução Reporting Services não custa nada à empresa. Você ganhou vários pontos de bônus e ela o fará chefe da informação antes do final do ano! Arquitetura de Construção de Relatório (Report Authoring Architecture) Como mencionado anteriormente, os relatórios do Reporting Services são criados usando-se uma das três ferramentas: o Ad Hoc Report Builder, o Standalone Report 1 0 M i c r o s o f t S Q L S e r v e r 2 0 0 8 R e p o r t i n g S e r v i c e s Builder ou o Report Designer. O Ad Hoc Report Builder é direcionado para aqueles usuários avançados e analistas que querem fazer seus relatórios ad hoc por conta própria sem precisar aprender as entradas e saídas da estrutura do banco de dados e da linguagem query. O Ad Hoc Report Builder apresenta aos autores de relatórios um modelo simplificado dos seus bancos de dados, portanto esses autores não precisam saber detalhes sobre consultas a banco de dados para criar relatórios. Uma vez que o Ad Hoc Report Builder tenha criado um relatório, esse relatório pode ser implementado no servidor de relatório e funcionará exatamente como um relatório criado com o Standalone Report Builder ou o Report Designer. O Standalone Report Builder é novo no SQL Server 2008. Esse ambiente de construção de relatório suporta a construção de relatórios full-featured do Reporting Services. Todavia, o Standalone Report Builder não possui todas as ferramentas de programa e de organização de projeto encontradas no Report Designer. Como nós queremos cobrir inteiramente a riqueza de capacidades encontradas no Reporting Services, este livro está focado na construção de relatórios usando-se o Report Designer, e não o Ad Hoc Report Builder ou o Standalone Report Builder. Vamos dar uma olhada no Standalone Report Builder mais adiante neste livro quando discutirmos a construção de relatórios. Se você está interessado em aprender mais sobre o Ad Hoc Report Builder, por favor, refira-se ao Apêndice C. O Report Designer oferece maiores capacidades para criar relatórios interessantes e altamente funcionais, usados para transmitir a inteligência de negócios aos usuários de relatórios. Este livro pode ajudá-lo a aproveitar mais este ambiente de construção de relatórios extremamente rico. O Report Designer contém tudo o que é necessário para criar uma ampla variedade de relatórios para o Reporting Services. Tudo o que você precisa para selecionar a informação das fontes de dados, criar um layout de relatório e testar a sua criatividade está ao alcance das suas mãos. E o melhor de tudo é que o Report Builder é encontrado tanto no Business Intelligence Development Studio quanto no Visual Studio. Tanto o Business Intelligence Development Studio quanto o Visual Studio são do tipo de software de construção de relatório chamado de ambiente de desenvolvimento integrado (integrated development enviroment) (IDE). (Na verdade o Business Intelligence Development Studio é uma versão especial do Visual Studio funcionando sob um nome diferente.) Os IDEs surgiram quando as pessoas que criavam linguagens de programação pensaram que seria mais conveniente que o editor, compilador e o debugger estivessem no mesmo pacote. Antes do advento dos ambientes de desenvolvimento integrado, criar e fazer debug em um software poderia ser um longo e tedioso processo. Com um IDE, entretanto, um programador pode ser muito mais eficiente quando estiver escrevendo e testando uma aplicação. Mesmo que você esteja criando relatórios ao invés de construindo um software, o Report Designer oferece um ambiente de trabalho simpático. Você não vai fazer edição, compilação ou debug, mas você vai selecionar dados, vai fazer o layout do relatório e vai ter a pré-visualização do resultado final. Tudo isso é feito rápida e facilmente com o Report Designer. O Projeto do Tipo Inteligência de Negócios O Business Intelligence Development Studio e o Visual Studio podem ser usados para várias tarefas de inteligência de negócios e de desenvolvimento de software. O Capítulo 1: Vamos Começar B em do Pr incípio 11 Business Intelligence Development Studio é usado para criar pacotes do Integration Services para extração, transformação e carga de dados (ETL).Também é usado para criar estruturas multidimensionais do Analysis Services. O Visual Studio é usado para criar aplicações do Windows, aplicações para a web e serviços web. Para facilitar essa variedade de capacidades, estes IDEs suportam vários diferentes tipos de projetos. Esses tipos de projetos organizam a multidão de soluções que podem ser criadas no IDE para grupos relacionados. Relatórios do Reporting Services são criados usando-se o projeto do tipo Inteligência de Negócios. Modelos de Projetos Quando você escolhe criar um novo projeto no IDE, vê-se uma caixa de diálogo New Project como mostra a figura 1-1. A área Project Types na tela mostra o tipo de projeto no qual você estará interessado: Business Intelligence Projects. Business Intelligence Projects inclui modelos para vários tipos de projetos. Você verá três modelos de projeto neste livro: Report Server Project Wizard, Report Server Project e Report Model Project. Os dois primeiros modelos criarão, basicamente, um projeto de relatório. O modelo do Report Server Project Wizard usa o Report Wizard para guiá-lo através do processo de criação do primeiro relatório no seu novo projeto de relatório. O modelo do Report Server Project simplesmente cria um projeto de relatório vazio e deixa você à vontade. O Report Model Project cria um modelo de dados para ser usado com a ferramenta de authoring do Ad Hoc Report Builder. Estrutura de Relatório Um projeto de relatório pode conter vários relatórios. Cada relatório contém dois conjuntos de instruções que determinam o que o relatório irá conter. O primeiro é a definição dos dados (data definition). O data def inition controla Figure 1-1 A caixa de diálogo Novo Projeto. 1 2 M i c r o s o f t S Q L S e r v e r 2 0 0 8 R e p o r t i n g S e r v i c e s de onde os dados para o relatório virão e que informações serão selecionadas desses dados. O segundo conjunto de instruções é o layout do relatório (report layout). O layout do relatório controla como a informação será apresentada na tela ou no papel. Ambos os conjuntos de instruções são armazenados usando a Report Definition Language. A figura 1-2 mostra essa estrutura de relatório com um pouco mais de detalhe. Definição de Dados (Data Definition) O data definition contém duas partes: a fonte de dados (data source) e o dataset. O data source é o servidor de banco de dados ou arquivo de dados que fornece as informações para o seu relatório. É claro, a fonte de dados propriamente dita não está incluída no relatório. O que está incluído é o conjunto de instruções que o relatório precisa para obter acesso a fonte de dados. Essas instruções incluem o seguinte: O tipo de fonte que você vai usar para seus dados (por exemplo, o Microsoft SQL Server 2008, Oracle, DB2, Informix, ou Microsoft Acess). O Reporting Services usará essa informação para determinar como se comunicar com a fonte de dados. O nome do servidor de banco de dados ou o caminho para o arquivo de dados. O nome do banco de dados. O login para conectar com esta fonte de dados, se for pedido um login. Quando o relatório está sendo executado, ele usa as informações da fonte de dados contidas no relatório para ganhar acesso à fonte de dados. Ele extrai informações da fonte de dados num formato novo que pode ser usado pelo relatório. Esse novo formato é chamado dataset. O conteúdo do dataset é definido usando-se uma ferramenta chamada Query Designer. O Query Designer ajuda você a criar uma consulta a um banco de dados (database query). A consulta (query) de banco de dados pode ser em TransactData Source Report Project Report Builder My Report Data Region RDL File R o w s Columns Dataset Page 1 Figure 1-2 A Estrutura de um Relatório. Structured Query Language (T-SQL) para consultar dados relacionais, Multidimensional Expression Language (MDX) para consultar dados multidimensionais, ou Data Mining Expression Language (DMX) para consultar dados pelo processo de mineração de dados. A consulta (query) fornece instruções para a fonte de dados, dizendo para ela que dados você quer selecionar para o seu relatório. A query é armazenada no seu relatório como parte da definição dos dados. Capítulo 1: Vamos Começar B em do Pr incípio 13 Os dados selecionados pela query para o dataset consistem de linhas (rows) e colunas (columns). As linhas correspondem aos registros (records) que a query seleciona da fonte de dados. As colunas correspondem aos campos (fields) que a query seleciona da fonte de dados. (As queries MDX são unidas numa única tabela de linhas e colunas.) As informações nos campos para serem selecionadas para o dataset são armazenadas no relatório como parte da definição de dados. Apenas a informação sobre como serão chamados os campos e o tipo de dados que eles irão possuir é armazenada na definição do relatório. Os dados propriamente ditos não são armazenados na definição do relatório, ao invés disso, são selecionados extraídos da fonte de dados cada vez que o relatório é rodado. O Layout do Relatório Os dados que o relatório extraiu para um dataset não têm muito uso, a menos que você tenha alguma forma de apresentá-los ao usuário. Você precisa especificar quê campos vão para quê locais na tela ou no papel. Você também precisa acrescentar coisas como títulos, cabeçalhos e números de páginas. Tudo isso forma o layout do relatório. Na maioria dos casos, o layout do seu relatório incluirá uma área especial que interage com o dataset. Essa área especial é chamada de região de dados (data region). Uma região de dados mostra todas as linhas no dataset repetindo uma seção do relatório para cada linha. Linguagem de Definição de Relatório (Report Definition Language) As informações na definição de dados e no layout do relatório são armazenadas usando-se a Report Definition Language (RDL). A RDL é um padrão Extensive Markup Language (XML) desenhado pela Microsoft especialmente para armazenar definições de relatório. Isso inclui as instruções da fonte de dados, as informações da query que define o dataset, e o layout do relatório. Quando você cria um relatório no Report Designer, ele é salvo num arquivo de extensão .rdl. Se você nunca trabalhou com XML, ou nem mesmo tem certeza se sabe o que é isso, não se preocupe. O Report Designer e o Reporting Services vão cuidar de toda RDL para você. Para aqueles de vocês que querem aprender um pouco mais sobre RDL, vamos dar uma espiada sob as aparências no Capítulo 7. Report Designer A figura 1-3 mostra o Report Designer. Essa é a ferramenta que você vai usar para criar e editar relatórios através deste livro. Vamos examinar alguns recursos do Report Designer agora e discuti-los mais detalhadamente no Capítulo 8. 1 4 M i c r o s o f t S Q L S e r v e r 2 0 0 8 R e p o r t i n g S e r v i c e s Figure 1-3 A caixa de diálogo Novo Projeto. Superfície de Design (Design Surface) A superfície de desenho, no centro da figura 1-3, é onde você cria o layout do seu relatório. Para fazer isso, você vai usar quatro das outras áreas visíveis na Figura 1-3: a janela Report Data, a Caixa de Ferramentas (Toolbox), a janela Propriedades (Properties) e o painel de Grupamento. Você vai aprender como eles funcionam nas sessões seguintes. A superfície de design divide espaço com a aba Preview. A aba Preview vai mostrar como o layout do relatório e os dados se combinam para criar um relatório bom e honesto. Janela de Dados do Relatório A Janela de Dados do Relatório (Report Data Window), no canto superior esquerdo da Figura 1-3, fornece uma lista de bancos de dados e outros tipos de campos que você pode usar no seu relatório. A Janela de Dados do Relatório torna fácil adicionar informações do banco de dados ao seu relatório. Simplesmente arraste o campo desejado da janela de Dados do Relatório e solte-o no local apropriado no layout do seu relatório. O Report Designer cuida do resto. Caixa de Ferramentas (Toolbox) A Caixa de Ferramentas, no canto inferior esquerdo da Figura 1-3, contém todos os itens de relatório que você usa para criar seus relatórios. Esses itens, às vezes chamados de controles (controls), são responsáveis por reunir o texto e o gráfico para que apareçam no lugar correto nos seus relatórios. Como em qualquer projeto de construção, você só pode construir relatórios adequadamente depois de aprender como se usam as ferramentas (itens de relatório) na Caixa de Ferramentas. Você aprende a usar cada item de relatório da Caixa de Ferramentas nos Capítulos 4,5 e 6. Capítulo 1: Vamos Começar B em do Pr incípio 15 Como nos campos da janela de Dados do Relatório, os itens de relatório da Caixa de Ferramentas são posicionados no layout do relatório com um simples arraste-esolte. Entretanto, enquanto campos estão muito mais prontos para ir quando são largados sobre a superfície de design, os itens de relatório quase sempre precisam de algumas mudanças de formatação para que fiquem do jeito que você quer. Isso é feito mudando-se o tamanho, a cor, a fonte, ou qualquer uma das várias outras características do item de relatório. Janela de Propriedades (Properties Window) A Janela de Propriedades, mostrada no canto inferior direito da Figura 1-3, é o lugar onde você controla as características de cada item de relatório. A janela de Propriedades sempre mostra as características, ou propriedades, do item de relatório que está selecionado na superfície de design. Você vai ver uma entrada na janela de Propriedades para cada aspecto desse item de relatório que você pode controlar. O topo da janela de Propriedades mostra o nome do item de relatório selecionado. Na Figura 1-3, a caixa de texto de nome “Textbox3” está selecionado. A coluna da esquerda na janela de Propriedades mostra o nome de todas as propriedades que podem ser modificadas para cada item de relatório. A coluna da direita mostra as configurações atuais para cada uma dessas propriedades. Por exemplo, na Figura 1-3, você pode ver que Textbox3 tem uma altura (Height) de 0,64 centímetros. Painel de Grupamento (Grouping Pane) O Painel de Grupamento está no final da superfície de design na Figura 1-3. Este painel, feito pelas áreas de grupos de linhas e de grupos de colunas, é onde você controla como os grupamentos operam dentro do relatório. O grupamento de linhas e de colunas avançados que são agora possíveis num relatório é o que tornam a tablix uma ferramenta poderosa para criar layouts de relatórios complexos. Standalone Report Builder O Standalone Report Builder é um ambiente de construção de relatórios que existe como sua própria aplicação, e não como uma aplicação guardada dentro do Buisiness Intelligence Development Studio/Visual Studio. O Standalone Report Builder funciona de modo similar ao Report Designer. A Figura 1-4 mostra um relatório sendo criado no Standalone Report Builder. 1 6 M i c r o s o f t S Q L S e r v e r 2 0 0 8 R e p o r t i n g S e r v i c e s Figura 1-4 O Standalone Report Builder. O Standalone Report Builder usa a interface de usuário estilo ribbon, encontrada no Microsoft Office 2007. Essa é a principal diferença entre o Report Builder e o Standalone Report Builder. O Standalone Report Builder não tem uma Caixa de Ferramentas. Ao invés disso, os itens de relatório são encontrados na aba Insert do ribbon. As outras abas do ribbon fornecem controles adicionais para formatar itens de relatório posicionados na superfície de design. Novamente, neste livro, vamos fazer a maior parte da criação dos nossos relatórios usando o Report Designer. Entretanto, qualquer coisa que você possa fazer no Report Designer, ao longo das linhas da criação de um relatório, você também poderá fazer no Standalone Report Builder. Arquitetura de Servidor de Relatório Uma vez que você tenha terminado o seu relatório e ele tiver exatamente a aparência que você deseja, está na hora de partilhá-lo com outros. Esta é a hora em que seu relatório passa da segura infância dentro do Report Designer para sua vida adulta num Report Server. Isto se chama implementar ou publicar o relatório. Deixe-me assegurá-lo de que os relatórios passam pela implementação muito mais facilmente do que você e eu passamos pela adolescência! Capítulo 1: Vamos Começar B em do Pr incípio 17 Servidor de Relatório (Report Server) O Servidor de Relatório é a peça do quebra-cabeça que faz o Reporting Services ser o produto que é. Este é o ambiente de software que permite que você compartilhe o seu relatório com as massas – ao menos com as massas que têm direito de acessar o seu servidor. A Figura 1-5 mostra a estrutura básica do Servidor de Relatório. Catálogo de Relatório (Report Catalog) Quando um relatório é implementado num Servidor de Relatório, uma cópia das definições RDL do relatório é colocada no Catálogo de Relatório daquele servidor. O Catálogo de Relatório é um conjunto de banco de dados usado para armazenar as definições para todos os relatórios disponíveis em um determinado Servidor de Relatório. Mesmo que você use alguma fonte de dados compatíveis com ODBC ou OLE DB para fornecer dados para seus relatórios, o banco de dados do Catálogo de Relatório só poderá existir no SQL Server 2005 ou no SQL Server 2008. O banco de dados do Catálogo de Relatório é criado como parte do processo de instalação do Reporting Services. A não ser que seja para criar backups regulares de algum banco de dados do Catálogo de Relatório, provavelmente será uma boa idéia deixar o Catálogo de Relatório em paz. Manipuladores de Pedidos (Report Mananger) (Report Mananger) Figure 1-5 Arquitetura do Servidor de Relatório. Processador de Relatório (Report Processor) Quando um relatório precisa ser executado, o componente processador de relatório do Servidor de Relatório dirige o show. O processador de relatório recupera o relatório do Catálogo de Relatório e orquestra a operação dos outros componentes do Servi- 1 8 M i c r o s o f t S Q L S e r v e r 2 0 0 8 R e p o r t i n g S e r v i c e s dor de Relatório enquanto o relatório é produzido. Ele recolhe o output de cada outro componente e os combina para criar o relatório completo. Provedores de Dados (Data Providers) Quando o processador de relatório encontra definições de dataset no RDL do relatório, ele obtém os dados para povoar o dataset. Ele faz isso primeiramente seguindo as instruções na fonte de dados do relatório para conectar-se com o servidor de banco de dados ou arquivo que contém os dados. O processador de relatório seleciona um fornecedor de dados que sabe como obter informações deste tipo de fonte de dados. O fornecedor de dados então se conecta com a fonte dos dados e seleciona as informações necessárias para o relatório. O fornecedor de dados retorna estas informações ao processador de relatório, onde elas são transformadas em um dataset para ser usado no relatório. Renderizadores Uma vez que todos os dados para o relatório foram coletados, o processador de relatório está pronto para começar a processar o layout do relatório. Para fazê-lo, o processador de relatório olha para o formato solicitado. Ele pode ser HTML, PDF, TIFF ou outro dos vários formatos possíveis. O processador de relatório então usa o renderizador que sabe produzir esse formato. Você vai aprender mais sobre as capacidades de cada um desses formatos de relatório no Capítulo 9. O renderizador funciona com o processador de relatório para ler todo o layout do relatório. O layout do relatório é combinado com o dataset e qualquer seção repetida do relatório é duplicada para cada linha no dataset. Esse layout de relatório expandido é então traduzido para o formato de output solicitado. O resultado é um relatório pronto para ser enviado ao usuário. Manipulador de Pedidos (Request Handler) O Manipulador de Pedidos é responsável por receber solicitações de relatórios e por passar essas solicitações para o processador de relatórios. Uma vez que o processador de relatórios tenha criado o relatório solicitado, o manejador de pedidos é também responsável por entregar o relatório completo. Na próxima seção, você vai aprender sobre os vários métodos que o manejador de pedidos usa para entregar relatórios. Entrega de Relatórios Nós discutimos sobre como um relatório é criado pelo Servidor de Relatórios. O que não discutimos foi pra onde esse relatório vai depois que é criado. O relatório pode ser enviado para um usuário através do website do Report Manager. Ele pode ser enviado em resposta a uma solicitação de um serviço de web que veio, não de um usuário, mas de outro programa. Ele também pode ser enviado por e-mail para um usuário que assine esse relatório. Website do Report Manager Uma maneira que usuários têm de solicitar um relatório do Servidor de Relatório é através do website do Report Manager. Este website é criado para você quando você instala o Reporting Services. A Figura 1-6 mostra uma tela do website do Reporting Services. Capítulo 1: Vamos Começar B em do Pr incípio 19 O website do Report Manager organiza os relatórios em pastas. Os usuários podem navegar por essas pastas para encontrar os relatórios que precisam. Os usuários também podem procurar pelos títulos e descrições para localizar os relatórios. O Report Manager também inclui recursos de segurança que podem ser aplicados a pastas e relatórios. Com esses recursos de segurança, o administrador do site pode criar tarefas de segurança para usuários que vão acessar o site. Essas tarefas de segurança controlam que pastas e que relatórios um usuário pode acessar. Você vai aprender sobre segurança quando nós dermos uma olhada no Report Manager no Capítulo 10. No Report Manager, os relatórios são sempre exibidos em formato HTML. Uma vez que o relatório tenha sido exibido como uma página HTML, o usuário então poderá exportá-lo para qualquer outro formato disponível. Figura 1-6 O website do Report Manager. SharePoint/Office Server O SharePoint também pode ser configurado para server como meio para os usuários solicitarem relatórios. Isso pode ser feito de duas maneiras. A primeira usa web parts do Report Explorer ou do Report Viewer. Essas web parts podem ser usadas numa aplicação web do SharePoint para permitir que os usuários naveguem pelas pastas de relatórios e visualizem relatórios num servidor de relatórios do Reporting Services. As web parts do Report Explorer e do Report Viewer foram originalmente disponibilizadas como parte do SQL Server 2000 Reporting Services Service Pack 2. Elas também eram parte do SQL Server 2005 Reporting Services. As web parts continuam disponíveis na versão 2008, mas sua funcionalidade não foi atualizada para tirar proveito dos novos recursos e funcionalidade. A segunda maneira de utilizar o Reporting Services através do SharePoint envolve uma justa integração dos dois produtos. Nesta configuração, uma instalação do Windows SharePoint Services 3.0 ou do Office SharePoint Server 2007 se tornará de fato o host para o Catálogo de Relatório do servidor de relatório. Além disso, a interface de usuário do SharePoint substitui o website do Report Manager como interface do usuário para localizar e visualizar relatórios, e também para gerenciar 2 0 M i c r o s o f t S Q L S e r v e r 2 0 0 8 R e p o r t i n g S e r v i c e s o servidor de relatório. Acessar relatórios através da integração do SharePoint é tão fácil e intuitivo quanto acessar qualquer outro documento no site do SharePoint. Entrega de Assinaturas Se os usuários não querem ir ao relatório, o manejador de pedidos pode fazer com que o relatório vá até eles. Em outras palavras, os usuários não precisam necessariamente vir ao site do Report Manager para receber um relatório. Eles podem receber o relatório através de um serviço de assinatura. O Report Manager permite que os usuários localizem um relatório no site e então faça a assinatura para que o relatório lhe seja entregue no futuro. Quando usuários assinam um relatório, eles fornecem um endereço de e-mail para o qual o relatório será enviado, ou como o corpo de uma mensagem ou como um anexo de uma mensagem, dependendo do formato requisitado. Os usuários podem especificar o formato do relatório quando fazem a sua assinatura. O administrador do site também pode configurar assinaturas de relatórios. Elas funcionam como envio de mensagens em massa, usando uma lista de endereços de e-mail. Ao invés de exigir que cada usuário acesse o Report Manager para criar sua própria assinatura, o administrador do site pode criar uma assinatura que será enviada para todos os usuários da lista. Interface de Seviço Web (Web Service Interface) Além de entregar relatórios aos usuários, tanto por solicitação sua quanto por assinatura, o manipulador de pedidos pode entregar relatórios para outras aplicações de software. Isso é feito através de uma série de serviços da web. Um serviço da web é um mecanismo que permite que programas se comuniquem entre si através da Internet. Um programa chama serviço da web no Report Server solicitando um determinado relatório num determinado formato. O manipulador de pedidos retransmite esse pedido ao processador de relatórios, exatamente como qualquer outra solicitação de relatório. O relatório completo é devolvido ao programa que originou o pedido como resposta a solicitação do serviço da web. Serviços da web usam um protocolo chamado Simple Object Acess Protocol (SOAP). SOAP é suportado tanto por ambiente Windows quanto não-Windows, portanto um programa rodando num computador não-Windows que suporta SOAP pode receber um relatório criado pelo Reporting Services. Conhecendo a Fundo o Produto Agora que você foi introduzido a todas as capacidades do Reporting Services, espero que esteja pronto para mergulhar de cabeça e fazê-lo funcionar. No próximo capítulo você vai aprender sobre a instalação e configuração do Reporting Services. Se o Reporting Services já está instalado, você pode pular para o Capítulo 3. No Capítulo 3, nós asseguramos que você tenha um firme entendimento dos fundamentos sobre banco de dados antes de chegar a construção de relatórios propriamente dita no Capítulo 4. O Capítulo 3 também o introduz a Galactic Delivery Services (GDS), a empresa que usamos como estudo de caso do início ao fim deste livro. Mesmo que suas habilidades com bancos de dados sejam excelentes, você deveria gastar alguns minutos no Capítulo 3 para conhecer a GDS.