Abfrageergebnisse werden unter PowerPivot manchmal als Textfeld gespeichert. Falls die ursprüngliche Datenquelle die Schlüsselfelder idealerweise als integer abgespeichert hat, sollten Sie überprüfen, ob der Datentyp (Data Type) als “Ganze Zahl” (Whole Number) markiert ist.
Oftmals haben die Datenquellen, die den PowerPivots zugrunde liegen aber keine Integer- Schlüsselfelder. Wie bei dem großen Bruder, den Analysis Services, sollten auch bei PowerPivot Tabellen die Schlüsselfelder unbedingt aus Integer-Werten bestehen. Um diese Regel umzusetzen, kann es erforderlich sein, schon bei der Abfrage auf die Quelldaten ein solches Integer-Wert Feld zu definieren.
Beispiel aus der AdventureWorksDW2008 R2 Datenbank, in der wir exemplarisch einen neuen Key erstellen auf Basis eines Varchar-Feldes und ihn mit dem vorhandenen CurrencyKey vergleichen:
select
CurrencyName,
DENSE_RANK()OVER (ORDERBY CurrencyName)as CurrencyNewKey,
CurrencyKey
from dbo.DimCurrency;
Dieses Szenario müsste erweitert werden, um in der Faktentabellen-Abfrage die Dimension entsprechend der in der Abfrage erzeugten Schlüsselwerte zu ersetzen. In unserer Beispiel Datenbank ist alles vorbildlich umgesetzt:
SELECT DC.CurrencyName, FactInternetSales.*
FROM FactInternetSales INNERJOIN
(Select CurrencyKey, CurrencyName from DimCurrency)as DC ON FactInternetSales.CurrencyKey = DC.CurrencyKey
Wenn es aber das CurrencyKey Feld nicht gäbe, würde die Abfrage analog wie folgt aussehen:
SELECT DC.CurrencyKey, FactInternetSales.*
FROM FactInternetSales INNERJOIN
(SelectDENSE_RANK()OVER (ORDERBY CurrencyName)as CurrencyKey,
CurrencyName from DimCurrency)as DC ON FactInternetSales.CurrencyName = DC.CurrencyName
Entsprechend sollten alle weiteren Dimensionen auf diese Art ersetzt werden. Damit ist schon eine sehr große Performance-Bremse gelöst.
Bereits in dieser Serie erschienen:
PowerPivot Tuning Tipp Nr. 1: Schlüsselwerte immer als Integer Wert definieren
PowerPivot Tuning Tipp Nr. 2: Nur benötigte Felder importieren
PowerPivot Tuning Tipp Nr. 3: Möglichst wenig Tabellen und Verknüpfungen
PowerPivot Tuning Tipp Nr. 4: N:M (Many-to-Many) Beziehungen vermeiden