Dynamische Spalten mit Reporting Services 03.09.2010

Viktor Ewert
Viktor Ewert, Senior eXpert

Einen Report - basierend auf einer MDX-Abfrage - mit dynamischen Spalten anzulegen ist relativ gängig. Doch auch einen Report, dessen DataSet die Daten per SQL aus einer Datenbank liest, ist in einigen Schritte möglich. Hier wird am Beispiel von Reporting Services 2005 erklärt, wie man dynamische Spalten in einem Bericht implementieren kann. Dieses Vorgehen gilt analog für Reporting Services 2008 (R2).

Zuerst wird eine Stored Procedure angelegt, die ein dynamisches Result-Set zurückliefert:

   1: create procedure [dbo].[sp_get_dynamic_columns]
   2: (
   3:     @columns int
   4: )
   5: as
   6: begin
   7:   -- Abhängig vom Parameter @columns wird eine andere Anzahl Spalten zurückgeliefert.
   8:   if @columns = 3
   9:     select '3 Wertespalten' as Bezeichnung, 1 as Wert1, 2 as Wert2, 3 as Wert3;  
  10:   if @columns = 2
  11:     select '2 Wertespalten' as Bezeichnung, 1 as Wert1, 2 as Wert2;
  12:   if @columns < 2
  13:     select '1 Wertespalte' as Bezeichnung, 1 as Wert1;
  14: end

Hinweis: Anhand des ersten Statements, welches ein ResultSet zurückliefert(hier das Select nach ”if @columns = 3”), ermittelt sich Reporting Services die Metadaten für das DataSet. Hier ist darauf zu achten, dass das erste Statement die maximale Anzahl Spalten zurückliefert. Alternativ kann man das Statement auch mit dynamischem SQL erzeugen.

Im nächsten Schritt wird im Data-Bereich des zu erstellenden Reports ein DataSet angelegt. Hier wird als Command type „Stored Procedure“ ausgewählt und die erstellte Stored Procedure angeben.

clip_image002

Dann die Abfrage ausführen. Wichtig hierbei ist, die Abfrage so auszuführen, dass sie die maximale Anzahl Spalten zurückliefert die im Report möglich sein sollen. In diesem Beispiel sind es 3 Spalten.

clip_image004

Als Ergebnis werden die 3 dynamischen Spalten zurückgeliefert.

clip_image006

Hinweis: Beim aktualisieren des DataSets werden die Metadaten des Result-Set wieder ausgelesen und die DataSet Felder im Report entsprechend aktualisiert. Das ist wichtig, wenn Spalten hinzukommen sollen oder entfernt werden.

Im Layout-Bereich des Reports wird eine Tabelle angelegt, die alle Spalten des DataSets enthält. Für die dynamischen Spalten wird noch eine Expression für die Eigenschaft Visibility Hidden definiert, da die Spalten ausgeblendet werden sollen, wenn diese keinen Wert besitzen:

   1: =isnothing(sum(Fields!Wert2.Value))

Ein Preview auf den Report zeigt, dass die Spalten nun dynamisch ein-/ausgeblendet werden, je nach Auswahl des Parameter-Wert.

clip_image008

clip_image010

Share |

Menschen machen Projekte erfolgreich 01.09.2010

Rudolf Sauer
Rudolf Sauer, Principal eXpert

Im Scrum sind wie bereits bekannt 3 verschiedene Rollen erforderlich / definiert:

  • 1. Der Product Owner
  • 2. Der Scrum Master
  • 3. Das Team
Der Product Owner legt die Vison fest, priorisiert die Features abhängig vom Marktwert und ist verantwortlich für das finanzielle Ergebnis (ROI).
Der Scrum Master hilft dem Team bei der Prozess-Verbesserung, beseitigt Hindernisse und unterstützt die enge Zusammenarbeit zwischen allen Rollen und Funktionen.
Das Team organisiert sich selbst - in der Verantwortung und für die Lieferung an den Product Owner.

Diese Aufteilung entspricht der Management-Aufteilung, wie sie neuerdings sehr stark diskutiert wird: Dem Postheroischen Management.
Postheroisches Management bedeutet, in den Worten des Management-Denkers und Systemtheoretikers Dirk Baecker:

