DATA- WAREHOUSE ONTWIKKELING

Vergelijkbare documenten
Sparse columns in SQL server 2008

EN D3.JS SQL SERVER 2016 GEAVANCEERDE VISUALISATIES MET

Medical Intelligence in de praktijk

SQL manipulatietaal. We kunnen er data mee toevoegen, wijzigen en verwijderen uit een database.

6. Het maken van een database

Data Definition Language

Van CaseTalk naar een database in SQLite studio

DBMS. DataBase Management System. Op dit moment gebruiken bijna alle DBMS'en het relationele model. Deze worden RDBMS'en genoemd.

[TOETS SQL INLEIDING]

NHibernate als ORM oplossing

Lekker snel XML met SQL (.nl)

Zonnepanelen Hoe krijg je de data op je website?

DATAMODELLERING ER DIAGRAM

SQL is opgebouwd rond een basisinstructie waaraan één of meerdere componenten worden toegevoegd.

ETL-Generator (2) Thema Data-integratie. Drie componenttypen in de gegevenslaag

DATAMODEL SQL. Middelbare School. Versie 1.0 Datum 30 oktober 2010 Auteur Mark Nuyens, studentnummer: Groep TDI 1

opstarthandleiding mysqlworkbench November 2012 Fons van Kesteren HVA- CMD- V1 Datamodelleren

Informatie & Databases

Na bestudering van dit hoofdstuk, moet je tot het volgende in staat zijn:

TaskCentre Web Service Connector: Creëren van requests in Synergy Enterprise

SQL datadefinitietaal

Dataconversie met Oracle Spatial

XML als bron in een Microsoft datawarehouse

Databases - Inleiding

12. Meer dan één tabel gebruiken en sub-queries

Data Warehouse Script Generator Doel

Elfde-Liniestraat Hasselt Schooljaar TINFO POKER GAME Oracle Scripts

Technisch Ontwerp W e b s i t e W O S I

Koppeling met een database

De plug-in is heel eenvoudig te installeren met een setup-programma. Waarna je een aantal menu opties in het tools menu er bij krijgt.

DBMS SQL. Relationele databases. Sleutels. DataBase Management System. Inleiding relationele databases. bestaan uit tabellen.

Technische nota AbiFire Rapporten maken via ODBC

Tools voor canonieke datamodellering Bert Dingemans

Inhoudsopgave. Theorie Praktijk Gegevens uit Database halen DML commando s... 14

Rapporten. Labels en Rapporten in Atlantis 1. Atlantis heeft twee manieren om output te genereren: 1. labels 2. rapporten (reports)

Les 2 Eenvoudige queries

Magnutude 2012 Efficient BI. 18 september Joost de Ruyter van Steveninck

Toon TITEL, JAAR en PLATVORM van GAMES die voor het jaar 2000 uitkwamen op Nintendo 64

Inhoud. Voorwoord Belangrijkste kenmerken van dit boek De opzet van dit boek Over de auteur Woord van dank

MA!N Rapportages en Analyses

Autorisatiepolicy s in een datawarehouse

Gebruikers Handleiding

Genereren van mappings

DATAMODELLERING BASIS UML KLASSEMODEL

Open SQL Server Management Studio en log in als Administator. Je ziet dan wat je in figuur 2.1 ziet.

We moeten de accommodaties selecteren die 3 sterren hebben, en in land met ID 10 zitten.

Automatische Installatie op IIS server

Databank - Basis 1. Inhoud. Computervaardigheden en Programmatie. Hoofdstuk 4 Databank - Basis. Terminologie. Navigeren door een Venster

Oracle client 1.2 voor ixperion 1.3 en hoger

Kennis na het volgen van de training. Na het volgen van deze training bent u in staat:

Mijn eerste ADO.NET applicatie

Testen van Datawarehouses en Informa2e. Kan het 2x zo snel, 2x zo goedkoop en 2x zo volledig?

Een Data Driven toepassing op basis van Visual Objects en SQL Server

Hoe bouw ik een component? Drs. Arjan Burger

Titel Uw processen transparant met SAP Process Mining.

Business Intelligence. Toepassing BI Database en Datawarehouse BI proces BI Organisatie Implementatie BI

SQL & Relationele datamodellen in interactieve media

TESTAUTOMATISERING IN EEN ETL-OMGEVING

SQL SERVER Werking van Database Snapshots

Datamodelleren en databases 2011

Les 11 : Basis SQL (deel2).

Les 10 : Aanmaken van een database (deel2).

ARE methodiek Het ontwikkelen van Informatie Elementen

Databases en SQL Foundation (DBSQLF.NL)

Instellen back up Microsoft SQL database Bronboek Professional

Database Structuur via menus

Modelgedreven ontwerp van ETL-functies (2)

Installatie van sqlserver

