Donnerstag, 13. November 2008

Nachtrag zum PASS Treffen 2008/11 in Hamburg

Gestern Abend hatten wir wieder unser monatliches PASS Treffen. Das Rahmenthema war "Grundlagen über die SQL Server Replikation". Es gab neben meiner kleinen Einführung in das Thema auch noch sehr interessante Diskussionen mit den Teilnehmern rund um den Einsatz von Replikation Technologien. Wir werden das Thema wohl in 2009 erneut aufgreifen und vertiefen.

Des Weiteren verwies Markus Thomanek von MS abermals auf das Portal "eXperience the energy" zum Launch des SQL Server 2008 hin! Dieses ist in Deutschland leider relativ unbekannt, daher hier nochmal der Link:

clip_image001

Hier gibt es eine ganze Reihe von interessanten kurzen Screencasts zum neuen SQL Server 2008!

Dienstag, 11. November 2008

Grafikfutter für .net und Silverlight

Microsoft hat in den letzten Tagen die MS Chart Controls für .net (& asp.net) und das Silverlight Toolkit veröffentlicht. Zwar hatte ich noch keine Zeit mir die beiden Bibliotheken näher anzusehen, aber die verfügbaren Onlinedemos machen einen sehr spannenden Eindruck!

ChartSamples_thumb_1.jpg

Microsoft Chart Controls für Microsoft .NET Framework 3.5

Samples Environment for Microsoft Chart Controls

Controls Example

Silverlight Toolkit

Donnerstag, 28. August 2008

Wasserfalldiagramm mit asp.net erzeugen (Teil 3)

Das Projekt "Wasserfalldiagramm für OLAP Cubes" wird langsam Realität. Mittlerweile sind die ersten Sparklines eingebaut. Ich verwende dabei das von mir hier bereits vorgestellte asp.net Control. Mit diesen kann der Analyst nun direkt im Wasserfalldiagram sich den historischen Verlauf (24 Monate) des ausgewählten Dimensionselements anzeigen lassen.

image

Dummerweise kommen mir beim Entwickeln immer wieder neue Ideen. Damit muss nun aber für den Moment mal Schluss sein, da ich jetzt mein PowerPoint für Montag vorbereiten muss. Soviel Code steckt da noch gar nicht drin, dass ich nur mit diesem einen Vortrag "füllen" könnte. :o)

Dienstag, 19. August 2008

Wasserfalldiagramm mit asp.net erzeugen (Teil 2)

So, hier mal wieder ein Zwischenstand für das Projekt "Wasserfalldiagramm". Mittlerweile wird das Chart direkt mit Daten aus den Analysis Services des SQL Servers versorgt. Zwar ist noch nicht alles durch Meta Daten gesteuert, aber die gewählte Architektur zahlt sich langsam aus.

image

Auf dem Screenshoot ist der Adventure Works Würfel zu sehen. Hier wird gerade die Differenz zwischen dem Q1 2003 und Q2 2003 analysiert. Das Besondere an dem Diagramm ist u.a. der Wechsel der Dimensionen. Hier wird die Sales Territory Dimension analysiert. Dank des Tooltips kann erkannt werden, welchen Anteil UK daran hatte. Der Wechsel zwischen den Dimensionen ist schon einfach möglich. Noch sind die Werte nicht sortiert oder zu Gruppen zusammengefasst. Das steht noch auf der To-Do Liste.

image

Hier wird das identische Delta (Q1 2003 vs. Q2 2003) analysiert, aber nun ist die Subcategory dran. Natürlich soll sich auch der Zeitraum verändern lassen.

image

Dieses Diagramm zeigt wiederum die Dimension Sales Territory nun aber mit dem Delta des Zeitraums Q1 2003 zu Q1 2004.

Nun kommt ein wenig Interface dazu, damit mehr Interaktivität reinkommt. Mittels der AJAX Erweiterungen von asp.net bekommt das Ganze dann den Charakter einer Anwendung und nicht eines Web Clients. Abgerundet wird das dann noch durch die Sparkline Integration.

Im Hintergrund greife ich die Daten des OLAP Cubes mittels ADOMD.NET ab. Als Zugriffsmethode verwende ich ein CellSet. Ist zwar nicht der schnellste Zugriff, aber für die paar Zeilen reicht das völlig und dafür bekomme ich schöne Meta Daten mit. Dem internen MDXBuilder muss ich nun noch ein wenig Zeit Logik beibringen. Das eigentliche Waterfall Chart ist mittlerweile in ein asp.net Server Control gewandert und wird über die Properties gesteuert. Die Balken rendere ich immer noch einzelnen mittels einer extra asp.net Anwendung. Ein Vorteil ist, dass auch andere Anwendungen oder auch Entwicklungsumgebungen die Grafiken erzeugen können (z.B. PHP, Java usw.).

Die technischen Hintergründe zeige ich Mettmann auf der Mitgliederversammlung des PASS Deutschland e.V.

PowerPoint & DeepZoom = pptPlex

Die Microsoft Office Labs haben ein äußerst cooles Tool veröffentlicht:

pptPlex

Trotz einer Downloadgröße von nur 3,73 MB erweitert es das gute alte (und vielleicht langsam ein wenig langweilige) PowerPoint um eine sehr nützliche Form der Darstellung auf Basis von Silverlight Deep Zoom. Ich hatte mich ja schon mal als Fan von Deep Zoom geoutet und sehe für die Zukunft schöne Einsatzgebiete im BI Umfeld.

Wie sich PowerPoint mit pptPlex in Kombination "anfühlt" lässt sich schwer beschreiben. Es gibt Übersichten, es wird rein- und rausgezoomt und butterweich gescrollt. Nun ja, es ist sicherlich nichts für jede Präsentation und der eine oder andere wird vielleicht zuerst ein wenig überfordert sein, aber es ist definitiv ein Tool für mich! Und ich freue mich schon, dass bei meinem nächsten Community Vortrag einzusetzen! :o)

Leider oder auch zum Glück sind nun meine PowerPoint Tipps zum Teil überflüssig, weil das unprofessionelle Suchen nach einer Folie hat nun endlich ein Ende!

Ach ja, und wo gibst dieses Tool und diverse Videos zum Thema? Hier!

Mittwoch, 13. August 2008

Wasserfalldiagramm mit asp.net erzeugen (Teil 1)