"Im postheroischen Management werden die Beobachter aus ihrer passiven Rolle befreit. Sie werden zu Akteuren. Jeder ihrer Arbeitsschritte ist eine Entscheidung. Helden stören dabei nur. Helden sind Leute, die den Blick für die Gegenwart scheuen und sich stattdessen auf ihre Zukunft, ihre glorreiche Zukunft, konzentrieren. Wir interessieren uns … für die Ressourcen der Beobachtung, um zu besseren Entscheidungen zu kommen. Wir suchen nach einem Management, das in der Lage ist, der Gegenwart und ihren strategischen Möglichkeiten nicht auszuweichen, sondern sich ihr zu stellen.“

Zusammenfassend bedeutet das, dass der Erfolg des Projektes durch die Akteure (also das Scrum-Team) erarbeitet wird. Der Scrum Master schafft die notwendigen Rahmenbedingungen für eine offene und vertrauensvolle Kommunikation. Auftauchende Probleme werden so schnell erkannt und gemeinsam mit dem Product Owner geklärt. Eine richtige "Helden"-Führungsrolle existiert in diesem Idealbild somit nicht. Genauso, wie es schon der chinesische Philosoph Laotse (Dao-de-dsching, Kapitel 17) dies im 6. Jahrhundert vor Christus beschrieben hat:

"Der beste Führer ist der, dessen Existenz gar nicht bemerkt wird, der zweitbeste der, welcher geehrt und gepriesen wird, der nächstbeste der, den man fürchtet, und der schlechteste der, den man hasst. Wenn die Arbeit des besten Führers getan ist, sagen die Leute: »Das haben wir selbst getan«".

Weiterführende Links:

Share |

Cloud Computing: Neues von Windows Azure für Entwickler 30.08.2010

Patric Schouler
Patric Schouler, Chief eXpert

Microsoft hat die Windows Azure-Leistungen für Visual Studio Premium und Visual Studio Ultimate mit MSDN deutlich erweitert. Abonnenten erhalten jetzt 16 Monate lang die Windows Azure Platform Benefits - bisher waren es acht Monate.  windowsazureplatform

 

Neu für Entwickler sind auch die Windows Azure Tools für Visual Studio 1.2, die kostenfrei im Microsoft Download-Center zur Verfügung stehen. Die Erweiterung für Visual Studio 2010 und Visual Studio 2008 unterstützt Entwickler dabei, Anwendungen für Windows Azure zu erstellen.

Überzeugen Sie sich von den Möglichkeiten des Cloud Computing, und besuchen Sie die Windows Azure-Produktseiten.

PS: Vielleicht reagiert Microsoft damit ja auf die allgemeine Kritik (siehe hier) am bisherigen Modell…?

Share |

SDX Technical Council: Self Service BI mit SQL Server 2008 R2 27.08.2010

Simone Franz
Simone Franz, Marketing Manager

Herzlich laden wir zu einem weiteren Technical Council ein:

Thema: ”Self-Service BI mit SQL Server 2008 R2”
Termin: Dienstag, 14.09.2010, 17:00 bei SDX
Zielgruppe: Projektleiter, techn. Projektleiter, Architekten u. Lead Developer

17:00 Uhr Begrüßungskaffee
17:30-19:30 Self-Service BI mit SQL Server (SSRS R2, Excel 2010, Power Pivot)

19:30 Abendessen mit Bier vom Fass und Wein 

Im technisch orientierten Council erleben Sie die Self-Service-BI-Features des neuen Microsoft SQL Server 2008 R2.

Ein Schwerpunkt liegt dabei auf den Reporting Services, welche wiederverwendbare Report-Parts, Kartendarstellung, Databars und Sparklines bieten und auch dem Endbenutzer mit dem Report Builder 3.0 zur Verfügung stehen.
Der zweite Teil der Veranstaltung beschäftigt sich mit Excel 2010 und dem Zusammenspiel mit seinem kleinen Bruder PowerPivot, mit dem die Grenzen bezüglich Datenvolumen und Performance in Excel 2010 endgültig aufgehoben scheinen.