Systeemontwikkeling, Hoofdstuk 6, Query s, macro s en rapporten in MS Access 2010

SAPLink plugin voor workflow objecten

Een website maken met databasetoegang.

Technische nota AbiFire5 Rapporten maken via ODBC

Gebruikers handleiding. Lizard Configuration Manager ToolTip. Installatie. Instellen. Initieel instellen

Technische documentatie Klankie 2010 voor systeembeheerders/installateurs

Datakwaliteitsborging met Oracle dynamisch SQL

SQL en XML. XML schema s & DMO. Entiteitsklasse en attribuut. SQL en XML. Datamodellering Schema een ruim begrip (zie Møller, p.

Data Vault in het Business Intelligence onderwijs. Dineke Romeijn HAN, ICA

1 Labo 4 H 8 Jobs, Alerts en Operators H 9 Monitoring en Troubleshooting

1 XML/CSV documentatie

Documentatie DHD thesauri Bijlage 1 : Uitleverformaat 2.2 Diagnosethesaurus

2 Specificatie In deze tabel staat voor welk crebotraject de leereenheid is gemaakt Crebotraject code: 95311

8. De invoer van gegevens

User accounts maken in een Wandy Hotspot, d.m.v. een batch.

Pijlers van Beheer. Bram van der Vos

naar een SQL-server Rev 01

Anchor Modeling. Wat is Anchor Modeling?

Canonieke Data Modellering op basis van ArchiMate. Canonieke Data Modellering op basis van Archimate Bert Dingemans

Javascript oefenblad 1

Handleiding Reinder.NET.Tasks.SQL versie 2

Snel gegevens importeren en updaten met Importeren uit Excel voor SAP Business One

Installatie MicroSoft SQL server 2012 Express

WERKEN MET INHOUDSTYPES. SharePoint Inhoudstypes FACTSHEET

Het belang van. Data Modellering. GEMINIT Training. Data Modellering. Frédéric BARBIER

Katholieke Hogeschool Kempen Campus Geel Departement Handelswetenschappen en Bedrijfskunde 3de jaar Toegepaste Informatica

Data quality tracking tool

Puzzelen met SQL 38. De Muzieklijst, deel 2 PUZZELEN MET SQL

Wijzigingen Universe OSIRIS Manager versie /02 augustus 2014

Transcriptie:

MODEL GEDREVEN DATA- WAREHOUSE ONTWIKKELING MET MICROSOFT BI door Willem Otten, Microsoft BI-consultant Kadenza Lees het volledige artikel en andere blogs op www.playitsmart.nl/blog Ik ben een groot voorstander van modelgedreven softwareontwikkeling en het automatiseren van het software ontwikkelproces. Met behulp van softwareontwikkeling werken we al jaren aan het automatiseren van verschillende processen in een organisatie, maar het bouwen van de software zelf is vaak nog een grotendeels handmatig proces. In dit artikel wil ik aan de hand van een eenvoudige voorbeeldimplementatie laten zien hoe een modelgedreven aanpak kan worden geïmplementeerd met technologie uit de Microsoft BI stack. VOORBEELDIMPLEMENTATIE: DE HOOFDLIJNEN Onderstaande illustratie geeft de voorbeeldimplementatie in hoofdlijnen weer: Een functioneel metamodel beschrijft de bronsystemen en het doelsysteem, het datawarehouse, in termen van entiteiten, attributen, onderlinge relaties en de mapping van bronentiteit of -attribuut naar doelentiteit of -attribuut. Op basis van dit functionele model wordt een technisch model gegenereerd. In het voorbeeld is dat een eenvoudige transformatie waarbij twee auditkolommen worden toegevoegd aan elke doelentiteit. Maar het zou ook een vertaling kunnen zijn van het functionele model naar een data vault of anchor-model. Vanuit het technische metamodel worden vervolgens enerzijds DDL-scripts gegenereerd voor het aanmaken van de database en anderzijds SSIS ETL-packages. Daarbij gebruik ik Biml en Bidshelper om de uiteindelijke packages te genereren. WAAR WE NAAR TOE WERKEN Als voorbeeld werk ik het volgende eenvoudige dimensionele model uit, gebaseerd op informatie uit de Adventureworks-database: DIM_ProductHierarchy ProductID ProductName ProductSubCategory ProductCategory dwh_loaddate dwh_loadsrc nvarchar100 nvarchar100 nvarchar100 datetime varchar100 SalesId ProductID DateID SalesOrder Quantity LineTotal dwh_loaddate dwh_loadsrc FACT_Sales datetime nvarchar100 money datetime varchar100 <fk2> <fk1> DIM_Date DateID date MonthOfYear Year MonthYear dwh_loaddate datetime dwh_loadsrc varchar100

Het resultaat van de voorbeeldimplementatie moet DDL zijn om het bovenstaand model te genereren, plus de SSIS-packages waarmee de dim_producthierarchy en fact_sales tabel worden gevuld. De datumdimensie vul ik met behulp van een tabelfunctie. HET LOGISCHE MODEL Voor de vastlegging van het logische metamodel maak ik gebruik van een SQL-database. Dat biedt een aantal voordelen: De opslag leent zich ervoor om met verschillende tools uit te vragen. Denk aan een modelleringstool om het model te vullen, SSRS-rapport om systeemdocumentatie te tonen, etc. Wijzigingen in het logische model kun je eenvoudig via SQL doorvoeren. De metadefinities van bronsystemen tabellen, attributen, etc laten zich via de SQL system views makkelijk inlezen in het model. In dit voorbeeld maak ik gebruik van het volgende logische metamodel: t_system systemid name description varchar20 varchar150 connectionstring varchar500 t_entity entityid systemid domain name varchar20 varchar20 <fk> description varchar150 target t_mapping mappingid targetentityid <fk> customfromclause varchar500 sourcesystemid attributeid entityid name description datatype length scale isbusinesskey ordernumber t_attribute <fk> varchar50 varchar150 varchar50 bit source target t_mappingattribute mappingattributeid mappingid sourceattributeid targetattributeid expression varchar100 <fk1> <fk2> <fk3> Met behulp van t_entity en t_attribute beschrijf ik de entiteiten binnen een systeem t_system. Met t_mapping en t_mappingattribute leg ik de mappings tussen entiteiten van bron- en doelsysteem vast, de lineage-informatie van het doelsysteem. Bovenstaand metamodel is een vereenvoudigd voorbeeld. In de praktijk zal een metamodel er uitgebreider uitzien, onder andere aangevuld met relaties tussen entiteiten. In het metamodel geef ik de volgende vulling op: Bronmodel Adventureworks voer ik als t_system op, met de entiteiten salesorder, salesorderdetails, product, productsubcategorie en productcategorie inclusief de bijbehorende attributen. Doelmodel AV_DWH voer ik op met entiteiten FACT_Sales, Dim_Producthierarchie en Dim_data. De mapping wordt opgegeven tussen de attributen uit Adventureworks en de attributen uit AV_DWH. Dit resulteert in de volgende vulling van het metamodel: T_entity

T_system T_attribute niet volledig T_mapping T_mappingattribute HET TECHNISCHE MODEL Zoals gezegd, kies ik in dit voorbeeld voor een eenvoudig technisch model. Het technisch model is een één-op-één vertaling van het functionele model, aangevuld met twee audit-kolommen bronsysteem en loaddate per doelentiteit. Omdat de transformatie naar het technisch model eenvoudig is, heb ik die met twee views geïmplementeerd: De view vw_technicalmodel geeft alle attributen terug, aangevuld met een dwh_loaddate en dwh_loadsrc kolom per entiteit. De view vw_technicalmappingattribute geeft alle mapping-attributen terug, aangevuld met mappings voor de twee audit-kolommen per entiteit. In complexere gevallen kun je ervoor kiezen om het technisch model in aparte tabellen op te slaan en de transformatie van functioneel naar technisch model met een stored procedure of ETL-package te implementeren.

Ter illustratie, het technische model voor DIM_ProductHierarchy DE DATABASE DDL Voor het generen van de database DDL gebruik ik een t-sql script dat met behulp van een cursor de create table statements samenstelt en deze pr naar de output. Er is bewust voor gekozen om hier geen elligentie in te bouwen die wijzigingen ten opzichte van een bestaand databasemodel kan detecteren. Er zijn genoeg tools, waaronder Visual Studio, die deze functionaliteit al bieden. De procedure hierbij zou dus zijn: het genereren van het nieuwe schema naar een lege database en die vergelijken via een passende tool met de bestaande versie om zo een change script te genereren. BIML-SCRIPT VOOR DE ETL In het voorbeeld wordt per doeltabel een ETL-package gegenereerd met een eenvoudige laadstrategie: Op basis van de Business key velden wordt bepaald of een record al bestaat. Is dat het geval, dan wordt er niets gedaan, anders wordt het record toegevoegd. Uiteraard is dit geen laadalgoritme dat in de praktijk veel toepasbaar zal zijn, maar voor de begrijpelijkheid van dit artikel heb ik gekozen voor een eenvoudig voorbeeld. Met behulp van een t-sql script wordt een Biml XML-file gegenereerd die vervolgens in Visual Studio kan worden gebruikt. Het script vraagt de benodigde gegevens op uit het functionele en technische metamodel en vertaalt dit naar een Biml-compatible XML-formaat met behulp van de XML-functionaliteit van SQL-server. De Biml-file bestaat uit de volgende onderdelen: Connectie-instelling voor bron- en doelsystemen. Package per doelentiteit met een dataflow task, met daarbinnen: - OleDbSource met bron-query. - OleDbSource met doel-query. - Merge join van bron en doel om te bepalen welke records al bestaan. - Derived columns operatie om audit-kolommen toe te voegen. - OleDbTarget om resultaat weg te schrijven. Het resultaat kan als Biml XML-bestand worden opgeslagen in Visual Studio. Onderstaande query geeft een beeld van hoe vanuit het metamodel een Biml-bestand wordt gegenereerd.

Hieronder staat de voorbeeld Biml-query uitgewerkt. Om de gewenste XML-structuur te krijgen, maak ik gebruik van subqueries en de for xml path... syntax. declare @targetsystem as varchar100 set @targetsystem = 'AV_DWH'; WITH XMLNAMESPACES DEFAULT 'http://schemas.varigence.com/biml.xsd' select Select Connection.name as Name, Connection.connectionstring as ConnectionString from t_system Connection for xml auto, type as "Connections", select Name, ConstraMode, ProtectionLevel, Select - - Tasks select Name, - - DataFlow SELECT - - Transformations /* Add datasource for each mappping */ select Name as "@Name", - - OleDbSource ConnectionName as "@ConnectionName", DirectInput, Select Select 'src_' + a.name as "@SourceColumn", case when a.isbusinesskey = 1 then ma.rownumber else null end as "@SortKeyPosition" from vw_technicalmappingattribute ma join t_attribute a on ma.targetattributeid = a.attributeid where ma.mappingid = package.mappingid for xml path 'Column', type for xml path 'Columns', type from vw_etltransformationsource as OleDbSource where OleDbSource.mappingID = Package.MappingID for xml path 'OleDbSource', type... for xml path 'Transformations', type FROM vw_etlpackage Dataflow WHERE DataFlow.mappingID = Package.MappingID for xml auto, type FROM vw_etlpackage Tasks WHERE Tasks.mappingID = Package.MappingID for xml auto, type from vw_etlpackage Package where Package.SystemName = @targetsystem for xml auto, type as "Packages" for xml path 'Biml'

GENEREREN VAN SSIS-PACKAGES Nadat je de Biml-file in Visual Studio hebt geïmporteerd, kun je die uitvoeren om SSIS-packages te genereren: Hierna worden de packages toegevoegd aan het project en zijn ze klaar om uit te voeren. DOCUMENTATIE Het functionele model ligt volledig vast in een database. Dit houdt in dat er ook goed over gerapporteerd kan worden. Onderstaand SSRS-report laat zien hoe een rapportage kan worden gemaakt van datamodel en lineage van een doelsysteem. Voorbeeld SSRS-report

CONCLUSIE Met dit voorbeeld heb ik geprobeerd aan te tonen hoe je met behulp van Biml een modelgedreven aanpak kunt hanteren in een BI-project en daarbij uitsluitend gebruik maakt van bekende Microsoft BI-technologie. Wanneer je een model gedreven product gaat ontwikkelen of selecteren zou ik de volgende uitgangspunten hanteren: Ontwikkel geen functionaliteit die andere producten al voldoende bieden Wanneer je een eigen product ontwikkelt heb je al snel de neiging om alles zelf op te lossen. Maak echter zoveel mogelijk gebruik van bestaande software en componenten in plaats van het wiel opnieuw uit te vinden. Denk hierbij aan de user erface om het logische model vast te leggen, het detecteren van changes in de database en versiebeheer op het model. Ontkoppel functionele definitie en implementatie Zorg dat de functionele definitie niet gekoppeld is aan een specifieke implementatie. Als het functionele model in datavault wordt gemodelleerd, is het erg lastig om hier later toch een andere modelleringsvorm van te maken. Als afleidingen in SSIS-syntax zijn vastgelegd, kun je hier moeilijk een andere ETL-tool voor inzetten. Het is handig om een abstractielaag in de vorm van een technisch model te roduceren waarin de technologie-specifieke zaken worden toegevoegd/vertaald vanuit het functionele model. Gebruiksvriendelijke user erface Het is van belang dat je eenvoudig en snel kunt modelleren. Wanneer je functionele modellen en mappings alleen via SQL of een beperkte user erface kunt onderhouden, zal er te weinig draagvlak zijn om het product te gebruiken. ZELF PROBEREN? Alle code die ik heb gebruikt in het voorbeeld vind je in onderstaande zipfile, inclusief instructies voor hoe je die lokaal kunt gebruiken. DOWNLOAD HET VOORBEELD ZIP BESTAND, 13 KB MEER INFORMATIE? NEEM CONTACT OP MET KADENZA MAIL INFO@KADENZA.NL OF BEL +31 035-5394490 WERKEN BIJ KADENZA? KIJK OP PLAYITSMART.NL