Für meinen kleinen technischen Vortrag auf der Mitgliederversammlung am 1.9.2008 erstelle ich gerade das versprochene Wasserfalldiagramm. Nur wie sieht sowas eigentlich aus und wofür lässt sich so eine Darstellung überhaupt nutzen? Hier schon mal ein kleines Beispiel:

image

Dieses Diagramm stellt zwei Werte dar. Es könnten zum Beispiel zwei zeitliche Ausprägungen (Q1 & Q2) eines Measures wie Umsatz sein. Oder auch ein Soll- und ein Ist-Wert. Solche Darstellungen sind sehr oft zu sehen. Was hier aber eigentlich fehlt, ist die Information welche Veränderungen zu dem zweiten Wert geführt haben.

Also eine echte Informationslücke. :o)

Die Darstellungsform Wasserfalldiagramm (Waterfall chart) füllt diese Lücke. Hier ein Beispiel dafür:

image

Wieder unsere beiden Werte, aber nun sind die Veränderungen "sichtbar" geworden. Mit dieser Form der Darstellung lässt sich vieles deutlich plausibler visualisieren. Beliebt ist sowas auch bei der Deckungsbeitragsrechnung.

Umgesetzt habe ich das wieder mit einem kleinen asp.net Programm, welches jeweils einen Balken rendert. Im zweiten Screenshot sind daher eigentlich sieben einzelne Grafiken zu sehen. Der nächste Schritt in der Entwicklung ist die Nutzung von asp.net ajax, damit ich interaktiv Daten aus einem Analysis Services Cube nutzen kann. Also weg von der statischen Grafik, hin zur Business Intelligence Anwendung. Des Weiteren steht dann noch die Integration der Sparklines bzw. Microcharts Grafiken aus, mit denen sich der Anwender noch weitere Informationen einblenden lassen kann. Beschriftungen wären auch ganz nützlich.

Donnerstag, 7. August 2008

PASS Deutschland Mitgliederversammlung 2008

Am 1.9.2008 ist in Mettmann bei Düsseldorf die Mitgliederversammlung des PASS Deutschland e.V.!

Es geht ab 13:30 im bekannten Gut Höhne los! Das ist auch der Ort an dem das PASSCamp 2008 stattfindet.

Neben vielen wichtigen organisatorischen Punkten (u.a. die Wahl des Vorstandes), gibt es von Quest einen Contest und zwei Vorträge.

Einen Vortrag hält Brent Ozar von Quest. Der Vortrag hat den schönen Titel "SQL Server 2008: What’s New, What’s Great, Why it’s Worth the Wait". Darauf freue ich mich schon sehr!

Und zu meiner persönlichen Überraschung, wurde ich gebeten den zweiten Vortrag zu halten. Dieser hat den Titel "Community Dev Project - BI meets Web 2.0". Hier ist der entsprechende Abstract zur Session:

In dieser Session wird demonstriert, wie unter der Verwendung von aktuellen Microsoft Technologien ein Web Client für den Zugriff auf einen Analysis Services OLAP Cube unter SQL Server 2005 möglich ist. Als konkretes Beispiel für ein rollenbasiertes Frontend wird ein interaktives Wasserfalldiagramm vorgestellt. Des Weiteren wird die sinnvolle Integration von Sparklines an diesem Beispiel vorgestellt. Sowohl das vorgestellte Frontend als auch die genutzten Dienste für die Erzeugung der Grafiken sind Teil eines deutschen Community Projektes.

Ihr werdet dort das eine oder andere aus meinem Blog mal live erleben können. Des Weiteren werde ich das Wasserfalldiagramm exklusiv für diese Session entwickeln. Es lohnt also immer noch auf jeden Fall im Oktober in München vorbeizukommen. Da gibt es etwas anderes zu sehen!

Details zur Mitgliederversammlung findet Ihr unter http://mv.sqlpass.de. Ich würde mich sehr freuen möglichst viele von Euch dort begrüßen zu dürfen!

Zu guter Letzt noch einen Dank an die Organisatoren dieser für den Verein wichtigen Veranstaltung!

Dienstag, 5. August 2008

Treffen der PASS Gruppe Hamburg am 14.08.2008

Hier kommt der Aufruf zur Teilnahme am Treffen der PASS Regionalgruppe in Hamburg am 14.08.2008.

Dieses Mal wird ein ganz besonderes Treffen!

Es ist nämlich das erste Treffen, welches wir auf Basis eines sehr guten Vorschlags von Wayne Snyder (PASS President) organisieren. Wayne schlug beim Treffen der Regionalgruppen Verantwortlichen der PASS Deutschland in Neuss (während der European Conference) vor, dass es eine sehr gute Idee sei die Gruppe bzgl. der jeweiligen SQL Server Skills "zu entwickeln". Damit wäre die Themenauswahl der Treffen für die Zukunft nicht mehr nur noch an das rotierende Rahmenthema (Administration, Entwicklung und Business Intelligence) gebunden, sondern auch noch mit dem Ziel fortlaufend die Teilnehmer der Treffen in den Rahmenthemen weiterzuentwickeln.

Für das Treffen wurde uns freundlicherweise der Besprechungsraum der Firma Resco zur Verfügung gestellt. Vielen Dank an den Raumsponsor! Den ersten Vortrag für Grundlagen in der Administration hält Andreas Ewald.

Und warum wird das Treffen noch ganz besonders? :o)

Zufälligerweise liegt der Ort des Treffens direkt am Heiligen Geist Feld! Und es ist Hamburger Dom! Also steht einer anschließenden gemeinsamen Runde über den DOM nichts im Wege. Und mit Glück haben wir vom Konferenzraum aus eine quasi einmaligen Sicht auf das Heilige Geist Feld. So, mehr Gründe fallen mir nun wirklich nicht ein, warum Ihr nicht auch zu diesem Treffen kommen solltet.

Montag, 4. August 2008

Silverlight Beispiel online

Ich habe das kleine Beispiel für eine Kombination von Silverlight und die Reporting Services des SQL Server nun online gestellt. Das Sample verwendet DeepZoom aus Silverlight 2.0.

Unter www.saschalorenz.de/deepzoom könnt Ihr nun selbst mal durch die Adventure Works Reports surfen bzw. zoomen. Kleiner Tipp dazu: bei einigen Reports in der untersten Zeile habe ich wiederum in den Zeilen Detailauswertungen hinterlegt.

