English Deutsch

 

Problem mit Excel 2007 und Analysis Services KPIs

Das Einbinden und Anzeigen von Analysis Services KPIs in Excel 2007 ist ja eine faszinierende und oft beworbene Möglichkeit. Leider zeigt sich in der Praxis oft, dass KPIs wirklich noch einmal speziell für Excel 2007 geprüft werden müssen, weil Berechnungen und Formatierungen in dem MDX, das Excel bei Abfragen generiert, oftmals nicht funktionieren. Dasselbe gilt leider auch für KPIs, die in einer SharePoint-KPI-Liste verwendet werden sollen. Unlängst ist uns aber ein besonders gemeiner Fall begegnet: beim Öffnen einer Excel-Tabelle mit enthaltener Cube-Abfrage erschien immer dieser Fehler:

 


 

Der Grund war ein auf dem Cube definierter KPI mit einer Gewichtung:

 


 

Nachdem die Gewichtung entfernt wurde, ließen sich die Excel-Tabellen wieder normal öffnen. Vielen Dank an Horst Haschke von Hiestand und Suhr für das Übermitteln der Lösung!

Kaskadierende Parameter – Easy as can be

Herr G. Ordnet, Controller der Firma Adventure Works, möchte sich für ausgewählte Produkte seines Unternehmens die Internetverkäufe und die Frachtkosten ansehen. Er beauftragt den Reportbauer Z. Schnell mit dem Erstellen eines Berichts. Selbiger überdenkt die Anforderung und stellt einen Bericht mit einer Parameterliste aller Produkte zur Verfügung.

Nachdem Herr G. Ordnet mehrere Male alle 606 Produkte seiner Firma in der Auswahlkombobox des Berichtes durchforstet hat, platzt ihm der Kragen und er bittet um eine “vernünftige Einschränkung der Produkte nach Kategorien.”

Ein Glück, dass in der Datenbank diese Produktkategorien vorhanden sind, denkt sich Herr Schnell und entwickelt die sog. “cascading parameters” – also voneinander abhängige, hierarchisch angeordnete Parameter, deren Auswahl die Wertanzahl folgender Parameter einschränkt.

Zuerst werden im Report drei statt einem Parameter erzeugt. Alle Parameter sind mehrwertig und haben keinen Standardwert.



Dann werden drei Datasets für die Parameter mit folgenden Statements angelegt:

Produktkategorie:

SELECT      ProductCategoryKey, EnglishProductCategoryName FROM  DimProductCategory

Produktunterkategorie:

SELECT        ProductSubcategoryKey, EnglishProductSubcategoryName FROM         DimProductSubcategory

WHERE        (ProductCategoryKey IN (@ProductCategory))

Produkte selbst:

SELECT        EnglishProductName, ProductKey FROM  DimProduct

WHERE        (ProductSubcategoryKey IN (@ProdSubCategory))

Schlussendlich erzeugt Herr Schnell ein Dataset für die Werteabfrage:

SELECT   DimProduct.EnglishProductName, FactInternetSales.OrderQuantity * FactInternetSales.UnitPrice AS OrderVolume, FactInternetSales.Freight FROM DimProduct INNER JOIN FactInternetSales ON DimProduct.ProductKey = FactInternetSales.ProductKey

WHERE  (FactInternetSales.ProductKey IN (@Products))


Weil Herr Schnell auf Standardwerte verzichtet hat, und alle vom vorhergehenden Parameter abhängigen Parameterabfragen ohne eine Auswahl des vorhergehenden Parameters nicht getätigt werden können, sind die Auswahlboxen der nachfolgenden Parameter solange deaktiviert, bis die nötige Vorauswahl von Kategorien oder Unterkategorien abgeschlossen ist.


 

Nun hat Herr G. Ordnet nur die Produkte zur Auswahl, deren Anzahl er vorher durch die Auswahl an Kategorien eingeschränkt hat – und Herr Schnell noch seinen Job.