Übersicht: Impromptu

IBM Cognos Impromptu unter Microsoft Vista

Nun habe ich die ruhige Zeit zum Jahreswechsel genutzt und mein neues Notebook installiert. 4 GB Speicher wollen voll genutzt werden, also Microsoft Vista 64 Bit. Aber was ist mit Impromptu – läuft das noch unter Vista?!

Es läuft: Die Version 7.4 MR 3 (da steht dann auch schon IBM Cognos dran) läuft auch unter Vista. Sinn macht es das Programm mit einem Rechtsklick als Administrator zu starten. Die Object Store läuft nicht unter Vista – damit auch erstmal nicht der Architect…

Parallel macht sich also eine Virtuelle Maschine mit Windows XP weithin gut.

Nun möchte ich aber noch die Ecken rund…

Da hat man es wirklich nicht leicht. Stundenlang sucht man in den ETL-Strecken und Aggregierungen der Kennzahlen, prüft und testet und hat endlich stolz korrekte Zahlen als Listenbericht und sogar als Grafik in einen Impromptu Bericht gebannt und das erste Feedback vom Anwender ist nicht “…ah, endlich übersichtliche Zahlen!” sondern “…können wir die Ecken vom Diagramm nicht abrunden?”

Na gut, wir sollten uns immer wieder klar machen, dass die Akzeptanz von Reporting-Systemen zu einem großen Teil von der Optik abhängt. In Cognos 8 wurde in dieser Richtung schon vieles erweitert (z.B. Tachometer, verschiedene Abfragen in einem Bericht…), steht aber nur Cognos Impromptu zur Verfügung wird es schwieriger.

runde ecken im impromptu diagramm

Die runden Ecken mit farbigem Hintergrund haben wir dann aber Dank der neuen Grafikbausteine in Impromptu 7.4 und einem Grafikprogramm doch noch hinbekommen.

Fehlende Tabs im Report-Abfrage Dialog

Nach der Installation der Impromptu User Version sind in der Impromptu Administrator Version in dem Abfragedialog Registerkarten verschwunden (Access, Profile, Client/Server).

Macht nichts: Unter dem Menüpunkt Tools / Options können die wieder eingeblendet werden: Auf der Registerkarte General die Option “Show advanced tabs in Query dialog box“.

Single Signon für Impromptu und PowerPlay (automatisches Anmelden)

Single Sign On für Impromptu / PowerPlay

Möchte ein Benutzer ein Impromptu Bericht öffnen ist eine Anmeldung an den zugehörigen Katalog nötig. Um die Auswahl von Benutzerklasse und Eingabe eines Passwortes zu umgehen kann der Login des Betriebssystems genutzt werden um die Anmeldung automatisch mit der richtigen Benutzerklasse durchzureichen.

Hier nochmal kurz die notwendigen Schritte zusammengefasst:
- Access Manager aufrufen und Benutzerklassen entsprechend der Katalog Benutzerklassen einrichten
- Die Benutzer müssen nicht alle zwingend angelegt werden, hier reicht es für jede Benutzerklasse einen Benutzer anzulegen
- In den Eigenschaften des Namespaces ist unter der Registerkarte Signon die Option “OS Signon” zu finden, diese einfach auswählen
- Nun muss nur noch in den Eigenschaften der einzelnen User die Betriebssystem Anmeldungen eingetragen werden
- fertig

Ergänzung:

- Ist noch keine Security mit dem Access Manager genutzt worden, muss hier erstmal ein LDAP Server konfiguriert werden (alternativ kann auch ein LAE File genutzt werden)
- danach nochmal im Configuration Manager den Configuration Wizard durchfühen und die Umgebung aktivieren

Listenberichte mit wechselndem Zeilenhintergrund formatieren

Wo ist eigentlich die Funktion in Cognos Inpromptu zu finden, mit der in einem Listenbericht die Zeilen abwechselnd grau und weiss hinterlegt werden? Eine solche Formatierung eines Listenberichtes – gerade der im Querformat mit vielen Spalten – erhöht die Lesbarkeit des Reports ungemein. Leider bietet Impromptu keine Standardeinstellung für eine solche Formatierung und wir müssen uns mit einem Kniff behelfen. So kann ein solcher Bericht aussehen:

bericht mit wechselndem zeilenhintergrund formatieren

Die Formatierung kann den einzelnen Zeilen über die Bedingungsformate zugewiesen werden. Hierzu werden alle geraden Zeilen mit einem grauen Bedingungsformat hinterlegt. Um zu wissen welches die geraden Zeilennummern wird eine berechnete Spalte (z.B. Zeilennummer) mit der Funktion running-count / laufende Anzahl angelegt. Diese Spalte muss im Bericht nicht angezeigt werden sondern übernimmt nur das Durchnummerieren der Zeilen. Die Formel für die formatierte Bedingung lautet dann: (Zeilennummer / 2) = round( (Zeilennummer / 2) , 0 )