Die beiden SDX eXperts Viktor Ewert und Nicolas Meseth werden in diesem TC praxisnahe Beispiele einsetzen, um einen möglichst spannenden und umfassenden Überblick über die neuen Möglichkeiten des Microsoft BI-Stacks zu geben.

Titel

Genießen Sie das abschließende Abendessen und unterhalten Sie sich in lockerer Atmosphäre mit den Teilnehmern und den SDX eXperts.

Das SDX Team freut sich über Ihr Kommen. Auf Wiedersehen im SDX Büro in der Borsigallee (Nähe Hessencenter).

Herzliche Grüße
Simone Franz

Die komplette Einladung bzw. die Teilnahmebedingungen erfahren Sie hier: Einladung zum Technical Council.

Share |

Projektmanagement mit der Critical Chain Methode

Daniel Tonagel
Daniel Tonagel, Chief eXpert

Kaum jemandem ist bewusst, wie viel verzögerte Projekte tatsächlich kosten.

Offensichtlich sind zunächst die zusätzlichen Ausgaben für die benötigten Ressourcen. Das ist jedoch längst nicht alles und bei weitem nicht der größte Kostenfaktor.

Unternehmen führen Projekte durch, um Gewinn zu erzielen. Dazu investieren sie Geld und Zeit. Verzögert sich das Projekt, vermindert sich der ROI (Gewinn geteilt durch investiertes Kapital) durch den erhöhten Kapitaleinsatz. Der ROI ist eine häufig verwendete Kennzahl in Projekten. Oft wird diese jedoch nur unvollständig berechnet, außerdem berücksichtigt sie – angewandt auf einzelne Projekte – diverse gewinnschmälernde Faktoren gar nicht. Einige davon werden hier zunächst kurz beleuchtet.

Fast alle Projekte entwickeln in irgendeiner Form ein Produkt. Die allermeisten Produkte haben nur eine begrenzte Lebensdauer, die unter anderem von externen Faktoren (Markt, Konkurrenz, technologische Fortschritte etc.) beeinflusst wird. Ein verspätetes Projekt bedeutet also eine verringerte Produktlebensdauer, was den Gesamtgewinn weiter schmälert. Je schneller sich die externen Faktoren verändern, desto stärker ist diese Auswirkung und die IT ist eine der schnelllebigsten Branchen überhaupt. Wer von uns kennt nicht mindestens ein verspätetes Projekt, dessen Produkt bei der Fertigstellung bereits obsolet war?

Ein weiterer Faktor ist der verspätet einsetzende Cashflow aus dem fertigen Produkt. Bei Unternehmen mit knapper Liquidität bedeutet das bestenfalls einen teuren Überbrückungskredit, schlimmstenfalls die Insolvenz. Ein sehr wichtiger Faktor ist auch, dass die gebundenen Ressourcen nicht in anderen Projekten eingesetzt werden können, wodurch sich diese ebenfalls verspäten.

Die gute Nachricht ist, dass sich all diese Effekte positiv auswirken, wenn ein Projekt schneller fertig wird als geplant. Das kommt jedoch praktisch nie vor, während Verzögerungen an der Tagesordnung sind. Warum ist das so und was können wir dagegen tun?

Beschleunigung von Projekten mit CCPM

Der Beantwortung dieser Frage hilft die Theory of Constraints (ToC) von Eliyahu M. Goldratt. Es handelt sich dabei um eine allgemein anwendbare Management-Theorie, die darauf zielt, ein Unternehmen in seiner Gesamtheit zu verbessern. Ihre Anwendung auf das Projektmanagement führt zum Critical Chain Projektmanagement, kurz CCPM. Aufgrund des oben genannten starken Einflusses der Projektlaufzeit auf den Unternehmensgewinn konzentriert sie sich darauf, Projektlaufzeiten signifikant zu verkürzen. Eine Einsparung um die 25% liegt dabei durchaus im Bereich des Üblichen.

Beantworten wir zunächst die erste Teilfrage: Warum verzögern sich Projekte so oft und warum werden im Gegenzug nur so selten Projekte vor der geplanten Zeit fertig?

