Tanken att släppa ut ägandeskapet och hanteringen av masterdata bort från IT och ut till verksamheten som brukar äga stora delar av frågorna om data och definitioner är bra.
Tankesättet låter bra (self-service, demokratisera IT osv), men då MDS-miljön är så pass öppen som den är så är det lätt att spagettin kokar upp snabbt (och det gillar ialla fall inte min vänstra hjärnhalva).
I takt med att antalet modeller och entiteter växer så kan det snabbt bli svårt att få en överblick.
Sätt prefix på Entiteter, exvis
MDS_ entiteter som skapas i MDS
MAP_ entiteter som har ett domänattribut, dvs ett attribut vars värden skapas i en annan entitet
DW_ entiteter som läses in från ett annat system, exvis ett DW och berikas med attribut i MDS.
De huvudsakliga objekten i MDS är Modell, Entitet och Attribut, här kan du läsa mer om grunderna.
Data ut från MDS till andra system, exvis ett DW sker via integrationsvyer. Alla integrationsvyerna för entiteterna i de olika modellerna hamnar i samma schema i MDS-databasen, så där bör man också ha ordning via namnsättningen.
Exvis en modell Scorecard och Entitet Försäljningsmål så blir namnet på integrationsvyn Scorecard_MDS_Försäljningsmål
Men det behöver inte stoppa med namnstandarder och ordning.
Jag vill få bort så mycket manuellt arbete som möjligt i BI-projekten och det är fortfarande många klick och inmatande för att få till det i MDS.
Excel-addin för MDS underlättar mycket,
Jag tänkte visa ett alternativt sätt istf MDSModelDeploy.exe att få in MDS i den vanliga projekthanteringen, så att lösningen kan deployas och versionshanteras precis som all annan kod.
Då kan vi skapa T-SQL som skapar modeller, entiteter, attribut och integrationsvyer.
Grunden är ett T-SQLscript som genererar ett T-SQL script, och det är detta som versionshanteras och används i deploy.
Miljön jag själv jobbar med är SQL Server 2016 och Visual Studio.
Om vi börjar med att titta på hur vi kan dra ut definitioner från MDS och spara de som T-SQL script så är pseudokoden
Definitioner
{
För Varje Modell
-- Skapa Create Model Script
-- För Varje Vanlig (MDS/DW) Entitet
---- Skapa Create Entity Script
---- För Varje Attribut
------ Skapa Create Attribute Script
-- För Varje MAP-Entitet
---- Skapa Create Entity Script
---- För Varje Attribut
------ Skapa Create Attribute SCript
-- Skapa Subscription Views
}
-- Data
{
För Varje Modell
-- För varje vanlig Entitet (MDS/DW) som har en Subscription View
---- Generera script med data som ska insertas
}
I kommande inlägg kommer jag visa med körbar kod hur det går till.
Säkerheten har jag valt att inte lägga in i denna version 1, men det står på TODO-listan till version 2.
Generera INSERT-script av data tänkte jag också ta upp i senare inlägg så jag hoppas vi höres/läses igen!