Tag med til SQLBits XIV i London

SQLBits Superheroes

I starten af marts – mere præcist d. 4.-7. marts afholdes Europas største SQL Server konference i London. Jeg har booket hotel og flybilletter – har du? Det bliver min 5. deltagelse til SQLBits, da jeg tidligere har været i York, Brighton, London og Nottingham. Alle rigtig gode oplevelser med en dejlig “nede på jorden” atmosfære og et højt fagligt niveau.

Denne gang er temaet “Superheroes” og konferencen er større end nogensinde og strækker sig nu over fire dage med mange forskellige typer af sessions. Agendaen er netop offentliggjort og alle de store “stjerner” kommer og holder indlæg. Tilmed har jeg fået en plads i rampelyset, da jeg om lørdagen skal præsentere “Excel Services 2013-the BI frontend of the future“. Det er første gang jeg skal på scenen på SQLBits og jeg er super stolt og meget beæret over at blive udvalgt som speaker.

Sidst konferencen blev afholdt i London var vi over 50 deltagere fra Danmark og alle de gange jeg har deltaget, har Danmark været det bedst præsenteret land – hvis altså man ser bort fra England :-) Jeg er meget spændt på, hvordan det danske deltagerantal bliver i år, da PASS arrangere SQLRally Nordic i København i dagene lige op til. En konference med samme fokus og med rigtig mange af de samme gode speakere. En stor forskel er dog størrelsen på konferencerne – SQLRally Nordic har gang i 4 konference lokaler, mens SQLBits har gang i 11. Det giver næsten 3 gange så mange sessions at vælge i mellem på et givent tidspunkt. Læg dertil at SQLBits har 3 dage med sessions, mens SQLRally har 2 og så er SQLBits tilmed billigere…

Husk at meld dig ind i Danskere på SQLBits XIV LinkedIn gruppen, hvis du skal med. Vi bruger bl.a. gruppen til at arrangere en aften, hvor vi tager ud og spiser sammen.

Find hvilke rapporter der anvender embedded connection

Var ude ved en kunde i den forgange uge, som netop har fået ny DWH server. Jeg har gennem nogle år hjulpet dem med at opsætte en SharePoint BI løsning, hvor der anvendes en god blanding af Reporting Services, Excel Services og PerformancePoint Services. Skiftet til den nye DWH server har været problemfrit, da der blev opsat et alias på navnet fra den gamle server, som peger på den nye server. Udfordringen er nu, at kundes IT afdeling vil fjerne aliaset igen…

Så nu skal vi sikre at alle rapporter, dashboards m.m. bliver peget over på den nye server. Nemt nok med PerformancePoint Services, da det kun er muligt at oprette shared connectionsog disse så blot skal ændres. Også nemt med Excel Services, da vi her har opsat at der kun tillades “external data connections” og Excel rapporterne således ikke virker med “embedded data connections”. Samme mulighed findes desværre ikke med Reporting Services, så hvordan finder man rapporter der anvender embedded connections og dermed peger på det gamle server navn?

ReportServer databasen indeholder alle rapport definitioner (rdl-filer) i catalog tabellen. Det er gemt i binært format i content feltet:

CatalogTabel

Kan du finde rapporten med en embedded connection? Nej vel. Tricket er at konvertere det binære format om til XML og så udsøge det element, som viser om der anvendes en embedded eller shared connection. Det er ikke lige min spids kompetence, men Google kan som altid hjælpe. Bret Stateham har skrevet et godt og grundigt blogindlæg: http://bretstateham.com/extracting-ssrs-report-rdl-xml-from-the-reportserver-database/

Eksemplet går på at udtrække selve den query der anvendes i rapporterne. Rigtig rigtig smart, men ikke lige det vi har brug for. Det er bare at tage et kig på XML’en i en rapport med embedded connection og se hvad elementerne hedder:

ConnectionStringXML