Ausgangspunkt für jedes Projekt sind Anforderungen, (erkannte) Abhängigkeiten, Zeitschätzungen und verfügbare Ressourcen. In einem Projektplan wie z.B. einem Gantt-Chart werden daraus Start- und Endtermine für jeden Vorgang und letztendlich das gesamte Projekt errechnet. Ich behaupte nun, dass die so geplanten Vorgänge erhebliche Sicherheitszeitreserven (in der Größenordnung von 50% der Gesamtzeit) enthalten. Das lässt sich an einem Beispiel illustrieren.

Angenommen, Sie wohnen in Wiesbaden und fahren täglich mit dem Auto nach Frankfurt zur Arbeit. Sie benötigen dafür durchschnittlich 40 Minuten. Jetzt sagt ihr Chef einen der folgenden Sätze zu Ihnen:

  • “Wir machen morgen um 9 Uhr eine Informationsveranstaltung zu Blutspenden. Wenn Sie möchten, können Sie gerne teilnehmen.”
  • “Bitte seien Sie morgen um 9 pünktlich beim Abteilungsmeeting!”
  • “Sie halten morgen um 9 einen Vortrag vor unseren wichtigsten Kunden. Wenn Sie nicht pünktlich sind, können Sie Ihren Job vergessen!”

Wie wirkt sich jeder Satz auf ihre Abfahrtszeit von zuhause aus? Sie werden feststellen, dass ihre Sicherheitsreserven steil ansteigen, je stärker sie für ihren Termin “verhaftet” werden. Was ist, wenn es einen Stau gibt? Eine Vollsperrung? Wenn das Auto nicht anspringt?

Je wichtiger das Projekt, desto wichtiger werden die Termine, desto mehr Sicherheitsreserven werden in jeden Vorgang eingeplant.

Angefangen beim schätzenden Mitarbeiter, der seine Termine halten will. Der Chefentwickler legt noch einmal 20% drauf, weil ihm mit seiner reichhaltigen Erfahrung noch mehr Dinge einfallen, die schiefgehen können. Und der Projektleiter schlägt noch einmal 30% drauf, weil seine Karriere am Projekt hängt und er weiß, dass das Management eh noch einmal 25% pauschal reduziert, weil ihm die Laufzeit (zu Recht!) zu lang vorkommt.

Sicherheitsreserven in lokalen Zeitschätzungen bringen nichts

Nachdem wir also so viele Sicherheitsreserven in jedem Vorgang haben, warum geht es trotzdem so oft schief? Offenbar gibt es Effekte, die die Reserven in den Vorgängen aufzehren. Einige davon sind das Parkinson-Prinzip, das Studentensyndrom und schädliches Multitasking. Hinzu kommt, dass aus verschiedenen Gründen Vorgänge, die tatsächlich schneller fertig werden, nicht zu einer Verkürzung des Gesamtprojekts führen. Hingegen führt praktisch jede Verzögerung auf dem kritischen Pfad eines Projekts zu einer Laufzeitverlängerung.

Die Theory of Constraints führt diese Ursachen auf ein gemeinsames Prinzip zurück, nämlich eine (schädliche) Managementphilosophie. Diese entstammt der Denkweise der Kostenrechnung, die besagt: Lokale Optimierungen (Kostenreduzierungen) sind gut für das Gesamtunternehmen, da sie die Gesamtkosten verringern. In Kombination mit dem Pareto-Prinzip (die 80-20-Regel) führt das zu einer Denkweise, die Goldratt die “Kostenwelt” nennt.

Vorrangiges Ziel eines Unternehmens ist es jedoch nicht, Kosten zu reduzieren, sondern Produkte zu verkaufen. Kosten kann man höchstens auf 0 reduzieren und zu diesem Zeitpunkt hat man kein Unternehmen mehr. Dieser Ansatz ist also von vorneherein beschränkt. Betrachtet man dagegen die Verkaufsseite, hat man theoretisch fast unbegrenzte Gewinnmöglichkeiten. Hätten Bill Gates und Paul Allen ein Microsoft bauen können, wenn Sie die ganze Zeit nur über Kosteneinsparungen nachgedacht hätten?

Lokale Optimierung ja - aber nur an der einen wirklich wichtigen Stelle