Das Ganze zeigt ganz die gut die Möglichkeiten, welche Business Intelligence Anwendungen mit Silverlight als Frontend kombiniert haben!

Mittwoch, 23. Juli 2008

Weiteres Sparkline Beispiel in asp.net

Auf Basis des Win/Loss Charts habe ich nun auch eine klassische Sparkline (Micrograph) erstellt.

image

Erstellt wird diese wieder durch den Aufruf einer kleinen asp.net Anwendung. Die Werte werden als Liste mit Komma getrennt übergeben.

http://localhost/sparkline.aspx/?v=22,5,6,3,4,5,9,15,8,22,5,6,-50,7,1,22,23,25,-30,4,5,9,90,0,8,22,22,5,6,3,4,5,9,15,8,22,5,6,50,7,1,22,23,25,30,4,5,9,90,0,8

Bevor nun gleich der Aufschrei kommt: "Und wie soll man sowas mit T-SQL erzeugen?"

Hier ein Lösungsansatz:

Declare @werte varchar(max)
set @werte = ''
select @werte = @werte + convert(varchar(10), wert) + ','
from faktenquelle
print rtrim('http://localhost/sparkline.aspx/?v=' + left(@werte, len(@werte)-1))

Sourcecode und ein komplexeres Beispiel werden folgen.

Die Implementierung in einem interaktiven BI Webclient für Analysis Services wird auf den SQLDays von mir gezeigt. Da kommt dann auch das Ajax mit ins Spiel.

Mittwoch, 16. Juli 2008

Win/Loss Grafik als SSAS Stored Procedure

Als ich "neulich" die paar Zeilen Code für die Win/Loss Grafik getippt habe, war ich zwar ganz begeistert von dem Resultat, aber mir war nicht klar welche Wellen das schlägt.

Nun hat Hilmar Buchta in seinem Blog mein Stück Code genommen und daraus eine Stored Procedure in Analysis Services gemacht. Eine sehr schöne Implementierung! Des Weiteren hat er in seinem Blog weitere interessante Sparkline Implementierungen beschrieben.

Wenn wir nun noch einen finden, der das unter Excel nutzbar macht. Mit dem WebBrowserControl müsste doch sowas gehen, oder? :o)

Dienstag, 15. Juli 2008

Business Intelligence meets Silverlight Deep Zoom

Wie schon mal berichtet, zeige ich auf den SQL Days 2008 ein paar Beispiele für alternative BI Clients auf Basis der Microsoft Plattform. Dabei nutze ich relativ viel asp.net Ajax, u.a. einen OLAP Web Client für Analysis Services, aber auch ein wenig Silverlight.

Als ich das erste Mal die Technologie Deep Zoom, welche Teil von Silverlight 2 ist, gesehen habe, hatte ich eine Idee. Heute bin ich nun, während ich auf die Ausführung eines ETL Jobs gewartet habe, dazu gekommen diese umzusetzen bzw. einen ersten Test zu machen.

Die Idee ist Silverlight Deep Zoom einfach als WebClient für Reporting Services und Dashboards zu nutzen. Das Ergebnis des ersten Tests habe ich kurz als Video (ohne Ton!) aufgezeichnet. Die Erstellung des Beispiels hat wiedermal nur eine gefühlte Kaffeetassenlänge gedauert.

Link zum Video

In dem Video zeige ich zuerst ein kleines Demo, welches ich mit den Vista Beispielbildern gebaut habe. Dann kommt ein "echtes" Reporting Beispiel. Es handelt sich dabei um Berichte aus Adventure Works. Ich fange mit einer Sales Reason Übersicht an und zoome dann tiefer in den Product Lines Sales rein. Dann geht es noch tiefer in die Liste der Mitarbeiter. Normalerweise haben wir in Reporting Services Interaktivität durch Links, hier lösen wir das durch einfaches Zoomen in noch mehr Details. Und so sehen wir neben den Auftragsnummern wiederum die einzelnen Belege als Report. Das bringt sogar richtig Spass! :o)

Kurz zur Qualität des Videos! Es ruckelt recht stark... auf meinem Notebook ist das Ganze butterweich... EHRLICH!

Sich einen "Überblick über das Unternehmen" verschaffen bekommt da einen ganz anderen Klang in meinen Ohren! Wenn eine solche Einstiegsseite für ein Unternehmen entsprechend aufgebaut ist (Habe da schon einige Ideen), dann ist das sicherlich eine sehr gute Ergänzung für Business Intelligence und Enterprice Reporting Projekte.

Montag, 7. Juli 2008

Win/Loss Fan Projekte

Fan Projekte sind ja gerade super in, Sparklines anscheinend auch. Ich habe das erste Feedback aus der Community bekommen. Häufig kam der Hinweis, dass das ja Code sei... igitt... wie kann denn sowas "produktiv" unter den SQL Server Reporting Services eingesetzt werden?

Das ist relativ einfach! Der erste Ansatz war ein extra CRI (Custom Report Item) zu schreiben. Ok, wenn ich mal Zeit habe... :-) Wesentlich "einfacher" ist es in Reporting Services die dynamisch erzeugten Grafiken direkt über eine URL einzubinden. Dann ist die Datenquelle auch egal. Kann also mit der relationalen wie auch mit der multidimensionalen Welt genutzt werden.

Die eigentliche Herausforderung ist die Berechnung der notwendigen Bitmaske für die Darstellung. Und das Ganze bitte z. B. komplett in einer SQL Query. Eine gefühlte Kaffeetassenlänge später entstand das folgende Beispiel.

image

Wir haben drei Tabellen:

  • DimMitarbeiter mit den Vertriebsmitarbeitern
  • DimMitarbeiterZiele mit den Umsatzzielen pro Monat (auf Historisierung verzichten wir einfach mal)
  • Fakten mit den einzelnen Umsätzen

image

image

image

Wie bringen wir das nun zueinander? Mit folgender Query erzeugen wir den Report in den Reporting Services.

select Name, sum(umsatz) as Umsatz, sum(winloss) as WinLoss
from vwfaktenwinloss as f
left join DimMitarbeiter as dM on dM.ma = f.ma
group by f.ma,Name

Wobei die eigentliche Arbeit macht der vwFaktenWinLoss View.