Så skal sidste del af scriptet blot ændres til at udsøge DataProvider og ConnectString:

ConnectionStringSQL

Da disse elementer kun findes i rapporter med embedded connection, vil vi kun få listen over de rapporter der skal ændres. Ved den pågældende kunde var der ca. 20 rapporter, hvor vi så nemt kunne ændre til at de anvendte de shared connection der var opsat og var ændret til at pege på den nye server.

ConnectionStringResult

Det var da smart :-)

BI aspirant forløb igen til februar

Det er med stor glæde at jeg kan offentliggøre, at Orange Man afholder endnu et Microsoft BI aspirantforløb med start 3. februar 2015. Målgruppen er konsulenter/udviklere med ingen eller kun nogen erfaring, som har behov for at få styr på den praktiske anvendelse af teknologierne.

Forløbet er baseret på mange års dagligt arbejde med værktøjerne og er fuldt fleksibelt, så der er mulighed for at deltage i hele forløbet eller udvælge de moduler du/I finder relevante. Modulerne er som følger:

De 13 kursusdage bliver afholdt i Aarhus i perioden fra 3. februar til 21. april 2015. Der er Early Bird rabat ved tilmelding senest en måned inden det pågældende kursus.

BI med Office 365

Fredag d. 15. august holdte jeg indlæg på ERFA møde i SharePoint Bruger Gruppe (SPBG) under titlen “Self-service BI muligheder i Office 365“. Mødet blev afholdt hos Fastrup Software i Incuba i Aarhus. Jeg startede ud med en generel introduktion til Self-service BI og gennemgik derefter en end-to-end Power BI demo. Sluttede demoen af med at fokusere på Power BI sites – herunder Data Management, Q&A og Admin Center. Der blev også tid til en hurtig demo af Microsofts native PowerBI app på Windows RT.

Indlægget blev afrundet med en sammenligning af BI mulighederne i O365 E3/E4 (SharePoint Online), Power BI og on-premises 2013. Det er tydeligt at Microsoft har stor fokus på cloud og nedprioriterer de mange enterprise on-premises kunder, som også gerne vil have f.eks. Q&A og Enterprise Data Search.

PowerBI sammenligning

(1) Scheduled Data Refresh til Power BI er stærkt begrænset på hvilke enterprise datakilder det understøtter. (2) Reporting Services til Power BI blev vist frem til PASS BA konferencen og skulle eftersigende komme “late summer”.

Kan i øvrigt anbefale at “SharePoint BI and Power BI – Happy Together” session fra SharePoint Conference 2014 som ligger på Channel 9.

BI aspirant forløb for femte gang

KursisterForløbet med 14 kursusdage bliver afholdt i perioden fra 2. september til 9. oktober og er fuldt fleksibelt. Der er således mulighed for at deltage i hele forløbet eller udvælge de moduler du/I finder relevante.

Groft set er forløbet opdelt i tre dele, hvor de første to uger har fokus på de grundlæggende metoder og værktøjer. Det er de elementer, som enhver BI udvikler/konsulent som minimum skal kunne mestre. Basis delen indeholder følgende fem kurser og afholdes i uge 36 og 37.

Som en naturlig fortsættelse har næste del fokus på rapportering og analyse. På fire kursusdage i uge 39, får kursisterne overblik over hvad Microsoft, kan tilbyde af muligheder med SSRS, Excel, SharePoint og Office 365.

Sidste del går lidt dybere i de mere advancerede koncepter, som “all-round” konsulenten/udvikleren også skal have styr på. Kurserne afholdes i uge 41.

Klik ind og læs mere på: http://orangeman.dk/kursuskatalog/business-intelligence-aspirant-kursus/