Im Gegensatz zur Kostenwelt hat man es in der Produktion wie im Projektmanagement (auch eine Form der Produktion) mit vielfältigen Abhängigkeiten und mit Engpässen (z.B. kritischer Pfad) zu tun. Letztere bestimmen dabei die gesamte Produktionskapazität. Daher bringen lokale Optimierungen (z.B. Vorgangszeitpuffer) in diesem Umfeld fast nie etwas.

Erschwerend kommt hinzu, dass das statistische Pareto-Prinzip nur für unabhängige Variablen gilt und daher in diesem Umfeld ebenfalls nicht greift. Projektmanager, die sich auf die Vorgänge mit der längsten Dauer konzentrieren und diese zu optimieren versuchen, verschwenden nur ihre Zeit. Stattdessen mutiert das Pareto-Prinzip zur “1 zu 99”-Regel, da man sich auf den Engpass und nur auf diesen konzentrieren muss.

Die CCPM-Methode berücksichtigt diese Denkweise. Sie ist auf einzelne Projekte anwendbar, entfaltet ihre ganze Wirkung jedoch erst auf der Ebene des Multiprojektmanagements. Sie hilft bei der Auswahl rentabler Projekte unter Berücksichtigung aller oben im Artikel genannten Faktoren, bei der Identifizierung und dem Management von Ressourcenengpässen und bei der Überwachung einer kleinen Anzahl einfach zu ermittelnder Kennzahlen um den “Gesundheitszustand” eines Projekts zu ermitteln.

CCPM in der Praxis

Wie wendet man die CCPM in der Praxis an? Ausgehend von einem herkömmlich erstellten Projektplan verringert man zunächst die Sicherheitsreserven dort, wo sie nicht gebraucht werden: In den einzelnen Vorgängen. Für unsere Zwecke ist eine 50:50 Wahrscheinlichkeit, dass ein Vorgang wie geplant abgeschlossen wird, völlig ausreichend. Ein normal geschätzter Vorgang wird eher auf 80-90% zielen und kann daher wegen des überproportional hohen Zeitanteils der geschätzten Risiken um mindestens 50% reduziert werden.

Nun haben wir einen um die Hälfte verkürzten Projektplan, der aber keinerlei Risikopuffer enthält. Da Murphys Gesetz erbarmungslos zuschlagen wird, brauchen wir natürlich einen Risikopuffer, aber der kommt jetzt dahin, wo er hingehört, nämlich ans Ende des kritischen Pfades als sog. “Projektpuffer”. Dieser wird je nach Risikoeinschätzung des Projekts zwischen 30 und 50 Prozent der Gesamtlaufzeit des Projekts betragen.

Als nächstes gilt es, eine der Hauptursachen für Verzögerungen auf dem kritischen Pfad zu beseitigen, nämlich die Überlastung kritischer Ressourcen. Wir alle kennen Mitarbeiter, die so gefragt sind, dass sie an vielen Baustellen arbeiten müssen und ständig neu priorisiert werden. Die Aufgabe ist hier, diese Ressourcen zu schützen und sie so einzuplanen, dass sie ihre Arbeit ohne schädliches Multitasking verrichten können. Kombiniert man diese zusätzliche Abhängigkeit mit dem kritischen Pfad, ergibt sich ein modifizierter (längerer!) kritischer Pfad, der als “Critical Chain” bezeichnet wird.

Eine weitere Ursache für Verzögerungen auf dem kritischen Pfad sind verspätete Zulieferungen für dessen Vorgänge. Um den Pfad hier zu schützen, plant man nach demselben Prinzip wie oben einen Puffer für Zulieferungen ein.

Schließlich werden noch für alle Ressourcen, die auf dem kritischen Pfad arbeiten, Ressourcenpuffer angelegt. Diese manifestieren sich im einfachsten Fall einfach in einer Reihe vom Mitteilungen, wann voraussichtlich der ihnen zugeteilte Vorgang auf dem kritischen Pfad beginnen wird, damit sie Gelegenheit haben, ihre anderen Tätigkeiten rechtzeitig abzuschließen oder geordnet zu unterbrechen und ohne Verzug mit dem kritischen Vorgang beginnen können.

Fazit

