Zoals de titel al zegt: mijn SSAS OLAP-cube (SQL 2008R2) gaf verkeerde resultaten als ik een combinatie van een measure en een feit selecteerde. Ik heb dagen met dit probleem geworsteld. Ik belde oud-collega’s en las veel artikelen online, maar vond nog geen oplossing.
Het rare was dat mijn SQL-query op de views die ik in SSAS gebruikte, wel het GOEDE resultaat gaf. Als ik door de cube bladerde, kreeg ik het verkeerde resultaat. Wat ik geprobeerd heb:
- De cube van de server verwijderd en gedeployed naar een nieuwe database
- Alle dimensies weggegooid en alleen de twee gebruikt die het verkeerde resultaat gaven
- Alle rollen verwijderd en één admin-rol gebruikt
- Een nieuwe cube gemaakt met maar één feit en twee dimensies: WERKT
Nu wist ik dat het een instelling in mijn cube was. Het was moeilijk te vinden wat er fout was.
Ik probeerde alle objecten te verwijderen, één voor één. Ik begon met een van mijn databronnen. Ik had twee databronnen, één naar productie en één naar test. Omdat ik vorige week naar TEST was overgestapt, probeerde ik de databron naar productie te verwijderen. Dat gaf een vreemde fout:
AHA! Bij deze melding ging er een lampje branden. Waarom kreeg ik deze fout? Ik had mijn data source view al naar de TEST-connectie gezet. Hmmmmmm. Er was iets mis met de partitie. Ik gebruik partities om mijn grote feitentabellen op te splitsen in kleinere partities per jaar, voor de performance. Ik doe dat met query’s, en niet met partities met een table bind.
Selecteer je de partitie en druk je op F4 (properties), dan kun je in het venster met properties op de knop “Source” drukken.
Druk nu op de knop met de drie puntjes (…). AHA! De partitie haalde zijn data uit de VERKEERDE databron!
Wat betekent dit? Dat hij zijn data van mijn productieserver haalt. Best vreemd, want mijn data source view wijst naar mijn TEST-databron.
Wat ik hiervan leerde: verander je de data source views (van test naar PRD of andersom), verander dan ook de partities die query binds gebruiken! Verander je de partitie niet, dan mengt hij zijn data van beide servers. Dit hoef je alleen te doen als je partities beperkt met een query. Normaal heeft een partitie standaard een table bind.
Hopelijk helpt dit anderen die hetzelfde probleem hebben met verkeerde data in hun cube.
Veelgestelde vragen
Waarom geeft mijn SSAS-cube andere getallen dan mijn SQL-query?
Een mogelijke oorzaak is een partitie die uit de verkeerde databron leest. Hier gebruikte de partitie een query bind die nog naar de productieserver wees, terwijl de data source view naar test wees. De cube mengde dan data van beide servers.
Hoe controleer ik welke databron een SSAS-partitie gebruikt?
Selecteer de partitie en druk op F4 voor de properties. Klik op de knop Source en daarna op de knop met de drie puntjes (...). Het venster toont de databron waar de partitie uit leest.
Wat moet ik in de partities aanpassen als ik een SSAS data source view van test naar productie zet?
Zet elke partitie met een query bind om naar de nieuwe databron. Partities met de standaard table bind hoeven dat niet. Sla je dit over, dan mengt de cube data van beide servers.
Hoe vind ik een probleem met een databron in een SSAS-cube?
Probeer de databron te verwijderen. Gebruikt een partitie hem nog, dan geeft SSAS een foutmelding. In dit geval wees die fout naar de partitie met de verkeerde databron.
Wat is een query bound partitie in SSAS?
Dat is een partitie die zijn rijen uit een query haalt in plaats van uit een hele tabel. Je kunt er een grote feitentabel mee opsplitsen in partities per jaar, voor de performance. De standaard is een table bind.





Reacties
Gerelateerde blogs
SSAS: Hoe formatteer je een dimensie-attribuut?
Hierarchieën in Analysis Services 2005
Dimension security implementeren in SSAS