create view vwFaktenWinLoss as
select f.ma, year(datum) as Jahr, month(datum) as Monat, sum(umsatz) as Umsatz,
winloss =
case
    when sum(umsatz) >= (select umsatzziel from DimMitarbeiterZiele as d where d.ma = f.ma) then power(2,month(datum))
    else ' '
end
from fakten as f
group by f.ma, year(datum), month(datum)

Bei diesem Ansatz ist das Case Statement der entscheidene Punkt. Hier wird die Erreichung des Umsatzzieles überprüft. Des Weiteren wird mit der Power Funktion die Grundlage für die Bitmaske erzeugt. Als Grundlage dient der jeweilige Monat. Sofern der Report über Jahresgrenzen hinweg erzeugt werden muss, dann müsste diese Berechnung entsprechend geändert werden.

Wie kommt nun die Grafik in den Report? Ganz einfach über das Berichtselement Bild. Als Quelle Web (URL) auswählen. Dann die Eigenschaft Value bearbeiten und dort folgenden Ausdruck hinterlegen:

="http://asterix:81/sparklinewinloss.aspx?v=" & Fields!WinLoss.Value & "&l=6"

Den Aufbau der URL hatte ich schon mal beschrieben. Der Parameter "l=6" steht für 6 Monate. Das könnte auch noch dynamisch gepflegt werden.

Und schon haben wir die WinLoss Grafik im Report (s.o.). War doch ganz einfach, oder?

Das Verfahren über den Zugriff über eine URL werde ich auch beibehalten, damit auch meine anderen BI Tools (ausserhalb von RS) über den Weg direkt darauf zugreifen können. Neben der Win/Loss Grafik habe ich ja noch ein paar mehr geplant.

Sonntag, 6. Juli 2008

PASS Camp 2008

Dieses Jahr scheint wirklich voller europäischer Höhepunkte zu sein: European PASS Conference in Neuss, EM in Österreich & Schweiz, Kindergartenolympia in Wakendorf II und nun auch noch das PASS Camp 2008!

PASS-Camp-2008_600px

Termin ist vom 1. bis zum 4.9.2008. Der Ort des Geschehens ist wiedermal das gemütliche Gut Höhne in Mettmann. Es wird drei Tracks geben. Dieses mal wird es sogar international! Die Sprecher sind Bodo Danitz, Chris Webb und Rushabh Mehta. Und das alles für einen sehr günstigen Community Preis. Wo findet sich schon mehr Schulung zum Thema BI, MDX (Analysis Services) und SQL Server Performance in einem Event? Mehr muss eigentlich nicht gesagt werden, oder?

Etwa doch? Ok!

Track DBA "SQL Server Performance Marine" mit Bodo Danitz. Für mich seit Neuss der Dr. Jones der SQL Server Optimierung. Es gibt für ihn wohl keinen unentdeckten Winkel mehr in dem Tempel der DMVs.

Track MDX "Mastering MDX in 3 days" mit Chris Webb. Eigentlich ein unmögliches Unternehmen in drei Tagen, aber wenn ich es einem Mann zutraue, dann dem Chris! Vielleicht geht er bis an die Grenzen des Multidimensionalen, vielleicht auch drüber hinaus! Mehr von ihm auf http://cwebbbi.spaces.live.com/.

Track BI "Advanced BI Concepts based on the MS BI stack" mit Rushabh Mehta. Zu dem Mann muss eigentlich nichts mehr gesagt werden. Rushabh habe ich noch in sehr guter Erinnerung von der European Pass Conference in Barcelona. Mehr von ihm auf http://www.sqlblog.com/blogs/rushabh_mehta.

Und wo könnt Ihr mehr über das PASS Camp erfahren und Euch anmelden? Hier -> http://www.sqlpasscamp.de/. Bitte beachtet, dass es natürlich einen Early Bird gibt, welcher demnächst ausläuft. Des Weiteren sind Mitglieder des PASS Deutschland e.V. wieder besonders günstig dabei. Und dieses bei einer kostenlosen Mitgliedschaft! Falls Ihr noch kein Mitglied seit, dann nichts wie auf www.sqlpass.de und das Fax ausfüllen!

Mal ehrlich.. wer denkt da noch an die Olympia? Und wie wollen die Veranstalter das 2009 noch toppen? Mit der Robin? :-)

Donnerstag, 26. Juni 2008

Der Teufel trägt Microsoft

Glückwunsch an Microsoft zu diesen Videos! :o)


Video: Video 1


Video: Video 2

Mittwoch, 28. Mai 2008

Excel Services im echten Leben

Hier mal ein kurzer Bericht von einer Nutzung der Excel Services im echten Leben, diesem schönen Dienst aus Microsoft Office SharePoint Server (MOSS) Enterprise.

Wir (PSG) nutzen relativ viel SSIS usw. für die Datenbewirtschaftungsprozesse von Data Warehouse Lösungen. Bisher gab es für uns zwei Möglichkeiten Excel Quellen anzubinden: SSIS Connector oder Excel Makros (wenn es mal komplexer wird).

Da wir nun aber in letzter Zeit häufiger mit den Excel Services gearbeitet haben, kamen diese nun auch in einem ETL Prozess zum Einsatz. Wir lesen dort eine große Anzahl von Excel Files ein, welche wiederum recht komplex aufgebaut sind. Bisher hätten wir sowas über einen Crawler in VBA gelöst.

Nun hat mir mein geschätzter Kollege Jan gerade berichtet, dass er mit der Nutzung der Excel Services über die entsprechenden Webservices mit einem kleinen eignen .net Tool einen Geschwindigkeitsgewinn vom Faktor 50 hatte. Also ich bin echt baff! Das ist doch mal ein echter Nutzen für den Kunden!

Freitag, 23. Mai 2008

Ein kleines Beispiel für Sparklines

Hier noch ein Sample für eine Sparkline Grafik (Win/Loss) in einer Tabelle. Dabei werden die Herren hinsichtlich Ihres jeweiligen Erfolges gemessen. Das Chart zeigt die letzten 24 Monate. Bei diesem Beispiel wird deutlich wie leicht sich damit auch Ergebnisse vergleichen lassen. Für den Herrn Müller waren die letzten Monate eher mau, während Herr Meyer einen Run hatte.

image 

In diesem Demo sind die Bitmasks noch von Hand hinterlegt worden. In der nächsten Version kommt dann was mit einer Datenbindung. Entweder ado .net oder gar ado md.net für Analysis Services Cubes, mal schauen wie ich voran komme.

