Calcul des Tendances avec MDX – Moyenne mobile

Posté par wissemhabboub le 29 mai 2008

Les tendances servent à connaitre le comportement d’une variable/indicateur dans le temps et pourra être utilisée pour prédire ces prochaines valeurs. Elle nous permet de connaitre si la tendance de notre variable est à la hausse, à la baisse ou plus ou moins stable.

Plusieurs techniques sont utilisés pour mesurer les tendances, les plus connues sont : la moyenne mobile, la régression linéaire, la tendance logarithmique, la tendance exponentielle, puissance, polynomiale,…..

Dans cette série d’articles j’essayerai d’aborder les différentes techniques de calcul des tendances et les instructions MDX relatives à ces techniques. ce premier article sera consacré à la moyenne mobile.

1- Moyenne mobile  :

C’est la moyenne des « n » dernières (souvent les mois) périodes, elle est très utilisée pour mesurer la tendance des ventes ou pour le réapprovisionnement, elle permet d’éliminer les effets de la saisonnalité.

Une courbe de tendance de moyenne mobile égalise les fluctuations des données afin de clarifier un motif ou une tendance. Une telle courbe utilise un nombre spécifique de points de données (définis par le biais de l’option Période), calcule une moyenne, puis utilise cette valeur comme un point de la courbe de tendance. Si la Période est égale à 2, par exemple, la moyenne des deux premiers points de données est utilisée comme le premier point de la courbe de tendance de moyenne mobile. La moyenne du deuxième et du troisième point de données est utilisée comme le deuxième point de la courbe de tendance, etc. 

Exemple MDX pour adventureWorks:  Calcul de la moyenne mobile des ventes en prenant à chaque fois les 12 derniers mois.

AVG(  LASTPERIODS (12,[Order Date].[Month].CurrentMember)   ,  [Measures].[Internet Sales Amount]  )

Moyenne mobile

Syntaxe AVG: http://msdn.microsoft.com/en-us/library/ms146067.aspx

Syntaxe LastPeriods:  http://msdn.microsoft.com/en-us/library/ms145588.aspx 

Publié dans Analysis Services | Pas de Commentaire »

Utilisation des Dimensions à variation lente (SCD)

Posté par wissemhabboub le 26 mai 2008

souvent on croit qu’il y a relation entre les dimensions à variation lente et SSAS et on pose souvent une question du type:

Question:

Dans mon datamart, j’ai une dimension dont un des attributs depend du temps, c-a-d que sa valeur peut changer avec le temps, j’ai pensé alors au SCD de type2 ,donc j’ai ajoute des colonnes : start_date et end_date,
mais ce qui me préoccupe, c’est comment faire le lien avec le moteur d’analyse SSAS, comment il prendra compte de ces champs?
si je fais une requete MDX sur un objet selon une date donnée, comment pourra t-il choisir la ligne exacte?

 

Réponse:

En faite le composant SCD ne gère pas la relation avec la table de fait. tous ce qu’il fait est de gèrer la table de la dimension seulement c’est à dire en fonction de la configuration (Type 1,2,3) il ajoute les lignes à la table de dimension en mettant à jour les champs startdate et enddate.et c’est à nous aprés de faire nos requettes/Composants SSIS de chargement de la table de fait (au moment ou on récupère la clé de dimension à ajouter à la table de fait) d’ajouter dans la condition de jointure la relation avec startdate et enddate de la table de dimension.on affecte à la ligne de la table de fait en fonction de sa date, la ligne de dimension correspondante (la ligne active à cette date)

Exemple:
table de dimension est « DimTable »
ton attribut de dimension est « attribut »
La table de fait « FactTable »
Le champ date de la table de fait est « datetransaction »
A un moment donnée au niveau de notre package SSIS on doit récupérer la surrogateKey de la table de dimension « DimTable » qui représente la clé unique de notre dimension (et non pas la clé métier) afin de l’insérer dans la table de fait. a ce moment la requette sera la suivante:
Select DimTable.Surrogatekey
from Facttable Inner Join Dimtable on ( and FactTable.datetransaction between DimTable.startDate and Dimtable.EndDate)