Impromptu im Single Instance und Multi Instance Modus – Makro Automatisierung

Bei der Automatisierung von Impromptu Cognos Skript Makros kann es zu Fehlern führen, wenn dabei Impromptu im Multi Instance Mode ausgeführt wird. Diese eigenlich ganz hilfreiche Eigenschaft wurde vor ein paar Versionen eingeführt – seit dem ist es Möglich Impromptu mehrmals zu öffnen und so z.B. Abfragen mit mehreren Katalogen parallel zu bearbeiten ohne immer wieder alle Berichte schließen zu müssen oder bei lang laufenden Abfragen in einer zweiten Instanz an einem weiterarbeiten zu können.

Bei der Makroprogammierung kann es hier nun aber zu Schwierigkeiten kommen, wenn im Makro über CreateObject(“CognosImpromptu.Application”) die Applikation Referenziert wird. In dem Multiinstance Mode ist es hier nicht sichergestellt, ob ein geöffnetes Impromptu genutzt wird oder eine zweite Instanz gestartet wird.

Um hier auf Nummer Sicher zu gehen ist es ratsam den Modus auf Single Instance umzustellen. Dies geschieht über die Commandozeile: C:\Programme\Cognos\cer3\bin\ImpAdmin.exe -si (Impromptu wird dabei nicht gestartet)

Den Multiinstance Modus ist entsprechend über C:\Programme\Cognos\cer3\bin\ImpAdmin.exe -mi zu aktivieren.

Laufzeit eines Reports im IWR viel schlechter als im Impromptu Client

Wenn es um die Ausführungszeiten von Reports geht, kann es gar nicht schnell genug gehen. Google z.B. “verwöhnt” uns mit Antwortszeiten kleiner einer Sekunde zwischen dem Eingeben eines Suchbegriffes und dem Anzeigen der Suchergebnisse.

Auch bei der Reportperformance mit Impromptu spielen etliche Faktoren eine Rolle (Datenbankdesign, lokale Verarbeitung, abgefragte Datenmengen, komplexität der Abfrage…).

Bei dem IWR kommt ein Faktor hinzu: Ein Report wird mit dem Impromptu Client erstellt und benötigt nur wenige Sekunden bis zum Ergebnis. Auf dem Impromptu Web Report Server veröffentlicht benötigt der selbe Report aber nun Minuten bis ein Ergebnis angezeigt wird.

Dies muss nicht unbedingt ein Fehler sein, sondern kann mit der unterschiedlichen Aufbereitung der Reports zusammenhängen. Bei dem Impromptu Client werden die Daten viel schneller angezeigt, weil nicht alle Daten von der Datenbank abgerufen und grafisch aufbereitet sein müssen. Bei dem IWR hingegen erfolgt die Ausgabe der Daten in der Regel als PDF Dokument. Bevor also das Ergebnis im IWR angezeigt wird müssen alle Daten abgerufen und für das PDF Dokument aufbereitet werden.

Tipp: Um ein Gefühl zu bekommen wie lange der Report auf dem IWR läuft, rufen den Bericht in der Bildschirm-Layout Ansicht mit Strg-Ende ab (dann werden alle Daten abgerufen und aufbereitet). Â

Â

Tabellen mit Cognos Skript automatisiert zu einem Impromptu-Katalog hinzufügen

Cognos Impromptu und Cognos PowerPlay lassen sich in vielen Bereichen durch Makros automatisieren. Hierbei dient der mitglieferte Cognos Skript Editor als Entwicklungsumgebung für Cognos Makros. Da Cognos Skript mit Visual-Basic stark verwandt ist, kann bei größeren Projekten das Visual Studio eingesetzt werden.

Ein kleines Beispiel: In einer Vertriebsapplikation werden Daten zu einer neu angelegten Niederlassung immer in neuen Tabellen gespeichert. Die Tabellen bekommen im Namen eine Ergänzung des Niederlassungscodes. Im Katalog soll nun automatisch nach dem Anlegen einer neuen Niederlassung in der Applikation die neue Tabelle ergänzt werden können. Dieses Erweitern des Kataloges kann durch ein kurzes Cognos Skript Makro geschehen:

Sub Main()
  Dim objImpAnw As Object
  Dim objImpKat As Object
  Dim objDB As Object
 Â
  Dim sNiederlassung As String
  Dim Tabellenname As String

  Set objImpAnw = CreateObject(“CognosImpromptu.Application”)
  objImpAnw.OpenCatalog “C:\Cognos\Vertrieb.cat”
  Set objImpKat = objImpAnw.ActiveCatalog
  Set objDB = objImpKat.Databases(1)

  sNiederlassung = “00512″
  sTabellenname = “SA_NIEDERL” & sNiederlassung

  objDB.Tables.Add sTabellenName
  objImpKat.Save

  Set objDB = Nothing
  Set objImpKat = Nothing
  Set objImpAnw = Nothing
