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? :-)