http://msdn.microsoft.com/fr-fr/library/ms141715.aspx

Publié dans Integration Services | 1 Commentaire »

Cumul avec MDX

Posté par wissemhabboub le 22 mai 2008

La façon la plus simple réaliser un cumul d’une mesure X par rapport à une dimension Y en utilisant MDX est la suivante: 

SUM([].[].Iteme(0):[].[].Currentmember,[Measures].[])  la syntaxe de la fonction SUM : http://msdn.microsoft.com/en-us/library/ms145484.aspx  

Exemple:  CREATE MEMBER CURRENTCUBE.[Measures].[Cumul CA]
 AS SUM([Produit].[Produit].[Produit].item(0):[Produit].[Produit].Currentmember,[Measures].[CA]),
VISIBLE = 1  ;  

NB: cet exemple pourra être utilisé par exemple pour représenter dans un graphe reporting services un scoring des produits en utilisant 20/80. Ceci fera l’objet d’un prochain article

Publié dans Analysis Services | 1 Commentaire »

Diagnostique des crashs SSAS (Flight recorder)

Posté par wissemhabboub le 16 mai 2008

Le problème qu’on rencontre après un  crash de SSAS, est qu’on veut bien savoir pourquoi le serveur a crashé afin d’éviter que ca se reproduise.

Afin de vous aider à diagnostiquer le problème, SSAS possède un fichier trace spéciale appelé « flight recorder »  qui est similaire à une boite noire d’un avion et qui enregistre des captures sur les activités et l’état du serveur.

Le fichier se trouve à l’emplacement suivant : « ……\Program Files\Microsoft SQL Server\MSSQL.2\OLAP\Log\FlightRecorderCurrent.trc »

Par Défaut, SSAS capture les activités et l’état du serveur pour la dernière heure seulement. Dés qu’une heure passe SSAS archive  le fichier trace en cours sous un autre nom « FlightRecorderBack.trc » et commence un autre fichier trace.

Les fichiers trace peuvent être ouvert avec « SQL Server Profiler » afin de connaitre les causes du crash.

NB : L’activation et le paramétrage de la capture des activités et l’état du serveur (FlightRecorder) se fait à partir des propriétés du serveur SSAS au niveau de SSMS 

http://technet.microsoft.com/en-us/library/cc304417.aspx

Publié dans Analysis Services | Pas de Commentaire »

Problème fréquent avec dimensions à variation lente (Slowly changing Dimension)

Posté par wissemhabboub le 9 mai 2008

Un problème fréquent qu’on rencontre souvent avec les dimensions à variation lente surtout quand on travail avec les modèles de fichiers Excel de Kimball pour la génération du datawarehouse, le problème rencontré c’est qu’à chaque exécution de notre package pour charger une dimension, on remarque que les données sont insérés à la fin de la table automatiquement et on a l’impression que dimension à variation lente ne fonctionne pas.

et bein on a tors!!!!

le problème se pose quand on définie une valeur par défaut différente de NULL aux colonnes de la table de la dimension « RowEndDate et RowStartDate » qui gère l’expiration d’un enregistrement donné (évidement dans le cas ou on gère les attributs historique par les dates et non pas par un boollean).
dans le cas des fichiers Excel de Mr Kimball la valeur par défaut de cette colonne « RowEndDate » est : 31/12/9999

Si vous allez dans votre package ou vous avez configurer votre dimension à variation lente et vous afficher la propriété « CurrentRow Where » du composant, vous allez trouver par défaut [RowStartDate] IS NOT NULL AND [RowEndDate] IS NULL. cette propriété détermine quand est ce que le composant va considérer qu’une ligne est active ou pas, dans le cas ou vous définissez une valeur par défaut à la colonne RowEndDate tel que Kimball le fait différente de Null il faut changer cette propriété « CurrentRow Where » exemple: Year(RowEndDate)=9999.

