Over de auteur Peter ter Braake is zelfstandig SQL Server docent/consultant. Hij is MCT sinds 2002 en SQL Server MVP sinds begin 2012. Hij werkt met SQL Server Reporting Services sinds de eerste release in 2004. 978 90 395 2721 4 123 9 *uklpdo#bxmxyv* Aan de slag met Reporting Services 2012 Ook alle instellingen die u kunt kiezen voor rapporten nadat ze in gebruik zijn gekomen, komen aan de orde. Dankzij de opgaven biedt het boek voldoende mogelijkheden om te oefenen en ervaring op te doen. Zo kunt u de behandelde stof direct in de praktijk toepassen. Aan de slag met Reporting Services 2012 is bedoeld voor studenten en professionals die met Reporting Services gaan werken. Voorkennis van Reporting Services is niet noodzakelijk, maar kennis van het Microsoft-platform is een pre. Daarnaast is het in de praktijk onontbeerlijk om enige kennis te hebben van SQL of als u met kubussen wilt werken, van MDX. ter Braake Microsoft SQL Server 2012 Reporting Services is een uitgebreide tool om rapporten mee te maken, te beheren en te gebruiken. Het biedt vele mogelijkheden en opties en is bruikbaar in zowel de kleinste, alsook de grootste en meest kritische omgevingen. De beste manier om een uitgebreid product zoals Reporting Services te leren kennen is er actief mee te werken. Dit boek is geschreven om u daarbij te helpen. Stap voor stap wordt u begeleid bij het installeren van Reporting Services en vervolgens bij het maken van rapporten. Bij alle keuzes wordt stilgestaan bij de mogelijke opties en wanneer te kiezen voor welke optie. Zo leert u al doende goede en duidelijk rapporten te bouwen en ze te gebruiken. Aan de slag met Reporting Services 2012 voor Microsoft SQL Server Peter ter Braake Aan de slag met Reporting Services 2012 voor Microsoft SQL Server Peter ter Braake Meer informatie over deze en andere uitgaven kunt u verkrijgen bij: Sdu Klantenservice Postbus 20014 2500 EA Den Haag tel.: (070) 378 98 80 www.sdu.nl/service © 2013 Sdu Uitgevers, Den Haag Academic Service is een imprint van Sdu Uitgevers bv. Zetwerk: Redactiebureau Ron Heijer, Markelo Omslagontwerp: Studio Bassa, Culemborg Omslaguitvoering: Carlito’s Design, Amsterdam ISBN 978 90 395 2721 4 NUR 123 / 995 Alle rechten voorbehouden. Alle intellectuele eigendomsrechten, zoals auteurs- en databankrechten, ten aanzien van deze uitgave worden uitdrukkelijk voorbehouden. Deze rechten berusten bij Sdu Uitgevers bv en de auteur. Behoudens de in of krachtens de Auteurswet gestelde uitzonderingen, mag niets uit deze uitgave worden verveelvoudigd, opgeslagen in een geautomatiseerd gegevensbestand of openbaar gemaakt in enige vorm of op enige wijze, hetzij elektronisch, mechanisch, door fotokopieën, opnamen of enige andere manier, zonder voorafgaande schriftelijke toestemming van de uitgever. Voor zover het maken van reprografische verveelvoudigingen uit deze uitgave is toegestaan op grond van artikel 16 h Auteurswet, dient men de daarvoor wettelijk verschuldigde vergoedingen te voldoen aan de Stichting Reprorecht (Postbus 3051, 2130 KB Hoofddorp, www.reprorecht.nl). Voor het overnemen van gedeelte(n) uit deze uitgave in bloemlezingen, readers en andere compilatiewerken (artikel 16 Auteurswet) dient men zich te wenden tot de Stichting PRO (Stichting Publicatie- en Reproductierechten Organisatie, Postbus 3060, 2130 KB Hoofddorp, www.cedar.nl/pro). Voor het overnemen van een gedeelte van deze uitgave ten behoeve van commerciële doeleinden dient men zich te wenden tot de uitgever. Hoewel aan de totstandkoming van deze uitgave de uiterste zorg is besteed, kan voor de afwezigheid van eventuele (druk)fouten en onvolledigheden niet worden ingestaan en aanvaarden de auteur(s), redacteur(en) en uitgever deswege geen aansprakelijkheid voor de gevolgen van eventueel voorkomende fouten en onvolledigheden. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, electronic, mechanical, photocopying, recording or otherwise, without the publisher’s prior consent. While every effort has been made to ensure the reliability of the information presented in this publication, Sdu Uitgevers neither guarantees the accuracy of the data contained herein nor accepts responsibility for errors or omissions or their consequences. Voorwoord Voor u ligt een boek over Microsoft SQL Server 2012 Reporting Services. Reporting Services is een uitgebreide tool om rapporten mee te maken, te beheren en te gebruiken. Het biedt vele mogelijkheden en opties en is bruikbaar in zowel de kleinste, alsook de grootste en meest kritische omgevingen. Afhankelijk van uw situatie wilt u meer of minder van de mogelijkheden benutten. De beste manier om een uitgebreid product zoals Reporting Services te leren kennen is er actief mee te werken. Dit boek is geschreven om u daarbij te helpen. Stap voor stap wordt u begeleid bij het installeren van Reporting Services en vervolgens bij het maken van rapporten. Bij alle keuzes wordt stilgestaan bij de mogelijke opties en wanneer te kiezen voor welke optie. Zo leert u al doende mooie rapporten te bouwen en ze te gebruiken. Ook alle instellingen die u kunt kiezen voor rapporten nadat ze in gebruik zijn gekomen, komen aan de orde. Dit boek bevat opgaven om al het geleerde ook in de praktijk toe te passen. Zoals gezegd is doen belangrijk om met Reporting Services te leren werken. Middels de opgaven kunt u de nodige ervaring opdoen. Dit boek gaat niet uit van enige voorkennis. Het is bedoeld voor studenten en professionals die nu of in de toekomst met Reporting Services gaan werken. Tegelijkertijd is kennis van het Microsoft-platform een pre. Daarnaast is het in de praktijk onontbeerlijk om enige kennis te hebben van SQL (Structured Query Language) of MDX (Multi Dimensional eXpressions) als u met kubussen gaat werken. Dit boek was niet tot stand gekomen zonder het begrip van mijn vrouw. Ook wil ik Bert Brummelhuis en Albert van Dok bedanken voor hun input. Veel plezier met Reporting Services! Peter ter Braake Bunnik, januari 2013 v Inhoud Voorwoord v 1 Inleiding informatiemanagement 1.1 Inleiding Business Intelligence 1.1.1 De relationele database 1.1.2 Business Intelligence 1.2 Het datawarehouse 1.3 Het stermodel 1.4 Soorten beslissingen 1.5 Soorten rapporten 1.6OLAP-kubus 1.6.1 Voordelen van kubussen 1.6.2 Tabular Model 1.7 Ontstaan SQL Server Reporting Services 1.8 Tot slot 1 1 1 2 4 5 8 10 12 13 15 15 17 2 Inleiding Microsoft SQL Server Reporting Services 2.1 Wat is SQL Server Reporting Services? 2.2 SQL Server-edities 2.3 Installeren van Reporting Services 2.4 Stand-alone installatie 2.4.1Controle 2.5 Configureren van stand-alone Reporting Services 2.5.1 Configureren van de ReportServer-database 2.5.2 Configureren van de Web Service 2.5.3 Overige instellingen 2.5.4 Tot slot 2.6 SharePoint integrated mode 2.7 Configureren voor SharePoint integrated mode 2.7.1 Reporting Services-service toevoegen aan SharePoint 2.7.2 Reporting Services Service Application 2.8 Activeren Power View 2.9 Installeren van PowerPivot voor SharePoint 2.9.1 PowerPivot Gallery aanmaken 2.9.2 BI Semantic Model Connection 2.10 Downloaden en installeren Report Builder 3.0 2.11 Tot slot 19 19 20 22 23 26 27 28 30 32 33 34 35 36 36 38 38 39 39 39 41 vii Aan de slag met Reporting Services 2012 viii 3 Eenvoudige rapporten maken 3.1Projecten 3.1.1 Shared Data Sources 3.1.2 Shared Datasets 3.2 Het eerste rapport 3.2.1 Data Source 3.2.2Dataset 3.2.3 Text, Table of Stored Procedure? 3.2.4 Data Regions 3.2.5 Basale opmaak 3.2.6 Headers en footers 3.2.7 Conditionele opmaak en afwisselende achtergrond 3.2.8 Sortering en herhalingen 3.2.9Groepen 3.2.10 Berekende velden 3.3 Report Builder 3.3.1 Maken van een rapport 3.4 Tot slot 4 Interactieve rapporten en Data Regions 4.1 Rapporten met parameters 4.1.1Queryparameters 4.1.2 Parameter Properties 4.1.3 Gekoppelde parameters 4.1.4 Filteren op gebruikersnaam 4.1.5 Multiple Values 4.1.6Filters 4.2 Interactieve rapporten 4.2.1 Document Map 4.2.2Drill-down 4.2.3Action 4.3 Data Regions: List, Chart en Matrix 4.3.1Templates 4.3.2List 4.3.3Chart 4.3.4 Matrix- en subrapporten 4.3.5 Drill-through naar Stamkaart 4.4 Meer visualisaties 4.4.1Sparkline 4.4.2 Data Bar 4.4.3 Indicators en Gauges 4.5Pagina-instellingen 4.5.1 Page size en Interactive page size 4.6 Gegevens uit SQL Server Analysis Services 4.6.1 Gegevens uit een kubus 4.6.2 Gegevens uit een Tabular Model 4.7 Tot slot 43 43 45 47 49 50 51 53 57 59 64 68 70 72 75 79 80 81 83 83 84 85 87 89 90 92 95 96 97 100 101 102 103 105 107 108 109 110 111 112 115 115 116 116 118 118 Inhoud 5 Beheer van Reporting Services 5.1 In gebruik nemen van rapporten 5.1.1Projectinstellingen 5.1.2 Publiceren vanuit SQL Server Data Tools 5.1.3 Andere opties 5.1.4 Tot slot 5.2Rapportinstellingen 5.2.1 De rapport Data Source 5.2.2Caching 5.2.3Snapshots 5.2.4 Report History 5.2.5Rapporttime-outs 5.2.6Parameters 5.2.7 Linked Reports 5.3Subscriptions 5.3.1 Standard Subscriptions 5.3.2 Data-driven Subscriptions 5.4Security 5.4.1 Role-based Security in native mode 5.4.2 Rechten in SharePoint 5.5 Data Alerts 5.6 Tot slot 119 119 119 121 122 123 123 123 127 130 132 133 133 134 135 135 138 140 141 142 143 144 6 PowerPivot en Tabular Models 6.1Inleiding 6.1.1 Wie maakt BI-oplossingen? 6.1.2 Selfservice BI 6.2PowerPivot 6.2.1 Downloaden en installeren 6.2.2 Een PowerPivot-werkmap maken 6.2.3 Een PowerPivot-rapport maken in Excel 6.2.4 Het model verbeteren 6.2.5 Nieuwe kolommen maken 6.2.6Sorteren 6.2.7Hiërarchieën 6.2.8 Relaties maken 6.2.9 Tot slot 6.3 Business Intelligence Tabular Model 6.3.1 Tabular Models versus Multidimensional Models 6.3.2 Een Tabular Model maken met SQL Server Data Tools 6.3.3 Analyze in Excel 6.3.4 Berekende waarden toevoegen 6.3.5 Tijdintelligentie toevoegen 6.3.6 Instellingen voor rapportages 6.3.7 KPI’s maken 6.3.8Perspectives 145 145 145 147 148 148 148 151 153 154 156 157 159 160 160 160 161 163 164 165 166 169 170 ix Aan de slag met Reporting Services 2012 7 x 6.3.9 PowerPivot versus Tabular Model 6.3.10 Publiceren van het model 6.4 Tot slot 171 173 173 Power View 7.1 Connecties maken 7.2 Het eerste Power View-rapport 7.3 Rapporten bekijken en highlighting 7.3.1 Opslaan van een rapport 7.3.2 Exporteren naar PowerPoint 7.4 Filters en Slicers 7.4.1Filters 7.4.2Slicers 7.5 Views, Tiles en Cards 7.5.1Views 7.5.2Tiles 7.5.3Cards 7.6 Bubble en Scatter Charts 7.6.1 Scatter Charts 7.6.2 Bubble Charts 7.6.3 Extra opties 7.7 Tot slot 175 175 177 180 182 182 182 182 183 185 185 185 186 187 188 188 188 189 Opgaven Opgaven bij Hoofdstuk 3 en 4 – Creating Reports Opgave 1 – Territory Sales Drilldown Opgave 2 –Sales Order Detail Extra opgaven bij Hoofdstuk 3 en 4 – Report Builder 3.0 Opgave 3 – Publish Report Parts Opgave 4 – Report Builder 3.0 Opgave 5 – Aanpassingen maken aan het rapport Opgaven bij Hoofdstuk 5 – Reporting Management Opgave 6 – Deploying en Linked Reports Opgave 7 – Scheduling Opgave 8 – Monitoring Opgave 9 – Caching en Snapshots Opgave 10 – Security Opgaven bij Hoofdstuk 6 – Tabular Model Opgave 11 – PowerPivot Opgave 12 – Maak een Excel-rapportage Opgave 13 – Maak SSAS Tabular Model Opgave 14 – Deploy en gebruik van Tabular Model Opgave 15 – Extra Opgaven bij Hoofdstuk 7 – Power View Opgave 16 – Power View-visualisaties maken 191 191 191 195 196 196 198 199 199 199 200 200 201 202 202 202 204 206 209 210 210 210 213 Index Hoofdstuk 1 Inleiding informatiemanagement Met Reporting Services en de bijbehorende tools kunt u rapporten maken, in productie nemen en beheren. In dit boek gaat u over al die facetten leren. Voordat u daar in Hoofdstuk 2 echt mee begint, is het goed om eerst een kader te scheppen. Waarvoor is een tool zoals Reporting Services bedoeld en waar komt Reporting Services vandaan? Beide vragen worden beantwoord in dit eerste hoofdstuk. 1.1 Inleiding Business Intelligence Mensen hebben binnen bedrijven altijd al met informatie gewerkt. Als u in het kader van uw werk een beslissing moet nemen, wilt u die het liefst baseren op kennis en op feiten. U heeft dus informatie nodig. Rapporten bieden als het goed is die informatie. Daarom zijn rapporten onmisbaar in het bedrijfsleven. Met de opkomst van de computer kwam die informatie in databases terecht. Samen met de opkomst van databases ontstond de behoefte om rapportages te maken op basis van de gegevens in die databases. Iedereen wil weten wat er hier en nu speelt binnen het bedrijf. En veel van wat er te weten is, zit in de database. 1.1.1 De relationele database Begin jaren zeventig van de vorige eeuw ontwikkelde Edgar F. Codd van IBM de relationele database. Marketingverhalen over de eerste relationele databases uit die tijd vertellen ons dat het real-time voor handen hebben van informatie via rapportages de meerwaarde van (relationele) databases is. Als gegevens handmatig uit dossiermappen gehaald moeten worden en overgeschreven moeten worden op een rapportage, zult u waarschijnlijk minder informatie, op een later moment krijgen. OLTP versus OLAP Uit die tijd komen ook de termen OLTP en OLAP. OLTP staat voor Online Transaction Processing en OLAP betekent Online Analytical Processing. In beide gevallen heeft online hier niets te maken met het internet (dat bestond toen nog niet). Het refereert aan het feit dat we tijdens het werken live een connectie hebben met de database. Dus krijgt de gebruiker direct het antwoord op de vraag die hij/zij stelt. Naast het online werken met de database werd de relationele database hand in hand ontworpen met SQL, oftewel Structured Query Language. In eerste instantie was de beoogde naam van die taal zelfs English Query Language, wat de ambitie goed weergeeft. SQL zou ons in staat moeten stellen om in het Engels (of zo dicht als mogelijk bij het Engels) een vraag te formuleren en er dan real-time antwoord op te krijgen. Kortom, precies wat we willen. 1 Aan de slag met Reporting Services 2012 1.1.2 Business Intelligence Tegenwoordig is Business Intelligence een groot vakgebied waarin bedrijven veel investeren. De term Business Intelligence is een soort parapluterm waar we veel onder zouden kunnen scharen. Een exacte definitie is dan ook moeilijk, maar zou zoiets kunnen zijn als: Business Intelligence beoogt iedereen in een organisatie op het juiste moment van de juiste informatie te voorzien, in het juiste formaat. Deze definitie is eigenlijk een zinnetje dat bij de introductie van relationele databases in de jaren zeventig al gebruikt werd. Blijkbaar heeft de relationele database toch niet gebracht wat er toentertijd van gedacht werd, anders was Business Intelligence nu niet zo groot geweest. Waarom is dat? Er is een aantal oorzaken aan te wijzen waarom de relationele database met een rapportageomgeving niet voldoet: V Bedrijven hebben niet één database, maar meer databases. V De kwaliteit van de gegevens in databases laat te wensen over. V De performance van de databases is niet toereikend. V Gegevens worden overschreven door nieuwe gegevens. Bedrijven hebben niet één database maar meer databases Het eerste probleem zit hem in het feit er bijna altijd sprake is van meer dan één database. De verkoopafdeling werkt met een CRM-pakket (Customer Relationship Management) waarin onder andere alle orders terechtkomen. De Financiële Administratie heeft zijn eigen financiële pakket waarin facturen worden ingeboekt, grootboekposten worden aangemaakt en betalingen worden verwerkt. We zouden in staat moeten zijn uit beide systemen de omzet te halen. Alle orders uit een periode tezamen bepalen de omzet van die periode. Net zo goed is de omzet de som van alle betalingen uit een periode. Toch blijkt in de praktijk keer op keer dat beide systemen met een ander antwoord komen, met soms grote verschillen tussen beide antwoorden. Deels zal het probleem hier zitten in definities. Wat is nu eigenlijk omzet? Wat verstaan we daar precies onder? En wanneer reken je iets als omzet: als de klant zijn handtekening zet, als je zelf je goederen of diensten levert, of als het geld op je rekening wordt bijgeschreven? Er is een grote kans dat verschillende systemen verschillende definities gebruiken. Dat is meteen een belangrijke les voor iedereen die rapporten gaat maken: zorg dat definities helder zijn voordat je begint, documenteer deze definities en gebruik consequent dezelfde definities in verschillende rapporten. Kwaliteit van de gegevens in databases laat te wensen over Een andere oorzaak van onbetrouwbare antwoorden zit hem in de kwaliteit van de gegevens. Veelal zijn gegevens handmatig ingevoerd (dat wordt overigens wel steeds minder) of de gegevens zijn nog ergens handmatig verwerkt, dan wel bewerkt. En waar mensen werken, worden fouten gemaakt. Een komma is zo verkeerd gezet, maar kan wel een factor tien schelen in een bedrag, waardoor totalen niet meer kloppen. 2 Hoofdstuk 1 – Inleiding informatiemanagement Daarnaast zijn gegevens vaak incompleet, zoals postcodes die niet zijn ingevuld. Een ander veel voorkomend probleem is dat van de dubbele gegevens. Een klant komt in de database eenmaal voor met de toevoeging B.V. en eenmaal zonder. Dezelfde klant komt dan vaker in de database voor, wat analyses als omzet per klant onbetrouwbaar maakt. Er bestaan bedrijven die niets anders doen dan databases van hun klanten opschonen om bovenstaande problemen zo veel mogelijk op te lossen. De performance van de databases is niet toereikend Naast bovengenoemde kwaliteitsproblemen zijn er ook nog performance-issues. Informatie uit de database krijgen, houdt in: een query schrijven, oftewel een SQL SELECT-statement schrijven als de database een relationele database is. En SQL lijkt misschien een beetje op Engels, en dus zou het makkelijk moeten zijn een vraag te formuleren, de praktijk is toch anders. Al was het maar dat een database uit honderden tabellen kan bestaan en je als queryschrijver de tabelstructuur moet kennen om te weten welke tabellen je nodig hebt en hoe die tabellen onderling bij elkaar horen. Vaak is degene die op businessgerelateerde vragen antwoorden zoekt (de gebruiker van de rapporten) niet degene die SQL beheerst en/of niet de persoon die de rechten heeft om die vragen zelf rechtstreeks aan de database te stellen. Maar als de gebruiker zijn vraag eerst moet uitleggen aan iemand van ICT en die ICT-er, gezien zijn/haar volle agenda, dan een week later pas de query gaat schrijven, duurt het lang voordat de gebruiker antwoord krijgt. Veel te lang. Los van dit kennisprobleem (heeft de gebruiker wel de technische kennis om rapporten te maken?) is er ook een performanceprobleem van meer technische aard. De meeste operationele systemen hebben wat we noemen ‘uitgenormaliseerde data­ bases’. Dat houdt in dat niet alle gegevens in één en dezelfde tabel zitten, maar dat de ge­gevens verdeeld zijn over meer tabellen, met als uitgangspunt om redundantie (het dubbel opslaan van gegevens) te voorkomen. Dat is goed voor zowel de snelheid waarmee we in de database kunnen schrijven (nieuwe informatie invoeren, maar ook bestaande gegevens aanpassen) alsook voor de kwaliteit van de gegevens. Maar door normaliseren wordt het complexer de gegevens uit de database te halen. De leessnelheid wordt slechter. We zullen namelijk in bijna alle gevallen gegevens uit meer tabellen moeten halen (oftewel joins schrijven). En los van het feit dat het schrijven van de query daar lastiger van wordt, moet de database die complexe query oplossen en daar heeft de database uiteraard tijd voor nodig. Met een beetje pech krijgen we er nog locking- en blockingproblemen bij waardoor de performance nog slechter wordt. Blocking treedt op als de ene gebruiker gegevens aan het wijzigen is en de andere gebruiker op hetzelfde moment die gegevens wil lezen. Het lezen zal moeten wachten tot het schrijven klaar is. Wachten vertaalt zich in deze context natuurlijk tot slechte performance. Gegevens worden overschreven door nieuwe gegevens Een ander probleem waar sommige databases mee te maken hebben, is het probleem dat gegevens vaak overschreven worden door nieuwe gegevens zonder de oude ge­ 3 Aan de slag met Reporting Services 2012 gevens te bewaren. Stel bijvoorbeeld dat een verkoper die verantwoordelijk is voor de regio Noord gaat verhuizen naar Maastricht. Om zijn reistijd te beperken verandert hij ook van regio, hij wordt verantwoordelijk voor de regio Zuid. In veel systemen wordt nu Noord overschreven door Zuid. Voor de dagelijkse gang van zaken geen probleem. Maar als we nu proberen te analyseren hoe veel omzet is gerealiseerd in de regio Zuid en we die analyse doen via de verantwoordelijke verkoper, blijkt de omzet veel hoger uit te komen dan wat echt gerealiseerd is. De omzet van voor de verhuizing is meeverhuisd naar de regio Zuid. Kortom, voor een eenduidig, betrouwbaar en snel rapportagesysteem hebben we waarschijnlijk meer nodig dan een mooie rapportagetool en een database. Niet alle bedrijven hebben bovenstaande problemen. Het hangt af van de grootte van het bedrijf (hoeveelheid data, hoeveelheid databases, hoeveelheid gebruikers), de mate van integratie tussen de verschillende systemen en de performance-eisen die we zelf stellen. Is er sprake van één of meer van de bovenstaande problemen, dan kan wellicht een datawarehouse een oplossing bieden. 1.2 Het datawarehouse Voordat bedrijven die te kampen hebben met boven beschreven problemen meteen een volledig datawarehouse gaan inrichten, is er misschien nog een tussenoplossing mogelijk. Regelmatig wordt er een zogenaamde rapportagedatabase gemaakt. In de meeste gevallen is dat niet meer dan een kopie van de operationele database waarop de rapporten dan gebaseerd worden. Een belangrijke reden om een rapportagedatabase te maken is offloading van de rapportageworkload naar een ander systeem. Met andere woorden: één systeem wordt gebruikt voor de dagelijkse processen, een ander systeem wordt gebruikt om uit te lezen. Het schrijven en tegelijkertijd lezen, levert nu geen concurrencyproblemen (het tegelijkertijd werken) meer op, wat zowel voor het operatio­ nele systeem als voor het rapportagesysteem performanceproblemen kan oplossen. De implementatie kan heel eenvoudig zijn. Zet bijvoorbeeld elke nacht de back-up van de operationele database, die hoogstwaarschijnlijk toch gemaakt wordt, terug op een andere server. Nadeel is natuurlijk dat de rapportages nu niet meer real-time zijn. De informatie die in de rapporten getoond wordt, is nu maximaal een dag oud. Uiteraard kunnen hier met iets genuanceerdere technieken betere resultaten behaald worden. Een rapportagedatabase lost misschien een deel van de problemen op, maar zeker niet alle. De volgende stap zou kunnen zijn een datawarehouse in te gaan richten. Van een datawarehouse wordt weleens gezegd dat het de ‘single version of the truth’ is, dan wel moet zijn. Oftewel, niet langer verschillende databases met andere antwoorden, maar één centrale database (het datawarehouse) voor alle vragen en analyses. En met maar één systeem, is er maar één antwoord. Niet langer andere data en verschillende definities omdat er toevallig verschillende databases zijn. Het datawarehouse wordt gevoed vanuit de verschillende bronnen. Daarbij wordt gekozen voor centrale definities van zaken zoals omzet en cost of sales en worden gegevens die kwalitatief niet voldoen 4 Hoofdstuk 1 – Inleiding informatiemanagement aan de eisen aangevuld en opgeschoond (voor zover mogelijk) tot ze wel voldoen. Met andere woorden: het datawarehouse is een database die de waarheid bevat. Een datawarehouse is uiteindelijk gewoon een (relationele) database. Dat wil zeggen dat we tabellen maken en de gegevens opnemen in die tabellen. Een voordeel van een datawarehouse ten opzichte van een rapportagedatabase (zoals eerder besproken), is dat we een nieuwe tabelstructuur kunnen bedenken voor het datawarehouse. En die structuur kunnen we optimaliseren voor het doel waarvoor het datawarehouse dient: rapporten maken en analyses doen ten behoeve van de besluitvorming in een bedrijf. Veel lezen dus in de database en niet of nauwelijks schrijven. Een model dat daar uitermate geschikt voor is, is het stermodel. 1.3 Het stermodel Over wat de beste structuur voor een datawarehouse is, bestaat nog veel discussie. De eerste die met een modelleringstechniek voor datawarehouses kwam was Ralph Kimball. Hij is de bedenker van dimensioneel modelleren en daarmee van het ster­ model. Bill Inmon was een andere pionier op het gebied van datawarehousing en kwam met een andere architectuur. Relatief nieuw is de door Dan Linstedt bedachte Data Vault, een derde manier om een datawarehouse op te zetten. Het gaat te ver om hier alle drie de architecturen te bespreken. Een grote overeenkomst is echter dat alle drie zeggen dat het stermodel een goede tabelstructuur is om op te rapporten. Vandaar dat we het stermodel hier wel kort zullen beschrijven. Figuur 1.1 Voorbeeld van een stermodel met de feitentabel factResellerSales in het midden 5 Aan de slag met Reporting Services 2012 In figuur 1.1 ziet u een voorbeeld van een stermodel. In latere hoofdstukken gaat u op basis van deze tabellen rapporten maken. De naam stermodel komt voort uit de structuur. Er is één centrale tabel, de feitentabel, met eromheen een aantal tabellen, de zogenaamde dimensietabellen. De feitentabel Bij een sterschema (stermodel) gaan we uit van een proces in de organisatie waar we rapportages en analyses voor moeten maken. De eerste stap is het bepalen van de feiten rond dit proces. Hoe is het proces te meten? Wat bepaalt dat een proces succesvol verloopt of niet? Voor een verkoopproces liggen zaken als omzet, marge, kosten, verkochte aantallen, et cetera, voor de hand. Over het algemeen hebben we het daarmee over numerieke grootheden. Aggregeerbare grootheden ook, want van dagomzetten kunnen we ook weekomzetten maken. De tweede belangrijke stap is het bepalen van de grain, oftewel het detailniveau waarop we de gegevens willen bijhouden. Willen we omzet per dag of per week bijhouden? Of is tijd hier eigenlijk niet direct van belang, maar is het beter omzet per verkochte order bij te houden? Een verkeerd detailniveau kiezen is desastreus. Van dagomzetten kunnen makkelijk weekomzetten berekend worden (gewoon de zeven dagen van dezelfde week bij elkaar optellen), maar terug van weekomzetten weer dagomzetten maken, is niet meer mogelijk. Simpel de weekomzet door zeven delen levert immers niet het juiste resultaat. De keerzijde is dat het opslaan van meer details direct leidt tot meer data en dus een grotere database met de bijbehorende performance-issues tot gevolg. Omdat het hier gaat om de meetbare feiten van een proces, wordt de tabel waar het hier over gaat de feitentabel genoemd. De dimensietabellen Vervolgens bepalen we de zogenaamde dimensies, de grootheden die binnen het proces dat we beschrijven een rol spelen. De keuze voor het detailniveau geeft ons al veel informatie. Stel dat we als detailniveau gekozen hebben voor: de omzet per dag, per product, per winkel. Dit levert meteen drie dimensies op: een datumdimensie die bijna altijd aanwezig is, een productdimensie en een winkeldimensie. Blijkbaar gaat het hier om het verkopen van producten in winkels van een winkelketen. Naast de dimensies die we nu gevonden hebben, bestaan er misschien nog wel andere dimensies. We zouden kunnen denken aan een verkoperdimensie, reclameactiedimensie, et cetera. Het kennen en doorgronden van het proces dat we modelleren is cruciaal voor het bedenken van de juiste dimensies en dus voor het ontwikkelen van de het juiste stermodel. De dimensietabellen zijn zogenaamde ‘platgeslagen’ tabellen. Daarmee wordt bedoeld dat de tabellen niet uitgenormaliseerd zijn zoals in de meeste operationele databases. Ze staan bol van de redundantie (dubbele gegevens). In een OLTP-systeem is dat, zoals eerder gezegd, slecht voor zowel de kwaliteit van de gegevens als voor de performance van de database. Daarbij wordt dan wel de schrijfperformance van de database bedoeld. Voor het lezen, en daar gaat het natuurlijk om in een datawarehouse, heeft het juist veel voordelen om niet te normaliseren. De gegevens worden makkelijker en 6 Hoofdstuk 1 – Inleiding informatiemanagement sneller benaderbaar. Stel bijvoorbeeld dat het salesproces in het bovengenoemde voorbeeld om groentewinkels gaat. Alle aardappels worden ingekocht door een inkoper genaamd Jan. Alle aardappels hebben een prijs per kilo (geen stuksprijs). De productdimensie zou er nu als volgt uit kunnen zien. ProductNummer ProductNaam ProductType Inkoper PrijsType Prijs 1 Bintje Aardappel Jan Per kilo 2,00 2 Eigenheimer Aardappel Jan Per kilo 2,50 De kolommen Inkoper en PrijsType zijn hier redundant. De waarde van de kolommen volgt immers uit het feit dat het ProductType Aardappel is. In een genormaliseerd systeem zouden we hier twee tabellen van maken. De dimensies in een stermodel geven betekenis aan de feiten uit de feitentabel. We vullen de dimensietabel met zo veel mogelijk beschrijvende informatie, veelal character strings. Dus waar de feitentabel vooral uit numerieke gegevens bestaat, bestaan dimensietabellen veelal uit kolommen met tekst. Via deze beschrijvende kolommen kunnen we analyseren en filteren. Met de feitentabel en de bijbehorende dimensietabellen is het stermodel af. Uiteraard zijn er veel uitzonderingen en speciale gevallen. Over dimensioneel modelleren zijn hele boeken volgeschreven, dus bovenstaande korte beschrijving is verre van accuraat en volledig. Als we het ERD (entiteitenrelatiediagram) tekenen, oftewel het plaatje van de tabellen en hun onderlinge verbanden, zien we waarom het een stermodel wordt genoemd. Centraal staat de feitentabel met daaromheen de dimensietabellen, zodat het geheel er enigszins uitziet als een ster. Zo’n ster bestaat over het algemeen uit slechts een paar tabellen. Eén feitentabel met negen dimensies, dus tien tabellen tezamen, is al redelijk veel. Geen tientallen, honderden of zelfs meer, zoals bij uitgenormaliseerde databases wel normaal is. Een gevolg daarvan is dat het schrijven van queries makkelijker wordt. Bovendien hebben moderne databasesystemen, zoals SQL Server, speciale optimalisaties die queries op sterschema’s extreem efficiënt kunnen uitvoeren. Een sterschema is dus goed voor het gebruikersgemak (degene die de queries schrijft en dus degene die rapporten maakt) en voor de performance. Met een datawarehouse kunnen we dus de gegevens van meer databases, eventueel zelfs aangevuld met gegevens uit externe bronnen, samenbrengen in één grote database. Bovendien kunnen we met het overhalen van de gegevens naar het datawarehouse, het ETL-proces (Extract, Transform, Load), de kwaliteit van de gegevens en daarmee van de informatie, aanpassen. En door de mogelijkheid een andere server en een ander databasedesign te kiezen, kunnen we de performance sterk verbeteren. Maar zoals altijd in de databasewereld, is er een prijs voor al die voordelen. De gegevens zijn even up-to-date als de laatste keer dat het datawarehouse is gevuld. De rapporten 7 Aan de slag met Reporting Services 2012 geven dus geen real-time informatie, maar een beetje verouderde informatie. Vaak zien we dat datawarehouses elke nacht opnieuw gevuld worden, maar andere schema’s zijn natuurlijk ook mogelijk. Wat wijsheid is qua vulschema’s, hangt af van de eisen die de business stelt aan de informatie die uit het datawarehouse moet komen en van de grootte van de hoeveelheid data. Maar hoe erg is het eigenlijk als rapporten geen real-time informatie bevatten? 1.4 Soorten beslissingen Eerder hebben we als definitie voor Business Intelligence gebruikt: Iedereen in een organisatie op het juiste moment van de juiste informatie voorzien, in het juiste formaat. Daaraan moeten we eigenlijk toevoegen: met als doel beslissingen te kunnen nemen op basis van betrouwbare informatie (in plaats van op basis van een onderbuikgevoel of slechts ‘ervaring’ van de betrokken persoon). De mensen moeten goed geïnformeerd zijn, zodat ze op basis van die informatie de goede beslissingen kunnen nemen. Maar wie neemt welke beslissingen? Microsoft kwam bij de introductie van SQL Server 2005 met de slogan: ‘BI for the masses.’ Met andere woorden, iedereen, van hoog tot laag, neemt weleens beslissingen. En voor iedereen geldt: die beslissingen zouden gebaseerd moeten zijn op informatie. Uiteraard is er wel verschil tussen de verschillende beslissingen en de impact die een beslissing heeft op de totale business. In de literatuur worden drie soorten beslissingen onderscheiden: strategische beslissingen, tactische beslissingen en operationele beslissingen. Strategische beslissingen Strategische beslissingen zijn beslissingen ten aanzien van de strategie van een bedrijf. Waar willen we heen? Hoe moet het bedrijf er over vijf jaar uitzien? Hoe reageren we het beste op de crisis, zodat we de crisis goed doorstaan en er het liefst sterker uitkomen dan we erin gingen? Dit soort besluiten kenmerkt zich door een lage frequentie, maar een hoge impact op de business en daarmee op de mensen. Een ICT-opleider zou zich bijvoorbeeld in crisistijd, als er weinig cursussen worden gevolgd, kunnen omvormen tot een consultancybedrijf. De docenten moeten dan consultants worden die gedetacheerd worden, verkopers moeten geen cursussen meer verkopen maar mensen bij klanten plaatsen en de planners raken misschien hun baan wel helemaal kwijt. Grote impact dus op iedereen. Maar als de kogel eenmaal door de kerk is, moet je deze koers blijven varen. Je kunt niet na één maand alweer het roer omgooien. Om een beslissing, zoals hierboven beschreven, gefundeerd te kunnen maken, heb je veel informatie nodig. Het management wil de omzet, marge en winstcijfers van de afgelopen jaren hebben. Hoe zijn we gevaren tijdens de vorige crisis? Het liefst moet deze informatie aangevuld worden met externe informatie. Hoe deden de concurrenten het toen? Hoe reageerde de markt toen en verwachten we nu een zelfde reactie? Om dit soort vragen te kunnen beantwoorden zijn veel gegevens nodig, namelijk omzet- 8 Hoofdstuk 1 – Inleiding informatiemanagement en margegegevens over meerdere jaren. Daarbij zijn we niet meer geïnteresseerd in details, maar in geaggregeerde data. Individuele cursisten en cursussen zijn niet meer interessant. De totale omzet is interessant. Individuele klanten zijn niet meer interessant, maar wel de vraag welke branches het ondanks de crisis goed bleven doen. Veel data dus, samengepakt tot een beperkte hoeveelheid informatie. Van real-time eisen aan de informatie is hier geen, of zo goed als geen sprake. Tactische beslissingen De tweede soort beslissingen is die van de tactische beslissingen. Tactische beslissingen horen voornamelijk thuis bij het middenmanagement. Ze gaan over de uitvoer. Hoe brengen we de gekozen strategie in de praktijk ten uitvoer? Over het algemeen wordt dit per afdeling bekeken. Er worden doelstellingen bepaald en die doelstellingen moeten gecontroleerd worden. Zitten we nog op schema? Gaan we de doelstellingen halen? Deze vraag kan een manager van een afdeling zich stellen, maar een teamleider kan zich die vraag ook stellen voor zijn team en een individuele werknemer voor zichzelf. Deze vragen en de besluiten waartoe de antwoorden leiden, kenmerken zich door een hogere frequentie dan strategische besluiten. De impact is beperkter en de hoeveelheid gegevens die we nodig hebben om zinvolle informatie te leveren om de besluiten weer goed onderbouwd te nemen, is kleiner. Het gaat eerder over maanden dan jaren en eerder over afdelingen of teams dan over het hele bedrijf. Nog steeds is er niet echt sprake van een harde eis voor real-time informatie, hoewel daar uitzonderingen op bestaan. Bovendien kunnen de betrokken mensen daar anders over denken. Ik heb ooit een manager horen eisen dat zijn rapport ten aanzien van het ziekteverzuim van vorig jaar real-time moest zijn! Operationele beslissingen De derde soort beslissingen is die van de operationele beslissingen. Dit zijn de dagelijkse besluiten die bijna iedereen neemt tijdens het uitvoeren van zijn of haar dagelijkse taken. Denk bijvoorbeeld aan een inkoper die op basis van de huidige voorraad besluit wel of niet extra in te kopen. De frequentie van dit soort beslissingen is heel hoog, we hebben er niet al te veel informatie voor nodig en de impact van een (verkeerde) beslissing zal niet al te groot zijn. Uiteraard willen we alle processen binnen het bedrijf zo veel mogelijk optimaliseren en is het dus noodzaak ook deze beslissingen op basis van accurate informatie te nemen, in plaats van op gevoel of ervaring af te gaan. Bij operationele beslissingen komen real-time eisen (terecht en onterecht) het meest voor. Moet een supermarkt nog brood bijbakken als de voorraad bijna op is? Elke klant die voor een leeg schap staat, is een ontevreden klant die misschien wel naar de concurrent overstapt. Maar elk brood dat na sluitingstijd nog niet verkocht is, moet worden weggegooid en dat is kapitaalvernietiging. Voor zo’n beslissing heb je niets aan de voorraad en het aantal verkopen van gisteren. Actuele informatie is nu opeens van groot belang. 9 Aan de slag met Reporting Services 2012 1.5 Soorten rapporten In de eerder gekozen definitie van Business Intelligence staat ook dat mensen de informatie in het juiste formaat moeten krijgen. Deels sluit dat aan bij het bovenstaande verhaal over soorten beslissingen. Deels gaat het ook over de mensen die de informatie moeten krijgen en hoe die mensen werken. Operationele rapporten zijn heel vaak lijstjes. Bijvoorbeeld een lijst van klanten van wie het abonnement bijna afloopt, of een lijst van mensen die trial software van de website hebben gedownload. Of een lijst van producten waarvan de voorraad onder een kritieke grens is gezakt, en ga zo maar door. Bij tactische beslissingen horen vaker rapporten die in één oogopslag de stand van zaken laten zien. Dashboards worden dan interessant. Dashboards laten vaak in een grafische weergave snel op hoofdlijnen zien hoe iets ervoor staat. Daar horen over het algemeen ook KPI’s bij. In figuur 1.2 ziet u een voorbeeld van een dashboard. Figuur 1.2 Dashboard uit SQL Server Management Studio Een KPI, kritischeprestatie-indicator (key performance indicator), laat zien hoe een actuele stand van zaken zich verhoudt tot een doelstelling of beoogde stand van zaken. Meestal gebeurt dat via een icoontje, een stoplicht, een smiley, een uitslaande meter, of vergelijkbare grafische indicatoren. Is bijvoorbeeld het ziekteverzuim groter dan de doelstelling, dan staat het stoplicht op het dashboard van de HRM-manager op rood. Extra bij een dashboard hoort vaak dat de gebruiker kan klikken om meer detailinformatie te krijgen, bijvoorbeeld het verzuim per afdeling, per dag. Rapporteren versus analyseren Zowel op tactisch als strategisch niveau is het analyseren van processen met behulp van gegevens ook vaak van belang. We moeten ons afvragen of rapporten geschikte tools zijn om te analyseren. Analyseren is iets dynamisch en rapporten zijn vrij sta- 10 Hoofdstuk 1 – Inleiding informatiemanagement tisch, zelfs als ze veel interactieve elementen zoals drill-down bevatten. Drill-down betekent zoveel als doorklikken naar meer gedetailleerde informatie. Rapporten zijn vooraf gemaakt, met een vooraf gedefinieerd doel. Analyseren kan je brengen op nieuwe terreinen, bij nog niet eerder gestelde vragen en dus bij informatie die nog niet is verwerkt in standaard rapporten. Maar met grafieken en draaitabellen kunnen we al een aardige stap maken. We zouden in een brainstormsessie willekeurige vragen moeten kunnen stellen (‘out of the box’ denken) en meteen de antwoorden moeten kunnen zien. Dat is waar analyseren echt begint en waar we voorbij het punt komen van wat rapporten te bieden hebben. Wie is de gebruiker? Een rapportagesysteem dat theoretisch perfect is maar niet gebruikt wordt, is een slecht systeem. De mensen moeten de rapporten wel gebruiken. Ten eerste moet de informatie op de rapporten dus kloppen, betrouwbaar zijn. Daarnaast moeten de mensen er prettig mee werken. Helaas is dat een subjectief verhaal. Neem een wat oudere directeur die nog net heeft leren e-mailen, maar voor alle overige computergerelateerde zaken afhankelijk is van zijn of haar secretaresse. Waarschijnlijk is het beste rapport in dit geval een rapport in PDF-formaat dat reeds door iemand anders is geprint. Maar iemand met veel meer computervaardigheden en met misschien zelfs een technische achtergrond en inzicht in de beschikbare ge­ gevens, neemt niet zomaar genoegen met een papieren uitdraai. Een rapport in Excel waar hij zelf zijn eigen filtering, sortering en zelfs bewerkingen aan kan toevoegen, is beter geschikt. Sommige bedrijven gebruiken Excel juist niet vanwege alle bewerkingen die mensen er dan nog mee kunnen doen. Dat komt de eenduidigheid en herleidbaarheid van de informatie namelijk niet ten goede. Met een beetje pech discussiëren we alsnog over welk rapport klopt, in plaats van het te kunnen hebben over door iedereen vertrouwde rapportages en daarmee over de inhoud. Wellicht is een rapport in HTML, dus op het scherm, met de juiste interactieve mogelijkheden wel een goede tussenoplossing. Het hangt allemaal af van de gebruiker. Dus is het kennen van de gebruiker en hoe een rapport gebruikt gaat worden een belangrijk aspect bij het ontwikkelen van rapporten. Analyse vooraf Samenvattend kunt u concluderen dat het heel belangrijk is om te weten met welk doel u een rapport gaat ontwikkelen en wie de gebruikers van het rapport zullen zijn. Welk proces moet ondersteund worden? Wie gaat er welke beslissingen op baseren? Hoe kunt u de benodigde kennis die een beslissing vergt het beste inzichtelijk maken? Wat zijn de vaardigheden van de gebruikers? Op basis van deze vragen moet, samen met de beoogde gebruikers, een rapportopzet gemaakt worden. U kunt sturen, en via prototypes mogelijkheden aandragen. De gebruiker moet het accepteren, de meerwaarde zien, en het rapport uiteindelijk gebruiken. 11 Aan de slag met Reporting Services 2012 1.6OLAP-kubus Een belangrijke vraag die bij het maken van een rapport beantwoord moet worden, is: waar zullen de gegevens vandaan komen? Tegenwoordig wordt veel gebruikgemaakt van OLAP-kubussen, en dus is er een goede kans dat SQL Server Analysis Services uw bron wordt. Analysis Services is de Microsoft-tool om kubussen te maken en te beheren. De afkorting OLAP staat voor Online Analytical Processing. Hier komen we het woord analyse weer tegen. En Analysis Services heeft zijn naam ook niet voor niets gekregen. In de vorige paragraaf is al gezegd dat rapporteren eigenlijk iets vrij statisch is, terwijl analyseren juist dynamisch moet zijn. Willekeurige vragen kunnen stellen en razendsnel antwoorden krijgen (‘free form questions, answers at the speed of thought’). Met een relationeel datawarehouse gaat dat zeker niet lukken. Voordat zelfs een ervaren SQL-programmeur de query heeft geschreven (of bij elkaar geklikt) is er al zo veel tijd verstreken dat we allang niet meer van razendsnel kunnen spreken. En dan moet de query nog uitgevoerd worden. Kubussen moeten aan dit probleem tegemoet komen. Excel on steroïds Een kubus zouden we kunnen zien als een grote, meerdimensionale draaitabel. Een gewone draaitabel bestaat uit twee assen en de snijpunten (cellen) van die assen. Op de ene as staan bijvoorbeeld alle producten die verkocht worden, op de andere as staan alle maanden van het jaar en in de cellen (elke cel is het snijpunt van een product met een maand) staat het aantal dat van het betreffende product in die maand is verkocht. Draaitabellen vormen een belangrijke reden waarom Excel zo populair is geworden. Een kubus kan je zien als ‘Excel on steroïds’. Het is een draaitabel zoals in Excel, maar dan niet beperkt tot twee assen, maar met net zo veel assen als u nodig heeft. Figuur 1.3 Draaitabel in Excel met omzet per productcategorie per jaar Denk nog eens terug aan het eerder besproken stermodel. Een stermodel bestaat uit een feitentabel met daarin voornamelijk numerieke zaken, zoals aantallen, omzet, marge, et cetera, en dimensietabellen met beschrijvende zaken die context (betekenis) geven aan de feiten. Dit sluit naadloos aan bij een kubus. De assen van de kubus zijn de dimensies, de cellen vullen we met de feiten. Omdat er meer dan twee dimensietabellen voorkomen in een stermodel, hebben we ook meer dimensies in een kubus. Kubussen worden dan ook wel ‘multidimensionele databases’ genoemd. 12 Hoofdstuk 1 – Inleiding informatiemanagement MDX Een tweede reden waarom Excel zo populair is, naast de draaitabelfunctionaliteit, is de rekenkracht. Met formules maakt u gemakkelijk berekende velden. Voor kubussen geldt weer hetzelfde. Zoals de taal SQL bij relationele databases hoort, zo hoort de taal MDX (Multi Dimensional eXpressions) bij kubussen. Met MDX zijn we in staat om relatief eenvoudig, complexe berekeningen te maken. Soms is een berekening in MDX gewoon eenvoudiger dan het programmeren van dezelfde berekening in SQL. Sommige berekeningen zijn in SQL helemaal niet mogelijk, maar wel in MDX. MDX heeft onder andere een rijke verzameling aan statistische en financiële functies die we kunnen gebruiken. En het resultaat van deze berekeningen kunnen we gebruiken om cellen te vullen en dus om de gegevens in de kubus te verrijken. Slice and dice Een uitdrukking die hoort bij kubussen, en die goed aansluit bij wat analyseren is, is ‘to slice and dice’. Dat vertaalt zich misschien het beste naar willekeurig door je gegevens browsen. ‘To slice’ betekent een ‘plakje’ uit je kubus snijden, oftewel een filter definiëren. Als we bijvoorbeeld geïnteresseerd zijn in omzetgegevens over 2012, dan zetten we een filter op jaartal. Alles wat vanaf nu uit de kubus komt, heeft alleen nog maar betrekking op 2012. Als we dus nu de lijst van producten met bijbehorende omzet opvragen, krijgen we alleen producten te zien die in 2012 verkocht zijn, met de bijbehorende omzet. ‘To dice’ betekent dat je willekeurige cellen in de kubus kunt benaderen door op de dimensies de juiste elementen (dimension members) te selecteren. Al met al kunnen we dus als het ware real-time door de gegevens in de kubus wandelen. Dat wil zeggen, als we de juiste tools hebben. Excel is zo’n tool. Het is een geweldige analyseomgeving die goed aansluit op kubussen (met name SQL Server Analysis Services). Reporting Services is goed in staat gegevens uit een kubus te halen en daar een rapport van te maken. Reporting Services behandelt de gegevens echter precies zoals het gegevens uit een relationele database behandelt. Het vuurt de query af op de database, in het geval van een kubus dus een MDX-query, en toont de gegevens in het formaat zoals de ontwikkelaar van het rapport heeft bedacht. Het interactieve element van willekeurig door je gegevens wandelen, is daarmee grotendeels weg. 1.6.1 Voordelen van kubussen Zoals hierboven beschreven sluiten kubussen goed aan op het begrip analyseren. Een kubus is als het ware een grote, krachtige spreadsheet met meer dimensies en een krachtige expressietaal. Maar er zijn meer voordelen. Het automatisch laten genereren van queries gaat beter dan bij relationele databases en de performance is (vaak) beter. Genereren van queries Onafhankelijk van het soort database moet er een query naar de database gestuurd worden om gegevens terug te krijgen. Voor een kubus is dat een MDX-query, voor een relationele databases is dat een SQL-query. Veel tools kunnen queries genereren. Daarnaast zijn er grafische tools die ons helpen queries in elkaar te slepen, in plaats 13 Aan de slag met Reporting Services 2012 van ze zelf te moeten schrijven. Voor beide geldt over het algemeen dat deze tools beter zijn met kubussen dan met relationele databases. Tools die queries maken, of die ons helpen queries te maken, zijn afhankelijk van het ontwerp van de database. Als in een relationele database geen relaties tussen tabellen zijn gedefinieerd (foreign keys), kunnen ze vaak niet de juiste query maken. Als dat wel lukt, is het nog maar de vraag of het ook een query is die goede performance zal laten zien. Bij het ontwerpen van kubussen wordt rekening gehouden met de gebruiker. Relaties tussen feiten en dimensies worden vastgelegd. Daardoor zijn tools veel beter in staat goede MDX-queries te genereren dan dat ze SQL-queries kunnen genereren. Dat houdt op zijn beurt in dat iemand met weinig kennis van de querytaal, maar met goede tools, met kubussen verder komt dan met relationele databases. Performance Kubussen hebben naast dat ze dynamisch analyseren faciliteren nog een ander voordeel. Bij veel analyses en rapportages is er sprake van een hoog aggregatieniveau. Om de dagomzet van een supermarkt te berekenen, moeten duizenden kassabonregels worden opgeteld. Om de landelijke dagomzet van de hele supermarktketen te berekenen of om de weekomzet te berekenen, wordt dat nog vele malen meer. Door die grote hoeveelheid data is dit soort operaties ogenblikkelijk duur, waarbij ik met duur denk aan performance. Rapporten die dit soort feiten tonen, zullen nooit een heel goede performance laten zien. Om de performance van rapporten die hooggeaggregeerde data tonen te verbeteren, wordt binnen datawarehouses vaak gebruikgemaakt van aggregatietabellen. Dat houdt in dat de dagomzet of weekomzet (of misschien wel beide) van de supermarkt ’s nachts berekend wordt. Van het resultaat van de berekening wordt een aparte tabel gemaakt. Het rapport kunnen we nu baseren op deze aggregatietabel. Daardoor is de hoeveelheid data die het rapport opvraagt veel kleiner en dat levert veel performancewinst op. Bovendien hoeft er niet meer gerekend te worden aan de data zoals die uit de database komt, wat nog eens veel performancewinst oplevert. Dubbele winst dus. Het nadeel van deze truc (de aggregatietabel) zit hem voornamelijk in de afhankelijkheid van het rapport met de aggregatietabel. De persoon die de query schrijft, moet op de hoogte zijn van het bestaan van de tabel en deze gebruiken, in plaats van de nietgeaggregeerde feitentabel te gebruiken. Een rapport met een net iets andere insteek kan misschien wel, maar misschien ook niet profiteren van dezelfde aggregatietabel. Maandomzetten zijn immers niet te berekenen uit weekomzetten, omdat een nieuwe maand halverwege een week kan beginnen. Dus het rapport dat maandomzetten toont kan geen gebruikmaken van de aggregatietabel met weekomzetten. Bovendien maakt een rapport niet automatisch gebruik van de juiste aggregatietabel. De query die de basis vormt van het rapport is hardcoded. Als we een rapport sneller willen maken door een aggregatietabel die aansluit bij het rapport alvast vooraf te maken, moet het rapport ook aangepast worden. 14 Hoofdstuk 1 – Inleiding informatiemanagement Bovenstaand probleem wordt, als een kubus goed ontworpen is, door kubussen opgelost. De oplossing is eigenlijk hetzelfde als wat hierboven beschreven is, namelijk vooraf al aggregaties berekenen en deze in de kubus opnemen. Tijdens het uitvragen van de kubus zijn daardoor minder berekeningen nodig waardoor we een betere performance mogen verwachten. Het grote verschil met aggregatietabellen in een relationele database is dat de ‘slimheid’ om deze aggregaties ook daadwerkelijk te gebruiken is ingebakken in de queryengine. Als we met MDX een geaggregeerde waarde opvragen uit de kubus, kijkt de kubus automatisch of er een aggregatie aanwezig is. De waarde wordt alleen berekend als er geen aggregatie aanwezig is. Als het goed is, gebruikt de kubus zelfs aggregaties om aggregaties op een hoger niveau te berekenen. Stel: er zijn aggregaties gemaakt voor maandomzetten en er wordt in een query om kwartaalomzetten gevraagd. In dat geval zal de kubus herkennen dat een kwartaal bestaat uit drie maanden, de drie betreffende maandomzetten ophalen, optellen, en het resultaat teruggeven. Het mooie hiervan is dat de query precies hetzelfde blijft. Als we dus constateren dat een rapport traag is omdat de onderliggende query geen gebruikmaakt van aggregaties, kunnen we de kubus aanpassen, zodat de juiste aggregaties in de kubus aangemaakt worden en het rapport zal deze automatisch gaan gebruiken. Samenvattend zijn er twee redenen waarom we rapporten zouden willen baseren op een kubus. Allereerst is dat de extra functionaliteit die wellicht al in de kubus zit. Met MDX kan de kubus verrijkt zijn met complexe berekeningen. Vanuit het perspectief van het rapport zijn die berekeningen gewoon cellen (velden) die we kunnen gebruiken zonder zelf complexe (en daarmee waarschijnlijk trage) queries te schrijven. Daarnaast biedt een kubus vaak voor vergelijkbare queries een betere performance, zeker als de queries niet om detailgegevens vragen maar geaggregeerde data opvragen. 1.6.2 Tabular Model Met SQL Server 2012 heeft Microsoft naast de boven beschreven kubussen ook de mogelijkheid gemaakt van Tabular Models. Tabular Models bieden ook goede performance, maar halen dat grotendeels uit het feit dat het in-memory databases zijn. Tabular Models staan een beetje op dezelfde plaats in een BI-architectuur, tussen het datawarehouse en de rapportagetools in. Ze moeten het makkelijker maken de data in het datawarehouse te ontsluiten. U leert meer over Tabular Models in Hoofdstuk 6. 1.7 Ontstaan SQL Server Reporting Services In 2004 kwam Microsoft SQL Server Reporting Services op de markt. In 2012 kwam Microsoft SQL Server 2012 op de markt. Nieuw in deze versie is Power View, een eenvoudig te gebruiken rapportagetool. Reporting Services heeft in eerdere versies als kritiek gekregen dat het vooral een tool voor techneuten was, ondanks het feit dat er verschillende tools meegeleverd werden voor verschillende doelgroepen. 15 Aan de slag met Reporting Services 2012 Visual Studio Reporting Services was flexibel van opzet, maar de rapporten moesten gemaakt worden in Visual Studio, dezelfde ontwikkelomgeving waarin ook websites en bijvoorbeeld Visual Basic-applicaties worden gemaakt. Dat was geen probleem voor ontwikkelaars, maar voor sommige gebruikers bleek dat een te moeilijke omgeving. En in de praktijk worden rapporten vaak gemaakt door de eindgebruikers van die rapporten en dus niet door ontwikkelaars. Report Builder Als alternatief voor Visual Studio was er de Report Builder. Dit was een eenvoudige drag-and-drop tool om rapporten mee te maken. Een eis voor het gebruik van de Report Builder was dat er een zogenaamd Report Model bestond. Een Report Model is een semantische laag. Semantisch komt van het woord ‘semantiek’, dat betekenis betekent. Het model heeft als belangrijkste doel een abstractielaag te vormen tussen de database en de rapportbouwer. Het idee is dat de rapportbouwer geen technische kennis nodig heeft van de onderliggende database en niet zelf queries hoeft te schrijven. Het model ‘vertaalt’ de technische aspecten naar businesstermen en genereert de benodigde queries. In theorie allemaal erg mooi, maar de functionaliteit van de rapporten bleef ver, te ver, achter bij wat met Visual Studio gemaakt kon worden. Report Builder 2.0 / 3.0 Als antwoord op de kritiek dat de functionaliteit tekortschoot, kwam Microsoft met Report Builder 2.0 en later met Report Builder 3.0. Nog steeds was het mogelijk rapporten te baseren op Report Models, maar het was geen vereiste meer. Daarnaast nam het aantal mogelijkheden van de rapporten sterk toe. Helaas is het in de praktijk meestal zo dat als een product meer mogelijkheden krijgt, de ontwikkelomgeving ook weer ingewikkelder wordt. En dus schoot Microsoft met de Report Builder 3.0 zijn doel voorbij: voor de doelgroep waarvoor deze tool was ontwikkeld, was hij ondertussen toch weer te complex geworden. En de mensen waarvoor dat niet geldt, kunnen net zo goed met Visual Studio werken om op die manier de volledige functionaliteit te hebben. Power View Power View is nu het antwoord van Microsoft. Power View beoogt net als de eerste Report Builder een eenvoudige tool te zijn waarmee iedereen die een beetje met een computer overweg kan, rapporten kan bouwen. Veel van de ondertussen vertrouwde functionaliteit van Reporting Services vinden we er niet in terug. En van veel van die zaken is het nog maar de vraag of we die ooit gaan krijgen. Microsoft wil niet weer de fout maken van Report Builder 3.0. Bij Power View voelt het echter niet als beperking. Het biedt mooie functionaliteit en heeft een ander doel dan rapporten gemaakt met Visual Studio. Er is een belangrijke overeenkomst met de eerste Report Builder: rapporten die u maakt met Power View zijn gebaseerd op een model. Voor Power View is dat Analysis Services Tabular Model, oftewel het Business Intelligence Semantic Model. Dit borduurt voort op de introductie van PowerPivot in Excel en wordt gebouwd in SQL Server Analysis Services 2012. Meer hierover leest u in Hoofdstuk 6 en 7. 16 Hoofdstuk 1 – Inleiding informatiemanagement 1.8 Tot slot SQL Server Reporting Services is een tool om gegevens uit databases te tonen aan gebruikers. Gebruikers kunnen hier beslissingen op baseren, ze kunnen werken met informatie. Reporting Services kan gebruikt worden om operationele rapporten op productiedatabases te maken, maar ook om strategische rapportages te maken die op grote datawarehouses gebaseerd zijn. Reporting Services komt met een paar tools. Uiteraard zijn er de tools om de rapporten mee te maken, met verschillende tools voor mensen met verschillende achtergronden. Ook zijn er tools om een rapportageomgeving mee te beheren. De rest van dit boek richt zich op wat Reporting Services te bieden heeft en hoe u Reporting Services kunt gebruiken. In het volgende hoofdstuk leert u eerst hoe Reporting Services te installeren. Hoofdstuk 3 en 4 gaan over het maken van rapporten in SQL Server Data Tools, oftewel Visual Studio. Hoofdstuk 5 richt zich op het beheer van de rapporten die u in Hoofdstuk 3 en 4 heeft gemaakt. In Hoofdstuk 6 gaat u een Business Intelligence Semantic Model maken om daar in het laatste hoofdstuk, Hoofdstuk 7, met Power View rapporten op te baseren. 17 Index A Action 100, 109 Advanced Mode 63, 99 Afdelings-BI 147 aggregate functies 74 aggregatietabel 14 Allow Multiple Values 90 B Background color 63 bar chart 106 Bookmark 100 Browser 141 Bubble Chart 188 Business Intelligence 2, 8 C Cache Refresh Options 130 cache warming 137, 139 caching 94, 127 Calculated Field 77 Card 186 CDATE 86 Chart Data Region 57, 106 color 63 Column Groups 72 CONCATENATE 156 conditionele opmaak 69 connectiestring 45 Corporate BI 145 D dashboard 10 Data Alerts 143 Data Bar 110, 111 Data-driven Subscriptions 135 Data Region 57 Dataset 47 Shared Dataset 47 DataSetName 59 Data Source 45 Shared Data Sources 45 datawarehouse 4 DATEADD 166 datumtabel 165 DAX 155 Default Field Set 167 Default Image 168 default instance 23 Default Label 168 deployen 119 diagramweergave 158 dimensies 6 DirectQuery 171 Document Map 96 double-hop 126 drill-down 97 drill-through 97, 101, 108 Duplicate View 185 E E-mail Settings 32 Embedded Connection 50 Encryption Keys 32 ExecutionTime 67 exporteren naar PowerPoint 182 Expression Builder 66 F feitentabel 6 Fields-collectie 76 filteren 84 filters 181 footers 64 friendly name 149 G Gauges 110, 115 Globals 67 Globals-collectie 76 Groepen 72 group footer 73 group header 73 H headers 64 HideDuplicates 72 Hide from client tools 164 hiërarchie 158 I IF 166 IIF 69 Image 64 Impersonate 126 Indicator 110, 113 interactive page size 115 intermediate report 128 Internal 89 K Keep Unique Rows 167 Kerberos 126 KPI 10, 110, 113, 169 kubus 12, 160 L Label Field 89 Language 60, 62 Layout-toolbar 66 lay-outvenster 178 Linked Reports 134 List Data Region 57, 103 Lookup 102, 114 LookupSet 102 M Manage Cache Refresh Plans 130 managed service account 26 Manage Parameters 134 Manage Permissions 143 Manage Processing Options 131, 132 Manage Subscriptions 137, 139 Map 110 213 Aan de slag met Reporting Services 2012 Matrix Data Region 57, 107 MDX 13 multidimensionele database 12 Multiples 189 N naamgevingsconventie 45 named instance 23 New Project... 43 NoRowsMessage 87 Now 86 Null Delivery 137 O OLAP 1, 12 OLTP 1 OverwriteDatasets 121 OverwriteDataSources 121 P page breaks 75 page headers en footers 64 PageNumber 68 page size 115 paginanummers 68 parameter 84 Defaultwaarde 86 Parameters collectie 85 Personal BI 145, 147 Perspectives 171 pie chart 106 Placeholders 67 Play Axis 189 Pop out 181 PowerPivot Gallery 39, 175 PowerPivot-veldenlijst 151 Power View 16 Preview 59 Processing Options 129 Property venster 59 publiceren 119 pull delivery 135 push delivery 135 Q Query Designer 54 214 R RDL 50 regional settings 61 RELATED 155 renderformaten 115 Report Builder 16 Report Builder 3.0 39 Report Data-venster 50 Report History 132 Reporting Services Configuration Manager 27 ReportItems-collectie 75 Report Manager 22 ReportName 67 Report Parameter Properties 85 Report Server Project 44 Report Server Project Wizard 44 Row Groups 72 Row Identifier 167 RowNumber 70 rs.exe 123 rsreportserver.config 33 RunningValue 76 S Scatter Chart 187 scorecard 113 security 140 Selfservice BI 145, 147 service account 26 SharePoint Central Administration 35 slicers 152, 183 Snapshot 130 Snapshot Options 132 Solution Explorer 44 Sorteren op kolom 156 sortering 71 Sparkline 110 SQL Server Data Tools 25 SQL Server Installation Center 34, 35 staafdiagram 106 static members 99 stermodel 5 Stored Procedure 53 Sub Report 107 Subscriptions 135 SUM 164 Switch 70 T taartdiagram 106 Table Behaviour 167, 169 Table Data Region 57 Tablix 58 Tabular Model 161, 162 TargetDatasetFolder 120 TargetDataSourceFolder 120 TargetReportFolder 120 TargetReportPartFolder 120 TargetServerURL 119 templates 102 textbox 59 Tiles 185 time-outs 133 ToggleItem 98 toolbox 57 TotalPages 68 TOTALYTD 165 trends 110 U UserSort 72 V Value Field 89 valuta 62 veldenlijst 153 Verbergen voor clienthulpprogramma’s 153 Views 54, 185 Visibility 98 W Web Service URL 30 Windows Authentication 126 Y Year 86 Over de auteur Peter ter Braake is zelfstandig SQL Server docent/consultant. Hij is MCT sinds 2002 en SQL Server MVP sinds begin 2012. Hij werkt met SQL Server Reporting Services sinds de eerste release in 2004. 978 90 395 2721 4 123 9 *uklpdo#bxmxyv* Aan de slag met Reporting Services 2012 Ook alle instellingen die u kunt kiezen voor rapporten nadat ze in gebruik zijn gekomen, komen aan de orde. Dankzij de opgaven biedt het boek voldoende mogelijkheden om te oefenen en ervaring op te doen. Zo kunt u de behandelde stof direct in de praktijk toepassen. Aan de slag met Reporting Services 2012 is bedoeld voor studenten en professionals die met Reporting Services gaan werken. Voorkennis van Reporting Services is niet noodzakelijk, maar kennis van het Microsoft-platform is een pre. Daarnaast is het in de praktijk onontbeerlijk om enige kennis te hebben van SQL of als u met kubussen wilt werken, van MDX. ter Braake Microsoft SQL Server 2012 Reporting Services is een uitgebreide tool om rapporten mee te maken, te beheren en te gebruiken. Het biedt vele mogelijkheden en opties en is bruikbaar in zowel de kleinste, alsook de grootste en meest kritische omgevingen. De beste manier om een uitgebreid product zoals Reporting Services te leren kennen is er actief mee te werken. Dit boek is geschreven om u daarbij te helpen. Stap voor stap wordt u begeleid bij het installeren van Reporting Services en vervolgens bij het maken van rapporten. Bij alle keuzes wordt stilgestaan bij de mogelijke opties en wanneer te kiezen voor welke optie. Zo leert u al doende goede en duidelijk rapporten te bouwen en ze te gebruiken. Aan de slag met Reporting Services 2012 voor Microsoft SQL Server Peter ter Braake