Det samlede forløb giver de basale kompetencer med henblik på en certificering. Efter yderligere praktisk erfaring og ved at deltage på et udvidet opfølgningsforløb (http://orangeman.dk/kursuskatalog/business-intelligence-certificering-forlob/) vil man være klar til at tage eksamen. Opfølgningsforløbet er endnu ikke lagt i kalenderen, så kontakt os (Salg@OrangeMan.dk), hvis du ønsker at deltage.

Automatisk testning af kuber

Jeg havde lørdag d. 29. marts fornøjelsen at præsentere mit indlæg om automatiseret test af kuber på SQLSaturday #275, der blev afholdt i Microsofts lokaler i Hellerup. Et helt fantastisk arrangement, som jeg håber kan blive en tradition.

Mit indlæg har rod i en konkret kundeopgave, hvor der var behov for at automatisere test af en forholdsvis stor og kompleks kube, som var en del af et udviklings-setup med release hver tredje uge. Helt simpelt har jeg udviklet en metode til at udtrække snapshot af både kubens struktur (metadata) samt selve indholdet (data). Snaphot kan således fortages både før og efter deployment og derefter sammenlignes. Det er dog også muligt at sammenligne på tværs af miljøer eller henover tid ved f.eks. at foretage snapshot dagligt.

Kubens metadata eksponeres via en række DMV’er – f.eks. giver “SELECT * FROM $SYSTEM.MDSCHEMA_MEASURES” en liste over alle measures i kuben med et utal af properties. Ved at opsætte en LinkedServer kan det via en OpenQuery forespørgsel relativt simpelt gemmes i en tabel og wupti, så kan der opsættes en rapport som synligøre forskelle mellem to forskellige snaphot. Tilsvarende kan opsætte via andre DMV’er, så metadata for dimensioner, attributter, measuregroups m.m. kan sammenlignes.RapportMetadataSamme metode med OpenQuery og LinkedServer kan anvendes til udtræk af data, som dog kun kan blive et udsnit – men hvordan udvælges et repræsentativt udsnit? Og hvordan håndteres, at data helt naturligt ændrer sig over tid? I min konkrete opgave valgte jeg at udtrække data for alle measures over flere forskellige tidsperioder (32 dage, 13 måneder og 5 år) filtreret på en anden gennemgående dimension. MDX forespørglen er opsat forholdvis dynamisk med flere forskellige parametre – f.eks. med en offset dato, så der kan udtrækkes data tilbage i tiden. Listen over measures i kuben kan fåes via enten metadata snapshot eller via “Measures.AllMembers” – bemærk dog at Measures.AllMembers kun giver de synlige measures og at en liste via metadata kan blive meget lang og dermed få forspørgslen til at overstige begrænsningen på 8000 tegn.

Via en række linked rapporter kan eventuelle forskelle mellem snapshot synliggøres og om der findes et mønster – er det kun enkelte measures og/eller på konkrete tidsperioder?RapportTil demo for mit indlæg har jeg opsat eksempel på AdventureWorks kube databasen deployed på to forskellige instanser, hvor jeg har jeg ændret i både struktur og indhold i kuberne. Jeg har uploaded både slides og demo-filerne, så I selv kan afprøve metoden. Jeg har kun tilpasset et udsnit af min kundeopgave til at virke på AdventureWorks, så der er uden tvivl behov for at tilpasse og udvide, hvis det skal anvendes professionelt :-)

Foruden min egen udviklet metode, har jeg også med succes anvendt Microsoft BI test frameworket NBi, som har sin klare styrke i at teste dele af kuben. Det er en udvidelse til NUnit, hvor der kan opsættes test-cases via xml-syntax – f.eks. teste antal af members i en specifik attribut, performance på afviklingen af en specifik mdx eller sammenligne små resultatsæt. En anden styrke er at der kan opsættes tresholds – f.eks. at antallet af members skal ligge mellem 15 og 25 eller værdien af et measure skal være mellem 0 og 1. Perfekt til at teste at de ændringer man ligger i produktion er slået rigtigt igennem.

Begge disse løsninger komplementere hinanden godt, men kan også fint anvendes uafhængigt. Tjek begge ud og se hvad der passer i dit/jeres setup.