Zusammengefasst

  • Ineffiziente Vorgangspuffer wandern in effiziente Projekt- und Zubringerpuffer. Durch die verkürzten Vorgänge werden Effekte á la Parkinson und Studentensyndrom wirksam unterbunden (Randbemerkung: Das ist auch eine Stoßrichtung des agilen Projektmanagements).
  • Der kritische Pfad als Maßstab für die Projektlaufzeit wird verkürzt und durch diverse Maßnahmen geschützt.
  • Der Projektmanager braucht sich nicht mehr mit jedem verspäteten Vorgang befassen. Es genügt, die Puffer zu beobachten, um Probleme rechtzeitig zu erkennen.
  • Der Projektfortschritt wird nicht mehr über die Summe einzelner Vorgänge oder gar Kennzahlen wie verbrauchtes Budget gemessen. Entscheidend ist ausschließlich der Fortschritt auf dem kritischen Pfad.

Diese Art zu planen erfordert eine Reihe organisatorischer Begleitmaßnahmen – sie ist kein Selbstläufer. In der Tat ist eine zu starre Unternehmenskultur, die sich den notwendigen Änderungen verweigert einer der Hauptgründe für ein Scheitern der CCPM Methode. Es gibt aber andererseits eine Reihe von Unternehmen, die diese Methode seit Jahren bereits erfolgreich eingeführt haben. Die Berichte darüber sind noch dünn, da diese Unternehmen ihr Wissen als strategischen Wettbewerbsvorteil hüten.

Weiterführende Informationen finden sich in den Büchern von Eliyahu M. Goldratt und z.B. auf der Webseite des Projektmagazins.

Share |

August Office Day und jährliches Sommerfest 25.08.2010

Svenja Henß
Svenja Henß, Senior Assistant

Kaum zu glauben – aber wahr!
Nach fast 3 Wochen Dauerregen strahlte letzten Freitag, passend zum SDX Sommerfest, die Sonne vom blauen Himmel. :-)

  • Bevor der Grill am späten Nachmittag angeworfen wurde, gab es für die eXperts Vormittags zunächst News aus den Bereichen:
    - Marketing & Vertrieb (Mid-Year Review)
    - RIA Analyse mit Silverlight
    - sowie aus den Kompetenzfeldern.

Bei lauen Sommertemperaturen feierten die eXperts bis spät in die Nacht  auf der Dachterrasse und auch die ein oder andere Flasche Ramazotti musste dran glauben. Wie immer, einfach ein tolles Fest:

 

977206908_sdx_sommerfest_2010_009 977204311_sdx_sommerfest_2010_001

977208813_sdx_sommerfest_2010_015 977204610_sdx_sommerfest_2010_002

977210555_sdx_sommerfest_2010_020 977214546_sdx_sommerfest_2010_032

977207876_sdx_sommerfest_2010_012 977215900_sdx_sommerfest_2010_036

977221075_sdx_sommerfest_2010_054 977227572_sdx_sommerfest_2010_075

977218041_sdx_sommerfest_2010_044 977220155_sdx_sommerfest_2010_051

977223993_sdx_sommerfest_2010_063 977231372_sdx_sommerfest_2010_086

977226917_sdx_sommerfest_2010_073 977232273_sdx_sommerfest_2010_089

977203950_sdx_sommerfest_2010_140 977240690_sdx_sommerfest_2010_113

977247542_sdx_sommerfest_2010_130 977250119_sdx_sommerfest_2010_137
Share |

Ein paar Gedanken zu “Event-Based Components” 23.08.2010

Matthias Jauernig
Matthias Jauernig, Senior eXpert

Ralf Westphal verbreitet aktuell einige sehr interessante Informationen zu “Event-Based Components” (EBCs). Diese sieht er im Gegensatz zu klassischen Komponenten (mit expliziten Interfaces) als Evolutionsschritt in Richtung “Zusammensteckbarkeit”, ähnlich Bauteilen auf einer elektronischen Platine.

Den Gedanken von Ralf habe ich meine eigenen Gedanken hinzugefügt, welche sich auch in Diskussion mit meinen SDX-Kollegen in unserem rege genutzten internen Portal entwickelt haben und EBCs durchaus auch kritisch betrachten.

Zu meinem Blog-Beitrag (englisch) geht es hier: Some thoughts on Event-Based Components

Share |