Hier könnt Ihr dieses kleine Demo runterladen. Sind nur zwei Dateien. Die Html Datei muss noch entsprechend angepasst werden für Euren Server, da ist noch mein asterix:81 drin. :o)

Mittwoch, 21. Mai 2008

Sparklines (Win/Loss Grafik)

Hiermit möchte ich mal meine Begeisterung für Sparklines öffentlich machen! Ein großes Danke an Herrn Tufte für diese super Idee!

Wie komme ich nun gerade drauf? Ich bin ja am Vorbereiten für meine SQLDays Vorträge und in diesen wird es auch um Sparklines gehen.

Hier ein erstes Beispiel aus meinem Tool:

image

Cool, was? Das ist mal echte Raketenwissenschaft, oder? :o)

Ok, was ist das..?

Dieser putzige Haufen Pixels ist eine Sparkline Win/Loss Grafik. Grün/Oben für gewonnen und Rot/Unten für verloren. Was lässt sich damit nun ausdrücken? Diese Darstellungsform ist äussert flexibel einsetzbar. Hinter diesen 24 Balken könnten sich zum Beispiel:

  • die letzten 24 Monate im durchwachsenen Leben eines Vertriebsmitarbeiters verstecken. Bei Grün hat er seine Ziele erreicht, bei Rot halt nicht.
  • die letzten 24 Anrufe eines Callcenter Agents. Zeitschriften Abo verkauft oder nicht.
  • die letzten 24 verkauften Reisen im Reisebüro um die Ecke mit bzw. ohne verkaufter Rücktrittsversicherung.

Es kommt halt auf den Kontext an, aber bevor der Analyst im OLAP Client oder auch ein "einfacher" Konsument eines Berichts 17 oder mehr Zahlen vergleichen muss mit Zielen usw., ist so ein "auf-einen-Blick" Ding eine feine Sache.

Wie habe ich das erstellt? Mit ein paar Zeilen asp.net Code, weil das Ziel für die Vorträge sind ja Webclients.

Ich übergebe zwei Parameter:

  • v ist eine Bitmask, jede 1 = Grün, jede 0 = Rot
  • l ist die Anzahl der Blöcke (getestet ist das bis 64 Blöcke)

Die eigentliche Anwendung im Hintergrund muss dann "natürlich" für die jeweilige Berechnung der Bitmask sorgen!

void Page_Load(Object sender, EventArgs e)
{
    int i;
    int l = Convert.ToInt32(Request["l"]);
    Int64 value = Convert.ToInt64(Request["v"]);
    int x;

    Bitmap objBitmap = new Bitmap(5*l+20,30);

    Graphics objGraphic = Graphics.FromImage(objBitmap);
    SolidBrush redBrush   = new SolidBrush(Color.Red);
    SolidBrush greenBrush = new SolidBrush(Color.Green);
    SolidBrush whiteBrush = new SolidBrush(Color.White);

    objGraphic.FillRectangle(whiteBrush, 0, 0, 5*l+20, 30);

    for (i = 0; i < l; ++i)
    {
        x = (int)(value >> i)  & 1;
        if( x == 1)
        objGraphic.FillRectangle(greenBrush, 10 + (i * 5), 10, 4, 7);
        else
        objGraphic.FillRectangle(redBrush, 10 + (i * 5), 18, 4, 7);
    }

    Response.ContentType = "image/jpeg";
    objBitmap.Save (Response.OutputStream, ImageFormat.Jpeg);

}

Dienstag, 20. Mai 2008

Sascha ist Sprecher auf den SQLDays 2008

Ich werde dieses Jahr zwei Sessions auf den SQLDays in München halten! Die SQLDays sind am 28. & 29.10.2008.

Es werden eher Entwickler Sessions sein, aber der eigentliche Kern ist, wie sollte es auch anders sein, sehr Business Intelligence lastig. Es wird darum gehen, wie Unternehmen mit der Microsoft .net Plattform effiziente und dabei schlanke BI Analyse Werkzeuge entwickeln können. Dazu werde ich eine Reihe von Werkzeugen zeigen, welche ich für die Praxis und teilweise auch einfach als Fingerübung, entwickelt habe.

Die Basis für alle Beispiele ist ein installierter SQL Server 2005 Standard Edition. Des Weiteren werden die meisten Beispiele eine Weboberfläche haben. Verwendete Technologien sind dabei asp.net 2.0/3.0/3.5 inklusive der neuen Ajax Möglichkeiten. Für einige Spielereien teste ich gerade Silverlight.

Beispiele werden u.a. sein:

  • ein OLAP Webclient für Analysis Services (MS Ajax macht es möglich)
  • eine flexible Planungslösung
  • ein Webdashboard (noch eines... :o) )
  • (natürlich) Integration in MS Search Server Umgebungen

Des Weiteren "arbeite" ich zur Zeit an einem hauptspeicherbasierten Analysetool, aber mal schauen, ob das bis Oktober auch schon eine vorzeigbare GUI hat.

Würde mich freuen, wenn ich den einen oder anderen in München wiedersehen würde.

Samstag, 19. April 2008

European PASS Conference - Resümee

Die Konferenz liegt nun schon ein paar Tage zurück. Zeit darüber nachzudenken, was für Eindrücke geblieben sind:


1. viel gutes Essen (Mist, nix passt mehr...)
2. viele gute Sessions (thank you! this is a very good question!)
3. sehr gute nationale und internationale Kontakte 
4. lange Nächte 

Mit anderen Worten: Es hat sich auf jeden Fall gelohnt! :-)

Mittwoch, 16. April 2008

European PASS Conference Day 2 - All

Mittlerweile laufen die Sessions wieder. Sitze nun in einer Session von Allan Mitchell (Konesans) und lerne was über SSIS dazu.

European PASS Conference Day 2

Die zweite Tag der European PASS Conference läuft bereits. Und es zeigt sich, dass neben dem sehr guten Inhalt auch der Networking Charakter eines solchen Events "quasi" unbezahlbar ist.

Das zeigte sich mal wieder beim Frühstück. Mir saß James Luetkehoelter gegenüber. Mir kam das Gesicht gleich so bekannt vor. :-) James ist Sprecher auf der Konferenz und u.a. auch Autor eines sehr guten Buches über Diaster Recovery mit dem SQL Server 2005.