http://msdn.microsoft.com/fr-fr/library/ms141715.aspx
http://msdn.microsoft.com/fr-fr/library/ms136014.aspx

Publié dans Integration Services | Pas de Commentaire »

Données non structurés (Unstructured Data) & TextMining

Posté par wissemhabboub le 2 mai 2008

La combinaison des composants SSIS de texte mining et de traitement des données non structurées : file import, Fuzzy groupping, fuzzy lookup, term extraction et term lookup et les algorithmes de DataMining offrent une maniabilité et un traitement des données non structuré impressionnante. Dans ce qui suit, je vais introduire quelques scénarios d’utilisation de données non structurées. 

Supposant que vous avez des données textes stockés dans des fichiers différents rapatriés à partir des sites internet ou à partir des données d’un call center sur un thème données (commentaires sur un produit, Assistance Clientèle,…), et vous désirez analyser ces données. 

Nettoyage de données : 

L’utilisation de Fuzzy groupping pour nettoyer vos données et trouver des lignes canonique (exemple: si vous avez une table contenant des lignes en double mais avec quelque différence et vous voulez avoir une table nettoyée) 

Association des fichiers à des entités métiers : 

Utiliser File import pour importer les fichiers dans une colonne de table pour pouvoir bénéficier des traitements possibles sur les tables et associer vos fichiers texte à des entités métiers (produits, client,….) : chaque fichier texte peut correspondre un produit ou autre entité métier. 

Utilisation des dictionnaires métiers : 

Si vous avez des dictionnaires métier, vous pouvez utiliser le composant recherche de terme (term lookup) pour chercher la fréquence d’apparition des termes du dictionnaire dans votre colonne texte (exemple: analyser le contenu de vos fichiers textes pour évaluer l’appréciation des clients sur des produits en utilisant un dictionnaire contenant les noms les termes utilisés pour apprécier ou non un produit). 

Création de dictionnaire /Extraire des noms, phrases,… : 

Si vous ne possédez pas des dictionnaires métiers et vous voulez en créer ou si vous voulez extraire des noms, des phrases,… a partir du texte utilisez extraction de terme (Term extraction). 

Recherche des correspondances non exactes (Recherche floue) : 

L’utilisation de Fuzzy lookup pour trouver la correspondance non exacte entre une colonne texte dans une table et une autre dans une table de référence en utilisant la logique floue avec degré de similitude (exemple: a partir d’une table contenant les noms de vos produits saisie d’une manière non homogène, on veut faire le mappage avec la table produit de notre BDD; fuzzy lookup reconnait les noms de produits même s’ils ne sont pas écrit exactement de la même manière tel que :micro ordinateur & ordinateur par exemple, Fuzzy Lookup offre la possibilité aussi de paramétrer le degré de similitude entre le texte à mapper et le texte de référence). 

La combinaison de ces composants avec les algorithmes de datamining de SQL server Analysis services clustering pour faire la segmentation (classer les appels d’un call center par fréquence de répétition de certain de termes) ou l’association pour trouver les phrases/ les mots qui se répètent souvent ensemble qui peuvent être utiles pour améliorer les performances des agents d’un call center par exemple. 

Liens utiles: 

http://www.microsoft.com/technet/prodtechnol/sql/2005/intro2is.mspx
http://msdn.microsoft.com/fr-fr/library/ms141809.aspx
http://msdn.microsoft.com/fr-fr/library/ms137850.aspx 

 

 

Publié dans Analysis Services, Integration Services | 2 Commentaires »

 

Mémoire Professionnel : L'a... |
nxtisi |
Cours informatique PC |
Unblog.fr | Créer un blog | Annuaire | Signaler un abus | Affichage exterieur
| club informatique Gessien
| Les Hackers de Sherwood !*!*!