Self-Service BI ressourcer

Som opfølgning på et tre dages kursus jeg afholdte i sidste uge, har jeg samlet links til en række yderligere ressourcer. Kurset var overordnet opdelt i en dag med Report Builder og to dage med Excel, hvor den første dag havde fokus på data modellering og den næste på præsentation/rapportering.

Power Pivot:

DAX:

Power Query:

Reporting Services:

Dette er på ingen måde udtømmende, men en god start, hvis man skal arbejde videre med Microsoft Self-Service Business Intelligence. Kan personligt anbefale alle ressourcerne :-)

Hvis du har en god ressource, så smid den i en kommentar. Tak!

Automatisk kube dokumentation i Reporting Services

Dette indlæg har stået på min liste i snart tre år, så nu er det vidst på tide jeg får det skrevet. Alle Microsoft BI udviklere har nemlig krav til denne information, da vi som udgangspunkt alle hader at dokumentere og elsker at automatisere trivielle opgaver :-)

Skal skynde mig at tilføje, at alt kredit går til Alex Whittles fra det engelske BI konsulentfirma Purple Frog. Jeg deltog tilbage på SQLBits VIII til hans session om “Automating SSAS cube documentation using SSRS, DMV and Spatial Data“, hvorefter jeg begyndte at bruge den kode han lagde tilgængelig på sin blog. Har implementeret det med stor succes ved en håndfuld virksomheder.

Det går i alt sin enkelthed ud på at trække metadata ud af kuben via de DMV’ere som er tilgængelige, hvorefter det kan præsenteres i en række SSRS rapporter, som er indbyrdes linket sammen. Som en cool detalje er “Dimension Usage” vist grafisk i stjerne skema – tegnet via den map engine der ligger i SSRS. Der er nok ikke mange, som er klar over, at det faktisk er en tegne motor. Allan har skrevet et mere detaljeret indlæg om dette emne “Drawing a logo or diagram using SQL spatial data“.

JavascriptJeg har foretaget en række udvidelser af udtræk og rapporter, hvor den største er muligheden for at tilknytte kommentarer til de forskellige elementer direkte via rapporterne. Der er til hver objekt indsat et lille edit-ikon, som via en action og lidt javascript åbner en lille rapport i et pop-up vindue.

MeasureListe

Det som angives i parameter-input bokse bliver via en stored procedurer gemt i en tabel ved klik på “View Report”. Der anvendes et merge-statement, så det er muligt også at foretage rettelser.

InputWindow

Indrømmet – det er lidt en høker løsning, men det er smart at have præsentation og indtastning samlet i den samme “applikation”. Alle objekter i kuben har unikke navne, så det er meget simpelt at gemme i beskrivelser af dimensioner, attributter, measures m.m. i den samme tabel. Har i et tilfælde udvidet, så der udover beskrivelse, reference id og link også er mulighed for at angive den primære kilde – herunder kildesystem, tabel og felt.

Når jeg har præsenteret denne løsning har flere foreslået, om jeg ikke skulle lave noget write-back til kuben, så beskrivelserne ikke kun er tilgængelige via rapporterne. En rigtig god ide, som burde kunne laves via lidt xmla. jeg har dog valgt ikke at gå videre med det, af den simple grund, at Excel ikke formår at vise “Descriptions” fra measures.

Af andre udvidelser jeg har lavet, kan nævnes visning af “attribut properties” under dimensionerne. Endvidere har jeg i BUS matice og stjerne-skemaer tilføjet markering af mange-til-mange relationer. Denne type relation kan være en virkelig dræber for query performance og derfor rar, at være lidt opmærksom på.

SjerneskemaM2M

En anden lille detalje er tilføjelse for mulighed for at skjule/vise “hidden” objects, som i nogle tilfælde er fine at kunne se og andre tilfælde bare støjer. Derudover har jeg i rapporten med measures taget de expressions der angiver aggregering- og data type og ført tilbage i stored procedurer.