Solche Begegnungen machen eine gute Konferenz aus!

Dienstag, 15. April 2008

European PASS Conference Day 1 - Photo Impression

So, hier noch ein Bild von der Chris Webb Session. by the way, auf dem Bild hat sich auch noch Marco Russo versteckt... :-)

European PASS Conference Day 1

Die Konferenz läuft und macht einen verdammt guten Eindruck. Organisation ist durchdacht und funktioniert. Die Büffets sind reich gedeckt. Und der Besucher hat die Qual der Wahl welche Session er als nächste besuchen soll, da sich mal wieder vieles lohnt.

Begonnen habe ich den Tag mit einer Spotlight Session von Chris Webb "What's new in Analysis Services 2008". Es macht einfach Spass einem solchem Sprecher zufolgen.

Sonntag, 13. April 2008

European Pass Conference - der Countdown läuft...

Heute ist Sonntag der 14.04.2008 und morgen beginnt die European PASS Conference 2008 in Neuss.

Ich bin bereits vor Ort. Sehr schöne Lokation, nun mal schauen wie die Konferenz wird. Meinen Vortrag halte ich am Mittwoch Nachmittag. Einen muss es ja treffen.

Bin sehr gespannt, wie es wird. :-)

Sonntag, 9. März 2008

Beta vom IE 8

Todesmutig habe ich mir die Beta vom IE8 installiert. Ok, sieht auf den ersten Blick aus wie ein IE7. Nur dann steuerte ich als erste Site xing an und, nun ja, da passte noch nicht viel vom Layout. Aber zum Glück gibt es einen "Emulate IE7" Button. Danach sah xing und der Rest des Netzes wie gewohnt aus. Dann kam aber der zweite Schock: IE8 ist trotzdem deutlich schneller!!! Ich werde die Beta behalten und mal schauen, ob meine Lieblingsdienste auch bald Activities anbieten. :o)

Donnerstag, 6. März 2008

Sascha auf der CeBIT

Es geht los! Aber die Lichtverhältnisse sind nicht optimal für eine Handycam... :-(

Mittwoch, 5. März 2008

PSG ist auf der CeBIT 2008

Die PSG Projekt Service GmbH ist gemeinsam mit dem Business Intelligence Partner Targit auf der CeBIT 2008 vertreten. Am 6. & 7.3. kann ich persönlich auf dem Stand der Targit angetroffen werden. Der Stand ist auf dem forum-bi-eii | soa-bpm-world Halle 3, C45 zu finden.

Montag, 3. März 2008

Sascha ist Sprecher auf der European PASS Conference 2008!

Es ist tatsächlich wahr! Ich bin Sprecher auf der europäischen PASS Konferenz in Neuss. Zwar im deutschen Track, aber das ist vieleicht auch für den Moment besser für alle... :o)

Es ist für mich eine große Ehre dabei zu sein! Daher nun schnell die Notizen für den Vortrag zusammensuchen und die PowerPoints vorbereiten. Ach ja, ich spreche über Folgendes:

"Diese Session offenbart Möglichkeiten für BI Architekten, wie diese ein Data Warehouse als Quelle für die wirklich einzige Wahrheit mit einem MS Search Server verbinden können. Das Potenzial einer Business Intelligence Umgebung kann nochmals deutlich erhöht werden, in dem ein Search Connector implementiert wird. In der Session werden die Unterschiede zwischen den Technologien Federated Search Connectoren und Indexing Connectoren beleuchtet. Abschließend wird gezeigt, wie der MS Search Server 2008 genutzt wird, um strukturierte wie auch unstrukturierte Daten aus dem Data Warehouse zu finden und darzustellen."

Sonntag, 2. März 2008

PerformancePoint Server Forum auf XING

Es ist vollbracht! Nun gibt es unter XING endlich das Forum zum MS Office PerformancePoint Server 2007 (und was immer danach kommen mag)!

Ich freue mich auf rege Teilnahme!

Mittwoch, 27. Februar 2008

PASS Cast: Test- & Demodaten mit SSIS 2005 erstellen

So, heute wurde der neue PASS Newsletter veröffentlicht. Dort wurde ein neuer PASS Cast von mir erwähnt: Test- & Demodaten mit SSIS 2005 erstellen

Anbei der im Cast erwähnte Sourcecode. Für Fragen mir einfach einen Kommentar oder eine Mail schreiben. Viel Spass damit!

Public Overrides Sub CreateNewOutputRows()

'
' Add rows by calling AddRow method on member variable called "Buffer"
' E.g., MyOutputBuffer.AddRow() if your output was named "My Output"
'

Dim i As Integer
Dim objR As New Random(123412)
Dim OrteVer As Integer() = {8, 4, 3, 5, 8, 3, 4, 6, 6, 8}

For i = 1 To 1000000

With (TestBuffer)

.AddRow()
.id = i
.wert = randomhelp(objR, OrteVer )

End With

Next

End Sub

Function randomhelp(ByVal objR As Random, ByVal ver As Integer()) As Integer

Dim ergebnis As Integer
Dim max As Integer = 0
Dim i As Integer
Dim zufall As Integer

For i = 0 To ver.Length() - 1

max += ver(i)

Next

zufall = objR.Next(0, max)

max = 0

For i = 0 To ver.Length() - 1

If zufall >= max Then

ergebnis = i + 1

End If

max += ver(i)

Next

Return (ergebnis)

End Function

Montag, 18. Februar 2008

Noch eine Nacht..

Hier ein erster Eindruck vom Launch Event in Frankfurt! :-)

Morgen geht es los!

Freitag, 15. Februar 2008

Das coole "Snipping Tool" von Windows Vista!

Beim gestrigen Vorgespräch zum PASS Deutschland e.V. Treffen in Hamburg mit dem Markus Thomanek von Microsoft lernte ich ein neues Tool kennen, welches auf meinem Vista Notebook bereits installiert war. Und zwar das Snipping Tool. Was macht das? Dazu ein Blick in die Hilfe dazu:

Sie können das Snipping Tool zum Erfassen eines Screenshots oder Ausschneiden eines beliebigen Objekts auf dem Bildschirm verwenden und dann das Bild speichern, freigeben oder mit Anmerkungen versehen. <...>

  • Freies Ausschneiden.  Zeichnen Sie eine unregelmäßige Linie wie einen Kreis oder ein Dreieck um ein Objekt.

  • Rechteckiges Ausschneiden.  Zeichnen Sie eine genaue Linie, indem Sie den Cursor um ein Objekt herum ziehen und dadurch ein Rechteck bilden.

  • Fenster ausschneiden.  Wählen Sie ein Fenster wie ein Browserfenster oder ein Dialogfeld aus, das Sie erfassen möchten.

  • Vollbild ausschneiden.  Wenn Sie diesen Ausschnitttyp auswählen, können Sie den gesamten Bildschirm erfassen.

Snipping Tool

Cooles Tool auf jeden Fall! Nur wofür brauch ich jetzt noch OneNote auf meinem Notebook? :o)

Donnerstag, 14. Februar 2008

Was ist BizTalk? Teil 2½ Was ist XSLT?

So, das habe ich nun davon... :o)

Kaum werfe ich mal wieder mit Buzzwords um mich, schon kommt die Frage: Was ist denn XSLT und warum hat das was mit BizTalk zu tun? Ok, dann schiebe ich das mal "kurz" ein. Wobei XSLT wirklich kein kleines Thema ist, damit können locker Bücher gefüllt werden. Es gibt auch Diverse zu dem Thema! Da ich hier nun aber keine XSLT Einführung verfassen möchte, verweise ich einfach mal auf den guten Wikipedia Artikel.

Daher hier nun kurz eine Übersicht. XSLT (Extensible Stylesheet Transfomations) ist ein Verfahren für das Transformieren von Dokumenten. Am häufigsten wird wohl sowohl als Quelle und auch als Ziel XML eingesetzt. Und wir erinnern uns, dass intern im BizTalk alles über XML läuft. Wie funktioniert nun XSLT? Zuerst einmal brauchen wir eine Beschreibung im XSLT Format, welches die eigentliche Transformation beschreibt. Und dann brauchen wir noch einen XSLT Prozessor, welcher die Transformation durchführt. Im Beispiel unten verwende ich das freie Tool nxslt2. Es gibt aber diverse XSLT Prozessoren am Markt. Im .net Framework gibt es für die Verwendung innerhalb einer Anwendung ebenfalls eine Klasse dafür.

Kommen wir zum Beispiel: Ich habe hier eine XML Datei mit den aktuellen PASS Deutschland e.V. Regionalgruppen. Dabei ist zu beachten, dass die Bezeichnung einer Gruppe als Element vorliegt! Als Ergebnis der Transformation möchte ich die Bezeichnungen als Attribute haben. Dafür habe ich eine XSLT Datei verfasst. In dieser beschreibe ich die Umwandlung. Es findet also keine klassische Programmierung statt, nur eine Beschreibung!

Mit dem folgenden Befehl führe ich die Transformation durch. Es wird auf die pass.xml die Transformation pass.xslt durchgeführt. Das Ergebnis ist die Datei pass2.xml.

nxslt2 pass.xml pass.xslt -o pass2.xml

Zurück zum BizTalk Server. Dort müssen i.d.R. aber keine XSLT Dateien per Hand erstellt oder bearbeitet werden, sondern es gibt dort einen sehr komfortablen grafischen Editor für das sogenannte Mapping. Aber dazu später mehr. Heute sollte es ja "nur" um XSLT gehen, wobei ich bemerken möchte, dass dieses Beispiel die Möglichkeiten von XSLT nur leicht ankratzt. :o)

PASS.XML
<?xml version="1.0" encoding="utf-8"?>
<passdeutschland>
<regionalgruppen>
<regionalgruppe><bezeichnung>Bayern</bezeichnung></regionalgruppe>
<regionalgruppe><bezeichnung>Berlin</bezeichnung></regionalgruppe>
<regionalgruppe><bezeichnung>Franken</bezeichnung></regionalgruppe>
<regionalgruppe><bezeichnung>Hamburg</bezeichnung></regionalgruppe>
<regionalgruppe><bezeichnung>Hannover/Goettingen</bezeichnung></regionalgruppe>
<regionalgruppe><bezeichnung>Karlsruhe</bezeichnung></regionalgruppe>
<regionalgruppe><bezeichnung>Koeln/Bonn/Duesseldorf</bezeichnung></regionalgruppe>
<regionalgruppe><bezeichnung>Mittelrhein</bezeichnung></regionalgruppe>
<regionalgruppe><bezeichnung>Rhein/Main</bezeichnung></regionalgruppe>
<regionalgruppe><bezeichnung>Ruhrgebiet</bezeichnung></regionalgruppe>
<regionalgruppe><bezeichnung>Sachsen</bezeichnung></regionalgruppe>
<regionalgruppe><bezeichnung>Stuttgart</bezeichnung></regionalgruppe>
<regionalgruppe><bezeichnung>Oesterreich</bezeichnung></regionalgruppe>
</regionalgruppen>
</passdeutschland>

PASS.XSLT
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" >
<xsl:template match="/">
<passdeutschland>
<xsl:apply-templates select="/passdeutschland/regionalgruppen/regionalgruppe" />
</passdeutschland>
</xsl:template>
<xsl:template match="regionalgruppe">
<xsl:copy>
<xsl:attribute name="bezeichnung"><xsl:value-of select="bezeichnung"/>
</xsl:attribute>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>

PASS2.XML
<?xml version="1.0" encoding="utf-8"?>
<passdeutschland>
<regionalgruppe bezeichnung="Bayern" />
<regionalgruppe bezeichnung="Berlin" />
<regionalgruppe bezeichnung="Franken" />
<regionalgruppe bezeichnung="Hamburg" />
<regionalgruppe bezeichnung="Hannover/Goettingen" />
<regionalgruppe bezeichnung="Karlsruhe" />
<regionalgruppe bezeichnung="Koeln/Bonn/Duesseldorf" />
<regionalgruppe bezeichnung="Mittelrhein" />
<regionalgruppe bezeichnung="Rhein/Main" />
<regionalgruppe bezeichnung="Ruhrgebiet" />
<regionalgruppe bezeichnung="Sachsen" />
<regionalgruppe bezeichnung="Stuttgart" />
<regionalgruppe bezeichnung="Oesterreich" />
</passdeutschland>

Donnerstag, 7. Februar 2008

freie Trainingsressourcen für den PerformancePoint Server 2007