End Sub

Dieses Beispiel zeigt das prinzipielle Vorgehen. Die nächsten Schritte wären z.B. dann das Setzen von Tabellenverbindungen, vornehmen von Umbenennungen, Einrichten von Benutzerrechten. Ein Blick in die Dokumentation zu Cognos Skript zeigt wie Mächtig der Funktionsumfang ist. Zum Thema Katalogerstellung sind alle Funktionen, die im Impromptu selber zu sehen sind auch über ein Makro zu erreichen.

Definieren von Impromptu-Berichtsstrukturen per Exceldatei

Szenario:
In ihrem System wird jeder Buchung einem Konto zugeordnet. Sie möchten nun Berichte erstellen, bei denen für definierte Kontengruppen in mehreren Hierarchien Summen berechnet werden (z.B. für Bilanzen, Gewinn und Verlustrechungen…).

Problematik:
Damit die Strukturdatei einfach zu pflegen ist, soll hierfür eine Excel-Datei herangezogen werden. Zusätzlich soll nicht jedes Konto einzeln, sondern Kontenbereiche zugeordnet werden (z.B. Umlagevermögen: Konto 30710 bis 30899). Es werden also systemfremde Daten und eine Zuordnungsmöglichkeit benötigt.

Lösungsmöglichkeit:
Systemfremde Daten lassen sich in Universaldateien halten und in einem Impromptu-Katalog wie Datenbanktabellen einbinden. In der Katalogordnersicht besteht für den Berichtsersteller kein Unterschied zwischen Datenbanktabellen und Universaldateien.
Die Strukturdatei enthält als Spalten nun die verschiedenen Ebenen und zusätzlich zwei Spalten für den zugeordneten Kontenbereich (ab Konto, bis Konto).

Für den Zugriff auf eine Exceldatei muss ein getrennter Katalog angelegt werden. Mit diesem wird ein Bericht mit den Strukturdaten erstellt, der dann als Universaldatei gespeichert werden kann,

In dem Hauptkatalog ist die erstellte Universaldatei wie eine Tabelle aufzunehmen und dann mit dem Kontenplan (oder dem Konto der Buchungstabelle) zu verbinden. Um die Konten den vorgegebenen Bereichen zuzuordnen, kann keine Gleichverbindung genutzt werden. Hier hilft eine manuelle Verbindungsdefinition:
Kontonummer >= ab Konto und Kontonummer <= bis Konto.

Wird jetzt ein Bericht mit der Kontenstruktur erstellt, wird jedem Konto die richtige Strukturzeile zugeordnet. Mit einer Gruppierung der einzelnen Hierarchiespalten erhält man die Kontengruppen, für die dann z.B. Summen gebildet werden können.

Zugriff auf mehrere Datenbanken mit einem Impromptu-Katalog

Ein Vorteil von Congos8 ist der einfache gleichzeitige Zugriff auf verschiedene Datenquellen in einem Modell. Bei Impromptu kann nur auf eine Datenquelle pro Katalog zugegriffen werden. Externe Daten können nur über den Umweg einer Universaldatei hinzugefügt werden. Mit einem kleinen Trick geht es aber doch:
Szenario:
Die Daten für ihre Berichte stammen aus verschiedenen Quellsystemen, z.B. einem ERP-System und einer getrennten Personal-Datenbank. Um Ihre erforderlichen Berichte zu erstellen, benötigen Sie zu jeder Zeit die aktuellen Daten aus beiden Systemen.

Problematik:
In einem Impromptu Katalog kann man immer nur eine Datenquelle angeben – d.h. auch immer nur die aktuellen Daten aus einem System auslesen. Die Möglichkeit, die Daten des zweiten Systems über Universaldateien einzubinden ist nicht optimal, da hier manuell dafür gesorgt werden muss, dass diese Daten ebenfalls immer auf dem aktuellen Stand sind.

Lösungsmöglichkeit:
Es gibt für diese Anforderung eine Lösung, wenn zur Vorbereitung Microsoft Access zur Verfügung steht: In Access können Sie eine neue Datenbank anlegen, die aber keine Access-Tabellen beinhaltet, sondern nur die Sicht auf die Tabellen der beiden Quellsysteme.
Mit Access kann auf beliebig viele Datenbanken zur selben Zeit zugegriffen werden. Die erstellte Access Datenbank können Sie dann als Datenquelle in Ihrem Impromptu Katalog nutzen.

Die Daten werden also bei jedem Aufruf des Berichtes aktuell aus beiden Datenbanksystemen abgerufen. Praktikabel ist die Lösung aber nur, wenn nicht mit allzugroßen Datenmengen gearbeitet wird.