Slutteligt kan nævnes, at jeg netop nu sidder med et projekt, hvor jeg gemmer de meta-data der udtrækkes, så det er muligt at sammenligne kubens udvikling over tid samt danne sig et overblik over forskelligheder mellem miljøer. konkret handler det om at foretage automatisk unit test af kuber, hvilket jeg holder indlæg om på MsBIP møde nr. 18 og SQLSaturday #275.

justB SSAS Maestro

ssasmaestro2Jeg deltog tilbage i marts 2011 i det første SSAS Maestro kursus, som Microsoft afholdte. Det var 3-dages undervisning i super hurtigt tempo med mega højt fagligt niveau (level 500) sammen med toppen af poppen indenfor SSAS. Med på kursusbænken sad bl.a. Chris Webb, Marco Russo, Alberto Ferrari og Tomislav Piasevoli, som alle har skrevet bøger indenfor emnet. Alt i alt en kanon fed oplevelse!

Undervejs på kurset blev der arbejdet på labs, som dog var så krævende at man ikke kunne nå at lave alle opgaver. De skulle så laves færdige efterfølgende, hvor der også skulle gennemføres en meget opfattende eksamen og skrives en case study. Dette ved siden af fuldtids konsulent arbejde, så det blev til mange lange lange aftener i ugerne efter.

Efter et halvt års ventetid fik jeg endelig svar – desværre at jeg ikke havde bestået i første forsøg, men at jeg var kvalificeret og meget tæt på. Jeg var selvfølgelig umiddelbart skuffet, men kunne også se at der var flere som fortjente det mere end mig. Ud af 90 som havde deltaget på de tre første kurser, var der kun 10 som havde bestået.

Overraskelsen var derfor mega stor, da jeg forleden kunne se, at mit navn nu optræder på listen. En liste som er udvidet til 36 personer, efter at der i anden runde er kommet lidt flere til. Mit navn kan derfor meget muligt have stået der i over et år. Lidt vildt og noget uventet, at jeg er blevet optaget i så fint et selskab. Det skal siges at jeg indenfor de seneste par år har fået en del mere erfaring med særligt performance tuning af SSAS – så jeg føler godt jeg kan stå inde for titlen :-)

Jeg vil gerne sende en særlig tak til Platon, som gav mig mulighed for at deltage på kurset og specielt stor tak til den anden danske SSAS Maestro Michael Barrett. Han gav review på min case study og er generelt altid klar på en SSAS sludder. Også tak til Vestas som lagde empiri til min case study.

Føler lidt at det forpligter, så vil gerne give noget tilbage. Jeg har allerede holdt flere indlæg om emnet, men overvejer om jeg skal fokusere endnu mere. Det er dog svært, da jeg har en anden stor kærlighed indenfor Microsoft BI – nemlig PerformancePoint Services og generelt BI i SharePoint. Jeg vil gerne prioritere SSAS op på denne blog og har allerede forberedt de næste 6 emner – glæd jer :-D

BI aspirant forløb starter igen februar 2014

Det er med stor glæde at vi kan annoncere at Orange Man afholder endnu et aspirant forløb. Det bliver det fjerde forløb og det er denne gang udvidet fra 9 til 13 dage. Front-end delen er udvidet fra kun at omhandle Reporting Services til nu også at inkludere Excel, SharePoint og Office 365. Derudover er “BI infrastruktur og Kerberos” og “Introduktion til MDX” også kommet med i forløbet.

Forløbet er fuldt fleksibelt, så der er mulighed for at deltage i hele forløbet eller udvælge de moduler du/I finder relevante. Modulerne er som følger:

De 13 kursusdage bliver afholdt i perioden fra 4. februar til 26. marts 2014. Klik ind og læs mere på: http://orangeman.dk/kursuskatalog/business-intelligence-aspirant-kursus/