Beschäftige mich ja noch parallel mit dem PerformancePoint Server 2007. Dabei bin ich über eine US Seite von Microsoft gestolpert auf der es eine ganze Reihe von Trainingsressourcen für den PPS gibt. Hier mal der Inhalt:

Building a planning budgeting or forecasting application
  • Module 1: Business integration
  • Module 2: Architecting a PerformancePoint Server2007 planning application
  • Module 3: Fundamentals of a planning application
  • Module 4: Building business models and data dimensions
  • Module 5: Data Loading
  • Module 6: Managing roles and security in a planning application
  • Module 7: Fundamentals of the Excel add-in for PerformancePoint Server 2007
  • Module 8: Planning process management and workflows
  • Module 9: Embedding rules and calculations into a planning application
Building a scorecard, dashboard, or analysis application
  • Module 10: Fundamentals of monitoring and analyzing data with PerformancePoint Server 2007
  • Module 11: Fundamentals of dashboarding, scorecarding and analytics
  • Module 12: PerformancePoint Server 2007 elements for monitoring and analysis
  • Module 13: Building dashboards with PerformancePoint Server 2007
  • Module 14: Managing security in dashboards, scorecards and analytic

Was ist BizTalk? Teil 2

Die Lingua franca für diesen Austausch von Informationen ist das gute alte XML. Damit ist gemeint, dass JEDE Information, die über einen BizTalk ausgetauscht werden soll, intern im BizTalk zu XML wird. Auf der anderen Seite heißt das aber nicht, dass jetzt nur XML rein bzw. raus kommt aus so einem BizTalk. Das können ganz beliebige Formate, Datenbanken und Anwendungen sein. Nur intern arbeitet der BizTalk mit XML! Für die Umwandlung von einem Format auf ein anderes Format übernimmt dann XSLT. Dieser Weg über XML lässt viele Entscheider vor einem BizTalk zurückschrecken, da hier ein unnötiger Mehraufwand vermutet wird. Doch genau hier spielt er eine seiner Stärken aus! Des Weiteren trennt der BizTalk Server von seiner technischen Architektur her strickt das Format von Daten und die Quelle aus der die Daten kommen. Eine Quelle wird im BizTalk als Adapter bezeichnet. Es gibt Adapter für Web Services (SOAP & co), für Dateifreigaben (CIFS), für diverse Datenbanken, für Mailsysteme, für SharePoint Listen und für Anwendungen (z.B. SAP, Siebel, Navision, Axapta). Sofern kein passender Adapter verfügbar sein sollte, lässt sich mit .net Werkzeugen einer entwickeln.

Fassen wir also kurz zusammen:

  • Daten kommen rein über einen Adapter
  • Die Daten sind bereits ein XML Dokument oder werden zu einem XML Dokument "gemacht"
  • Das XML Dokument wird innerhalb des BizTalk verarbeitet und in die Richtung des "Ausgangs" bewegt
  • Das XML Dokument wird entweder umgewandelt in ein anderes Format oder bleibt wie es ist
  • Es verlässt den BizTalk Server wieder über einen Adapter

Eigentlich ganz einfach, oder? Eine interessante Frage ist nun wofür eine solche Integrationslösung im Alltag überhaupt zu gebrauchen ist.

Freitag, 1. Februar 2008

Was ist BizTalk? Teil 1

Zurück zu der Frage: Was ist BizTalk?

Eine mögliche Antwort könnte nun eine recht lange Verkettung von Buzzwords werden. Daran wäre grundsätzlich auch nichts falsch. Nur für viele IT'ler und Entscheider da draußen ist das alles (EAI, SOA, ESB, WCF usw.) noch ganz weit weg. Daher mal eine kürze Antwort:

BizTalk ist eine Integrationslösung!

Ok, und was ist nun wieder eine Integrationslösung? :o)

Vor langer Zeit, da sprach man nicht davon Systeme zu integrieren. Da wurde schlicht gesagt: Wir brauchen eine programmierte Schnittstelle! Nun ja, und damit begann dann auch der Ärger, weil es hieß dann oft: Wir brauchen noch eine Schnittstelle und noch eine, und noch eine... usw. Stark vereinfacht ausgedrückt macht BizTalk nichts anderes als eine Schnittstelle. Genaugenommen ist BizTalk eine Sammlung von Schnittstellen, welche in der Regel nicht programmiert, sondern für ihren Anwendungsfall "beschrieben" werden. Und damit BizTalk das Kunststück schafft alles mit allem reden zu lassen, gibt es im BizTalk eine zentrale Komponente über die alle Daten ausgetauscht werden. So eine Art Drehscheibe für Daten. That's all! Nun ja, fast. Aber dazu das nächste Mal mehr!

Mittwoch, 30. Januar 2008

Ist BizTalk nichts anderes als XSLT?

Diese Frage wurde mir im Rahmen eines BizTalk Workshops gestellt. Genaugenommen wurde gefragt, ob sich nicht alles was BizTalk so macht nicht auch mit "ein wenig" XSLT möglich wäre.

Nachdem ich die Schrecksekunde überlebt hatte, wurde mir klar, dass es hier um die Frage ging, ob es nicht sinnvoller wäre die Lösung einfach klassisch Zeile für Zeile (bzw. Objekt für Objekt) zu programmieren statt mit einem Werkzeug wie BizTalk zum größten Teil zu beschreiben. Nach dem Motto: Message ist Message und XML ist XML! Wofür also noch ein Tool wie den BizTalk Server?

Das brachte mich auf den Gedanken, dass es sicherlich Sinn machen würde mehr über den BizTalk Server zu erzählen. Der BizTalk Server ist für viele IT-Professionals noch in der "esoterischen" Ecke. Für den Business Entscheider ist das Konzept hinter dem BizTalk Server noch weiter weg, es gibt ja auch quasi nichts zu sehen. Für Viele stellt sich zunächst die Frage: Wofür ist der überhaupt da, dieser BizTalk Server? Und Antworten gibt es auf diese Frage auch eine ganze Reihe. Daher werde ich nun in loser Folge das eine und auch andere zum BizTalk Server und den verwandten Themen schreiben.

Freitag, 18. Januar 2008

Bill Gates Last Day CES Clip


Video: Bill Gates Last Day CES Clip

Für Alle die dieses Kunstwerk noch nicht gesehen haben! :o)