Je suis encore en train d'apprendre les bases de l'OLAP, des cubes et du SSAS, mais je suis en train d'atteindre une barrière de performance et je ne suis pas sûr de comprendre ce qui se passe. J'ai donc un cube simple, qui définit deux dimensions simples (type et surface), une troisième hiérarchie de dimension temporelle (va Year-> Quarter-> Month-> Day-> Hour-> 10-Minute), et une mesure (somme sur un champ appelé Count). La base de données suit les événements: quand ils se produisent, quels types sont, où ils se sont produits. La table de faits est un résumé précalculé des événements pour chaque intervalle de 10 minutes. Donc, je configure mon cube et j'utilise le navigateur pour voir tous mes attributs en même temps: nombre total de zones par type dans le temps, avec un zoom depuis Année jusqu'à l'intervalle de 10 minutes. Les rapports sont similaires en termes de performances à la navigation.Pourquoi mon cube calcule-t-il si lentement au niveau d'exploration le plus bas?
Pour l'essentiel, c'est assez rapide. Mais à mesure que je m'enfonce dans l'arbre d'exploration, il faut plus de temps pour voir chaque niveau. Enfin, au niveau des minutes, il semble qu'il faille environ 20 minutes avant d'afficher les six enregistrements. Mais j'ai alors réalisé que je pouvais voir les autres explorations de niveau minute sans attendre, donc il semble que le cube calcule la table entière à ce moment-là, ce qui explique pourquoi cela prend tellement de temps.
Je ne comprends pas. Je m'attendrais à ce que le passage à Quarters ou Years prenne le plus de temps, puisqu'il doit regrouper toutes les données. Aller à la métrique la plus basse, filtrée lourdement autour de 180 cellules (6 intervalles, 10 types, 3 zones), semble être la plus rapide. Pourquoi le cube traite-t-il l'intégralité de l'ensemble de données au lieu du seul sous-ensemble visible? Pourquoi le plus haut niveau d'agrégation est-il si rapide et le niveau le plus bas si lent? Plus important encore, y a-t-il quelque chose que je puisse faire par configuration ou conception pour l'améliorer? Quelques détails supplémentaires que je viens de penser à ce qui peut importer: Il s'agit de SSAS 2005, exécuté sur SQL Server 2005, en utilisant Visual Studio 2005 pour la conception BI. Le cube est défini (par défaut) sur MOLAP complet, mais n'est pas partitionné. La table de faits a 1.838.304 lignes, donc ce n'est pas une folle base de données d'entreprise, mais ce n'est pas non plus un test simple. Il n'y a pas de partitionnement et tout le matériel SQL s'exécute sur un serveur, auquel j'accède à distance depuis mon poste de travail.
C'est une bonne théorie, je l'ai vérifié pour être sûr, mais ce n'est pas le cas. Regarder le cube foré pour 2009-Q1-Janvier-1-0 me donne un compte pour chaque 10 minutes. J'ai ensuite utilisé ces dates dans une requête SQL par rapport aux données d'origine et j'ai confirmé que la somme (count) est correcte. Ce que je regarde, c'est les totaux pour chaque tranche de 10 minutes dans cette fenêtre d'heure, et il montre aussi les totaux globaux pour: chaque heure de ce jour, chaque jour de ce mois, etc. Mais tous étaient là avant. Mais maintenant je peux forer "gratuitement" n'importe où parce que le navigateur a chargé le cube entier dans la mémoire. – CodexArcanum