Question

Pour commencer, je ne connais pas du tout OLAP. Par conséquent, si la terminologie est désactivée, n'hésitez pas à proposer des corrections.

Je lis à propos d’OLAP et il semble qu’il s’agisse d’échange rapide d’espace, dans lequel vous calculez à l'avance (ou calculez à la demande) et stockez des agrégations relatives à vos données, définies par certaines dimensions. Je comprends comment cela fonctionne pour les dimensions qui ont un ensemble discret de valeurs, comme {Homme, Femme} ou {Jan, Février, ... Déc} ou {@US_STATES}. Mais qu'en est-il des dimensions qui ont des valeurs complètement arbitraires telles que (0, 1.25, 3.14156, 70000.23, ...)?

L'utilisation de OLAP empêche-t-elle l'utilisation d'agrégations dans les requêtes qui atteignent les tables de faits, ou est-elle simplement utilisée pour contourner des éléments pouvant être précalculés? Comme, des agrégations arbitraires sur des valeurs arbitraires doivent encore être faites à la volée?

Toute aide pour en savoir plus sur OLAP serait grandement appréciée. À première vue, Google et SO semblent tous deux un peu secs (comparés à d'autres sujets plus populaires).

Éditer: une dimension sur laquelle il y a des valeurs arbitraires a été demandée.

  • VITESSE des expériences: 1,256 m / s, -2,234 m / s, 33,78 m / s
  • VALEUR des transactions: 120,56 USD, 22,47 USD, 9,47 USD
Était-ce utile?

La solution

Vos exemples de colonne vélocité et valeur ne sont généralement pas du type de colonnes que vous interrogeriez de manière OLAP. Ce sont les valeurs que vous essayez d'extraire et figureraient probablement dans le jeu de résultats, sous forme de lignes individuelles ou agrégé.

Cependant, j'ai dit généralement . Dans notre schéma OLAP, nous avons un bon exemple de colonne à laquelle vous pensez: event_time (un champ date-time, avec une granularité à la seconde). Dans nos données, ce sera presque unique: il n'y aura pas deux événements pendant la même seconde, mais comme nous avons des années de données dans notre tableau, cela signifie qu'il existe encore des centaines de millions de valeurs potentiellement discrètes, et lorsque nous exécutons notre Requêtes OLAP, nous voulons presque toujours contraindre en fonction des plages de temps.

La solution est de faire ce que David Raznick a dit: vous créez un "seau". version de la valeur. Ainsi, dans notre table, en plus de la colonne event_time, nous avons une colonne event_time_bucketed - qui est simplement la date de l'événement, la partie heure étant 00:00:00. Cela réduit le nombre de valeurs distinctes de centaines de millions à quelques milliers. Ensuite, dans toutes les requêtes qui contraignent à la date, nous contraignons à la fois la colonne seau et la colonne réelle (car la colonne seau ne sera pas assez précise pour nous donner la valeur réelle), par exemple:

   WHERE event_time BETWEEN '2009.02.03 18:32:41' AND '2009.03.01 18:32:41'
     AND event_time_bucketed BETWEEN '2009.02.03' AND '2009.03.01'

Dans ces cas, l'utilisateur final ne voit jamais la colonne event_time_bucketed - elle ne sert qu'à l'optimisation des requêtes.

Pour les valeurs à virgule flottante que vous avez mentionnées, la stratégie de compartiment peut nécessiter un peu plus de réflexion, car vous souhaitez choisir une méthode qui aboutira à une distribution relativement égale des valeurs et qui préservera la contiguïté. Par exemple, si vous avez une distribution de cloche classique (avec des queues qui peuvent être très longues), vous voudriez définir la plage dans laquelle vit la majeure partie de la population (par exemple, 1 ou 2 écarts types par rapport à la moyenne), divisez-la en uniforme. des seaux et créez deux autres seaux pour "tout ce qui est plus petit" et "tout ce qui est plus gros".

Autres conseils

J'ai trouvé ce lien utile http://www.ssas-info.com/

Consultez la section webcasts où ils vous expliqueront différents aspects, à savoir la BI, la conception d’un cube, les dimensions, les calculs, les agrégations, les indicateurs de performance, les perspectives, etc.

.

Dans OLAP, les agrégations aident à réduire le temps de réponse de la requête en disposant de valeurs précalculées qui seraient utilisées par la requête. Toutefois, l’espace supplémentaire est l’augmentation de l’espace de stockage car il faudrait plus d’espace pour stocker les agrégations en dehors des données de base.

SQL Server Analysis Services comprend un assistant d’optimisation basé sur l’utilisation qui facilite la conception de l’agrégation en analysant les requêtes soumises par les clients (clients de rapports tels que SQL Server Reporting Services, Excel ou autre) et en affinant la conception en conséquence.

J'espère que cela vous aidera.

acclamations

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top