Archive

Archives de l'auteur

Service Web et ETL deux philosophies différentes pour intégrer des données

Dans le monde de l’intégration et de l’échange de données deux écoles – aux concepts diamétralement différents – se distinguent pour proposer des solutions. Il s’agit des architectures orientées service (ou SOA pour Service Oriented Architecture) et des architectures BI plutôt orientées ETL. Historiquement ces deux visions ont suivi un cheminement différents dans l’évolution de l’informatique. Les SOA viennent du monde  de l’objet, du Java et du Web tandis que la BI est issus des environnements base de données, SQL et transferts batchs. Ce billet synthétise les différences, les avantages et les inconvénients de ces deux types de solutions sous forme d’un tableau synoptique.

Comparatifs des Architectures Orientées Services et des Architectures Business Intelligence: avantages et inconvénients

Le programme de Microsoft pour 2012 [2/2]

On en saura sans doute beaucoup plus à l’occasion des Microsoft Techdays 2012 (prévus les 7,8 et 9 Février prochain), mais voici déjà une brève présentation des différents produits et évolutions qui vont désormais constituer l’écosystème BI autour de SQL-Server 2012. SQL-Server « Denali » – c’est son nom de code – est prévu en version commerciale pour la fin de l’année. (Pour l’heure il n’est disponible qu’en Release Candidate depuis le site officiel). Petit tour d’horizon en deux parties.

Ce billet est la suite d’une première partie publiée le 27 Janvier qui présentait les nouveautés 2012 du SGBD SQL-Server, de Integration Services et de Analysis Services ainsi que le nouveau BI Semantic Model (BISM).

Aconcagua

Kilimandjaro 5891m, Denali 6194m, est-ce que l'Aconcagua, plus haut sommet d'Amérique Latine avec 6962m sera le petit nom de la prochaine version de SQL-Server ?

2.1/ Reporting Services

SSRS ne contient pas d’innovation majeure dans sa mouture 2012. Cela fait déjà plusieurs versions que Microsoft n’en fait plus sa priorité et cette outil à l’interface « old school » sera vraisemblablement remplacé prochainement. On attend par exemple toujours de savoir comment il pourra se connecter aux BISM, Microsoft n’étant pas très bavard sur le sujet.

Pour l’heure deux améliorations sont à noter:

  • Une meilleure intégration dans Sharepoint: celle-ci est grandement simplifiée
  • Un système d’alerte utilisateur:  SSRS possède maintenant un système d’abonnement plus efficace et mieux adapté aux besoins des consommateurs de rapports. Il est dorénavant possible de créer des règles qui alerteront vos usagers en fonction du mouvement de vos données dans vos rapports.

2.2/ Power View / Crescent

Power View (nom de code Crescent) est un outil permettant de visualiser les données, de partager rapidement les analyses et de créer des animations de rapports en quelques clics, facilitées par l’utilisation d’un ruban proche d’Office 2010.

Techniquement, Power View permet de manipuler des données dans une interface Silverlight intégrée à SharePoint. Power View s’appuie sur la nouvelle couche sémantique BI (BISM) et utilise un nouveau modèle de données de type tabulaire, utilisé par Power Pivot, et désormais greffé à Analysis Services.

Les analyses Power View se conçoivent comme des animations et peuvent être « publiées » au format Web ou Powerpoint.

Une démo Power View en vidéo:

2.3/ Powerpivot V2

Avec SQL-Server 2012, Powerpivot change de dimension. Avec la version 2008-R2 Powerpivot V1 était surtout un gros plug-in Excel. Aujourd’hui, ce n’est plus seulement un outil autonome, c’est aussi un client et un outil de conception de modèle d’analyse BISM en mode tabulaire. La nouvelle version de l’addin s’aligne avec les projet SSAS Tabular de Visual Studio. Enfin, Powerpivot utilise aussi le langage DAX (qui ressemble à du code de macro Excel) pour accéder aux données.

Principales nouveautés:

  • Création de KPI : permet de définir des objectifs aux mesures et une iconographie pour représenter l’atteinte ou non de ces objectifs
  • Tri des membres en fonction d’une autre colonne
  • Vue en mode Diagramme (comme dans Visual Studio)
  • Table de temps : permet de définir une dimension comme “temporelle”
  • Perspectives : permet de définir des “vues” différentes sur le modèle (ex : mesures et dimensions pour les commerciaux et pour le marketing) ; équivalent aux perspectives d’Analysis Services
  • Etc…

Voir aussi cette vidéo en ligne sur Powerpivot.

2.4/ Dependency Services / Projet Barcelona

SQL-Server 2012 propose aussi un outil additionnel qui vaut le détour. Issus du projet « Barcelona » Dependency Services comment ce composant additionnel permet d’aider à la traçabilité des données ou encore de maintenir une documentation à jour sur un processus d’intégration de données. L’idée est de tracer toutes les dépendances des données entre les composants d’une solution BI (sources, SQL, packages SSIS, rapports, modèles PowerPivot, etc.).

L’objectif est de pouvoir répondre à des questions comme : que ce passe t-il si je supprime cette colonne ?

Cet outil permet de générer des métadonnées, sous forme de tableaux ou de schéma qui peuvent ensuite être publié sous forma de pages web.

Voir aussi cette vidéo de présentation de Dependency Services.

2.5/ Parallel Datawarehouse / Projet Madison

Comme pour la version 2008-R2 SQL-Server inclue une offre Parallel Datawarehouse  (ex-projet Madison) qui lui permet de muscler son offre sur le segment du datawarehouse en dopant les performances et la capacité de données traitées.

Il s’agit d’une appliance couplant SQL Server à la technologie de Datallegro – une société rachetée en 2008 par Microsoft – qui vise les méga entrepôts de données. Datallegro fournit une version massivement parallèle (MPP pour Massive Parallel Processing) de SQL Server à même d’être déployée sur un grand nombre de nœuds serveurs afin d’accélérer le traitement des requêtes. Plusieurs partenaires matériels de Microsoft, dont Bull, Dell, HP, EMC et IBM, devrait dans un futur proche proposer des configurations prêtes à l’emploi autour de cette version de SQL Server.

Ces appliances permettent respectivement d’accélérer la mise en place d’un projet de datawarehouse (en fournissant hardware et SQL server pré-installé et optimisé pour un usage décisionnel) et d’assurer des performances optimisées sur des très gros volumes.

2.6/ Windows Azure

Windows Azure est la solution « cloud » de Microsoft. Elle permet d’héberger, exécuter et gérer des applications et données dans le ou les centre de données Microsoft de son choix (dont 2 en Europe).

Windows Azure

Schéma de fonctionnement de Windows Azure, à quand une solution BI complète dans le "cloud" ?

Concernant la business intelligence, Windows Azure n’offre pas encore de solution complète. Si une base relationnelle est disponible dans le nuage (SQL-Azure) avec des fonctionnalités de serveur de rapport qui seront accessible via BIDS 2012 (Business Intelligence Development studio), il faudra attendre encore un peu pour voir une suite BI complète déployée sur Azure. Pour l’heure la seule solution consiste à héberger les données sur les datacenters Microsoft et d’utiliser le connecteur AppFabric pour connecter son propre système d’information aux ressources hébergées chez Microsoft (comme le propose cette société).

Ainsi donc s’achève ce tour d’horizon des nouveautés SQL-Server 2012. Si certaines paraissent être plus de l’ordre du gadget, il y a néanmoins de nombreuses innovations majeures, que ce soit en terme d’outils ou de fonctionnalités, faisant de 2012 une année charnière dans le développement de la BI version Microsoft. On pourra cependant regretter que la firme de Redmond « tâte le terrain » dans toutes les directions dans le but de tester le marché et le besoin, plutôt que d’indiquer clairement la démarche dans laquelle elle souhaite se positionner à l’avenir.

Liens utiles :

Le programme de Microsoft pour 2012 [1/2]

On en saura sans doute beaucoup plus à l’occasion des Microsoft Techdays 2012 (prévus les 7,8 et 9 Février prochain), mais voici déjà une brève présentation des différents produits et évolutions qui vont désormais constituer l’écosystème BI autour de SQL-Server 2012. SQL-Server « Denali » – c’est son nom de code – est prévu en version commerciale pour la fin de l’année. (Pour l’heure il n’est disponible qu’en Release Candidate depuis le site officiel). Petit tour d’horizon en deux parties.

Mont McKinley ou "Denali"

Le mont McKinley, ou "Denali" en langue locale athapascane, plus haut sommet d'Amérique du Nord, culmine à 6194m

1.1/ SQL-Server 2012 aka « Denali »

Pour sa mouture 2012 de SQL-Server, Microsoft met en avant 2 fonctionnalités nouvelles pour son SGBD:

  • Le AlwaysOn qui est une solution de reprise en cas de sinistre (disaster recovery plan) afin de garantir une haute disponibilité de la base de données. Cette fonctionnalité est sensée garantir un « failover » deux fois plus rapide en cas de sinistre. Voir cette vidéo de présentation.
  • Les ColumnStore Index (projet « Apollo ») pour proposer de meilleures performances sur des requêtes de type jointure en étoile. Ces indexes colonnes viennent enrichir la liste des solutions d’optimisation et de tuning existantes sur les précédentes versions (indexes, indexes cluster, statistics…). Plus d’info dans ce livre blanc sur les bénéfices d’Apollo.

On notera aussi d’autres innovations intéressantes sur SQL-Server 2012:

  • Le Change Data Capture (CDC) qui supporte maintenant les bases de données Oracle
  • Le SSMA (SQL Server Migration Assistant), qui permet d’automatiser la migration de base de données non SQL Server vers SQL Server
  • Juneau: une nouvelle interface de développement rassemblant Visual Studio et Management Studio dans la même IDE
  • La fonction FileTable permettant de créer un objet base de données lié à un fichier localisé dans un dossier du système de fichier.
  • Etc…

1.2/ BI Semantic Model (BISM)

La vraie nouveauté conceptuelle de SQL-Server 2012 est l’arrivée du BI Semantic Model (ou BISM). Il s’agit là d’un vrai modèle Business de l’entreprise qui vient rassembler et enrichir les précédentes notions d’UDM (SSAS) et de report model (Report Builder).

Ce modèle est composé de 3 couches:

  • une couche d’accès aux données offrant un accès en ROLAP, MOLAP, Vertipaq (nouveau serveur OLAP en mémoire, faisant partie du projet Apollo), ou direct query
  • une couche Business logique qui offre une structuration des données soit en OLAP via SSAS et MDX ou bien via powerpivot et DAX
  • une couche data model qui supporte les données tabulaires et multi-dimensionnelles

Ces BI semantic models pourront être créés à partir de Visual Studio ou de PowerPivot.

Vous l’aurez compris, Microsoft tente une nouvelle fois de présenter une alternative métier crédible à la  notion d’ »univers » cher à Business Objects. En l’intégrant avec toutes ses technologies existantes (ce qui n’était pas le cas de feu les report models), il semble cette année mettre toutes les chances de son coté. A voir si les BISM tiennent le choc sur le gros volumes.

A noter qu’il n’est pas prévu pour l’instant de possibilité de migrer des UDM en BISM.

BI Semantic Model architecture

Le BISM dans le nouveau écosystème SQL-Server 2012

1.3/ Integration Services

Les nouveautés 2012 concernant l’intégration de données sont articulées autour d’outils complémentaires à SSIS: Data Quality Services et le déjà célèbre Master Data Services.

  • Data Quality Services (DQS): c’est un outil destiné à maintenir et améliorer la qualité des données de l’entreprise en provenance de sources tierces (clients, fournisseurs, …).
    • DQS permet aussi la modélisation métier des données. Par le biais d’une interface client il sera possible de créer des bases de connaissance (type thésaurus).
    • Ces bases contiendront des règles d’épuration, de validation ainsi que les données de référence. DQS est aussi un outil précieux pour le recherche de doublons et dans l’évolution des bases de connaissance.
    • Enfin, les différentes règles de nettoyage pourront être utilisées au niveau les flux de données dans Integration services (SSIS) via un nouveau composant.
  • Master Data Services (MDS) qui existait déjà dans la version précédente de SQL-Server a été grandement amélioré. Il permet de définir les données de références, de gérer les métadonnées. Grâce à son intégration comme plugin d’Excel, il permet de filtrer et modifier les données avant de les visualiser dans Excel. On regrettera qu’il n’existe apparemment toujours pas de système de « lock » pour gérer les accès simultanés…

1.4/ Analysis Services

SSAS est indiscutablement le parent pauvre des nouveautés de cette version Denali. Tellement pauvre que dans la foulée de la présentation l’an dernier son sort a agité la blogosphère spécialisée (voir cet article entre autre). De nombreux experts ont caressée l’hypothèse que Microsoft soit en train de s’employer à mettre son moteur OLAP sur une voie de garage.

Il est vrai que le manque de souplesse des modèles UDM sous-jacents à SSAS a souvent été pointé du doigt tant il représentait une difficulté à résoudre les problématiques métiers les moins standards. Cela a conduit les experts du monde entier à « tordre » l’outil dans tous les sens afin de faire rentrer une logique métier calquée sur du relationnel, dans une modélisation multi-dimensionnelle.

C’est dans cette perspective qu’il faut voir l’arrivée de BISM, Vertipaq et DAX. Ces outils sont destinés à compléter SSAS plus qu’à le remplacer. Car comme cela a été exprimé plus haut, les volumes très importants de données nécessiteront toujours de « dénormaliser » et de passer en dimensionnel. Ces « concurents » au couple SSAS/MDX permettront juste de se simplifier la vie pour modéliser des problématiques métiers relationnelles sur des volumes faibles.

La suite de cet article sur les nouveautés de SQL-Server 2012 sera publiée début Février. Au programme: Reporting Services, Crescent, PowerPivot, Barcelona et Azure !

Liens utiles :

Le passage Projet Produit, étape clé dans le succès des projets BI

Imaginez… Un matin, vous êtes sereinement en train de travailler sur un nouveau projet… Jusqu’à ce que l’on vous téléphone. C’est un ancien client affolé, qui vous appelle parce que l’application que vous avez livrée 9 mois auparavant est tombée en rade au cours de la nuit. Il vous faut alors vous dégager du temps en urgence, pour vous replonger en catastrophe dans un contexte que vous avez largement eu le temps d’oublier,… et en plus les conditions de votre intervention « pompier » n’ont pas été définies au préalable… Le cauchemar !
Si au moins une partie de ce scénario sonne comme un air de déjà-vu pour vous, cet article consacré à la gestion du passage en maintenance pourrait vous intéresser ;-)

Le cas de figure évoqué en introduction est volontairement caricatural, mais c’est pour mettre en lumière la nécessité de bien gérer le passage projet produit dans les projets BI dès qu’ils atteignent une certaine taille.
Le décisionnel n’échappe pas à la règle propre à tout projet informatique ou industriel : quel que soit la technologie utilisée, il faut consacrer du temps à la transformation du projet en produit. Cette étape est indispensable au succès du projet et à son bon ressenti par le client.
Elle permet en outre de clarifier le rôle de chacun et donne l’opportunité à l’équipe projet de « passer le relais » proprement aux personnes qui auront le produit en charge.

Trois bonnes pratiques permettent de préparer « en douceur » le passage en maintenance tout au long du projet :

  1. Anticipation des problématiques maintenance
  2. Rédaction et validation du contrat de maintenance
  3. Période de transition projet-produit

1/ Anticipation des problématiques maintenance

Il est toujours bon d’aborder la problématique maintenance le plus tôt possible dans le cycle de vie du projet. Elle doit faire partie de la phase d’étude et idéalement elle est même évoqué en avant-vente.

Il s’agit de se poser à chaque étape significative du projet les questions indispensables sur le devenir du projet que l’on développe. Par exemple (liste non exhaustive) :

  • Sur quelle plate-forme sera déployée l’application ?
  • Existe-t-il une équipe de maintenance pour cette plate-forme?
  • Ou bien le projet en est-il le « pilote » ? (Auquel cas il va probablement « essuyer les plâtres » de sa mise en place et ce surcoût devra être anticipé)
  • Quel sera le « running cost » (coût d’exploitation) du produit une fois passé en exploitation ?
  • Ce coût a-t-il été budgété lors de l’évaluation du projet ?
  • Cette équipe de maintenance a-t-elle la bande passante pour gérer une application de plus ?
  • Cette équipe est-elle suffisamment formée aux technologies utilisées par le futur produit ?
  • Etc…

Le suivi de ces questions doit être effectué en continue à mesure que le projet progresse. A la manière d’une analyse de risque, il faut réévaluer régulièrement la situation de façon à s’assurer que les choix et les aléas du projet permettent de rester en phase avec les objectifs pour le passage en maintenance.

2/ Contrat de maintenance

Une autre bonne pratique pour envisager sereinement le passage en maintenance, est de se mettre d’accord sur un contrat de maintenance (parfois appelé « maintenance charter » ou « maintenance agreement ») avec l’équipe qui aura en charge l’exploitation du projet devenu produit.
Le meilleur moment pour commencer à rédiger ce contrat est souvent lorsque l’on passe en phase de recette de l’application. A ce stade le projet est suffisamment avancé pour se consacrer de façon efficace au contrat de maintenance, et il reste encore du temps à chaque partie pour préparer ensemble la mise en production.

Le contrat de maintenance est destiné à permettre :

  • A l’équipe de maintenance de valider la documentation livrée par l’équipe projet (avec des aller/retour possible, si elle ne lui parait pas suffisamment complète) :
    • Doc technique de l’application
    • Fiches d’exploitation
    • Procédures de maintenance
    • Doc de reprise en cas de panne (« what if »)
    • Etc…
  • De définir le périmètre de ce qui relève de la maintenance et de l’évolution. C’est à dire qui prendra en compte tel type de demande utilisateur (équipe de maintenance ? nouvelle version ? ou nouveau projet ?)
  • De nommer des key-users fonctionnels qui serviront de référents en cas de panne nécessitant un arbitrage « métier »
  • De définir des référents techniques (souvent issus de l’équipe projet) si l’équipe de maintenance ne parvient pas à se dépêtrer d’une panne, qui pourront intervenir au titre d’une prestation exceptionnelle

Le key-user fonctionnel et le référent technique sont des partenaires essentiels de l’équipe maintenance. En fonction du degré d’autonomie de la maintenance, on devra s’assurer qu’ils aient une disponibilité suffisante pour l’assister.

3/ Période de transition projet-produit

Il est aussi fortement recommandé de prévoir une période de transition durant laquelle l’équipe projet et l’équipe de maintenance travaillent ensemble à la fin du projet. Cela permet d’assurer un transfert de compétence efficace. La durée de cette période dépend à la fois de la complexité du projet et de l’expérience de l’équipe en charge du produit une fois livré.
Durant cette phase l’équipe projet laisse progressivement la main à l’équipe de maintenance et gère avec elle les évènements les plus épineux. C’est une façon de s’assurer que la transmission de connaissance a été réellement efficace.

On peut imaginer cette coopération sur un environnement de production ou un environnement de « pre-prod » (si par exemple la sécurité ne permet pas à l’équipe projet d’avoir les droits d’accès nécessaires). L’essentiel étant de le faire sur un environnement représentatif, dans un contexte aussi proche du réel que possible, et de ne pas laisser la maintenance seule « du jour au lendemain ».
C’est aussi souvent l’occasion de compléter la documentation avec des cas réels de maintenance gérés par les deux équipes.

Enfin, en BI, par manque de ressource, on confie souvent – à tord – la maintenance à l’administrateur de base de données (DBA), alors que les rôle sont quand même sensiblement différents. D’une part le DBA est sans doute surqualifié pour la plupart des tâches de maintenance (ou au moins pour le premier niveau d’intervention), et d’autre part il a souvent un niveau de disponibilité trop faible pour s’en occuper efficacement. Le choix et la composition de l’équipe de maintenance a donc toute son importance.

Ainsi donc se termine cet article qui a tenté de recenser les bonnes pratiques en matière de passage projet produit. N’hésitez pas à laisser des commentaires si vous avez vous aussi des leviers pour faciliter la transmission d’un projet à la maintenance.

VMware : Monter une machine virtuelle 64 bits

Que ce soit pour tester un nouvel outil, pour valider une architecture ou pour monter un environnement de formation, nous sommes tous régulièrement amenés à utiliser des machines virtuelles ou VM.

Ayant récemment été confronté à certaines difficultés pour « monter » une VM en 64 bits sous notre serveur VMware, voici un billet détaillant la procédure à suivre.

OS 64 bits supportés par VMware

En premier lieu, voici une petite liste (non exhaustive) des systèmes d’exploitations 64-bits supportés par VMware :

  • Windows XP 64-bit
  • Windows Vista 64-bit
  • Windows 2003 Server 64-bit
  • Windows 2008 Server 64-bit
  • Linux 64-bit
  • Applications entreprises en 64-bit, comme Exchange 2007 64-bit

Tester la capacité du serveur hôte

Une chose à savoir concernant la capacité de son serveur de VM (host server) à exécuter des VM 64-bits : le serveur hôte doit obligatoirement être en 64-bits.  Il n’est pas possible d’exécuter  une machine virtuelle 64 bits sur un serveur 32 bits.

Enfin tous les serveurs 64 bits ne sont pas forcément aptes à lancer des VM en 64 bits. Cela dépend aussi du processeur.

Heureusement l’éditeur a mis en place un outil qui effectue cette vérification :

Configurer le serveur de VM

Une fois avoir vérifier la capacité du serveur hôte il faut éditer les propriétés du BIOS de celui-ci :

  1. Démarrer le serveur
  2. Taper F2 afin de lancer le ‘System Setup’ du serveur
  3. Entrer dans  « CPU Information »
  4. Activer l’option « Virtualization Technology » (VT) qui est désactivée par défaut
  5. Redémarrer le serveur

=> Le serveur hôte est maintenant prêt à accueillir des VM 64 bits

Créer la machine virtuelle

La création de la VM 64-bits se fait ensuite très simplement en sélectionnant un OS 64-bits (voir copie d’acran ci-dessous).

Création d'une VM 64-bits

Création d'une VM 64-bits

Sources

Remerciements à Olivier Marché pour son expertise technique sur la question.

Liens sur VMware et le 64-bits :

http://www.petri.co.il/virtual_run_a_64_bit_guest_operating_system_in_vmware.htm

http://communities.vmware.com/message/1174789

Lien sur l’édition des propriétés du BIOS :

http://support.euro.dell.com/support/edocs/systems/pe1900/en/hom/html/syssetup.htm#wp1054756

SQL-Server : Comment évaluer la qualité d’indexes et faire les REBUILD et REORGANIZE en conséquence ?

Afin de profiter pleinement de l’optimisation des temps de réponses que procurent les indexes, il ne faut pas oublier de prévoir une tâche régulière d’ »entretien ». Elle consiste à effectuer des REBUILD ou des REORGANIZE en fonction de l’état de fragmentation de l’indexe. Cette tâche pourra ensuite être intégrée à un job de chargement quotidien par exemple.

Voici un récapitulatif des « best practises » en la matière.

Astuce

Utiliser la fonction ‘sys.dm_db_index_physical_stats‘ et son champ ‘avg_fragmentation_in_percent

Syntaxe

sys.dm_db_index_physical_stats (
{ database_id | NULL }
, { object_id | NULL }
, { index_id | NULL | 0 }
, { partition_number | NULL }
, { mode | NULL | DEFAULT }
)

Exemple

SELECT b.name, a.* FROM
sys.dm_db_index_physical_stats (
DB_ID(N’Ma_base’)
, OBJECT_ID(N’dbo.Ma_table’)
, NULL
, NULL
, DEFAULT
) AS a
JOIN sys.indexes AS b ON a.object_id = b.object_id AND a.index_id = b.index_id

Recommendations Microsoft

Valeur de avg_fragmentation_in_percent Correction à apporter
> 5% et < = 30% ALTER INDEX REORGANIZE
> 30% ALTER INDEX REBUILD WITH (ONLINE = ON)

Exemples

ALTER INDEX [Mon_indexe] ON dbo.Ma_table REBUILD
ALTER INDEX [Mon_indexe] ON dbo.Ma_table REORGANIZE

SSAS : Aggréger des mesures de cube sous forme de médiane

Lors d’une récente mission chez un client nous avons été confronté au besoin d’agréger des mesures de cube sous forme de médiane.

Intérêt d’agréger une mesure en médiane

Concrètement, ce besoin revient à retourner la valeur médiane d’une mesure pour les dimensions en cours, plutôt que classiquement la somme ou la moyenne.  Sur un exemple basique, pour une mesure Chiffre d’Affaire, autour d’un axe d’analyse Région, le besoin client est de retourner la valeur médiane du CA de chacune des régions :

EX :    [Bretagne=10M€,   Sud Ouest=17M€, PACA=23M€,   Rhone Alpes=31M€,   IDF=51M€ ]

Le CA au niveau national sera la valeur médiane de la liste des valeurs régions, soit 23M€.

Fonctionnellement prendre la valeur médiane (plutôt que la valeur moyenne) a pour effet de minimiser l’impact des valeurs extrêmes, et donc de minimiser le « bruit » que pourrait provoquer des erreurs de saisie ou de chargement.

EX : Si l’on rajoute [Alsace=300M€] à la liste précédente (ce qui pourrait correspondre à une erreur de saisie – avec un zéro de trop)

La valeur médiane au niveau national est 27M€

=> L’impact de l’erreur de saisie de l’opérateur Alsacien sur le CA national est minimisé. Une agrégation en moyenne aurait « tiré vers le haut » le CA national (moyenne = 72M€)

Sur l’exemple donné – qui est volontairement simpliste – le bénéfice de l’agrégation en médiane est plutôt léger, mais sur une liste de valeurs plus importante, il y a de nombreux cas fonctionnels où la médiane d’une liste de valeurs est bien plus représentative (et intéressante pour l’utilisateur) que la moyenne .

Problématique

Le problème vient du fait que les agrégation de type médiane n’est pas supporté nativement par Analysis Services.

Type d'agrégation supportés par SSAS

Types d'agrégation supportés par SSAS

Solution

La solution que nous avons proposée est d’utiliser la fonction MDX  MEDIAN(). C’est une fonction mathématique de base qui retourne la valeur médiane d’une mesure pour un « set » donné.

Elle doit être appelée avec 2 paramètres :

  • L’ensemble de valeurs sur lequel « ventiler » la valeur médiane, le « set »
  • et la mesure à agréger

Dans le cas du CA par région cela donnerait une mesure calculée du style  :

CA_National =     MEDIAN( [Geography].[Region].Members, (= liste de valeurs)
[Measures].[CA]) (= mesure à agréger)

=> Cette solution fonctionne et retourne effectivement la valeur médiane du CA de chaque région

En allant plus loin

On remarquera qu’en réalité la solution proposée n’agrège pas – à proprement parler – en médiane : elle calcule la valeur médiane d’une mesure existante. Et ce n’est pas tout à fait la même chose ! Car cette mesure existante a son propre type d’agrégation…

C’est à dire, qu’elle calcule la valeur médiane, d’une liste de valeurs qui restent à leur type d’agrégation par défaut. Dans l’exemple, la formule d’agrégation ne fonctionne qu’au niveau national : la valeur retournée est la médiane des valeurs CA au niveau région, valeurs qui sont elle même agrégées… dans leur type d’agrégation par défaut définit dans SSAS (c’est à dire Somme, Moyenne etc…)

Le besoin de notre client était plus complexe que cela : il souhaitait une valeur médiane d’une mesure quelque soit l’axe d’analyse et quelque soit le niveau de navigation dans la dimension.

Par exemple sur une mesure DélaisRésolutionIncident, le souhait est de voir retournée la valeur médiane (de toute les valeurs disponibles) quelque soit l’axe d’analyse : que ce soit au niveau d’un mois, d’une année, d’un service, d’une région, d’une sous région etc.

Nous avons proposé une solution calée sur la précédente : utiliser la fonction MEDIAN en passant cette fois comme « set »  l’ensemble des lignes  de faits disponibles. Cela donne quelque chose comme :

MEDIAN_DelaisResIncident =     MEDIAN( [DimFait].[DimFait hierarchy].[DimFait fact line].Members, (= ensemble des lignes de fait)
[Measures].[ValDelaisResolutionIncident]) (= mesure à agréger)

Pour cette formule nous avons du créer dans le cube – via le DSV – une dimension de fait dont le nombre de lignes au niveau le plus fin est exactement le même que celui de la table de fait. Cette dimension « virtuelle » ne sert qu’à définir le « set » de valeurs.

=> Cette solution fonctionne et permet une réelle agrégation de mesure sous forme de médiane.

PS : Ce second exemple illustre bien l’intérêt de la médiane évoqué en introduction : si par exemple un incident est resté non clôturé plusieurs mois, alors que généralement ils le sont en quelques minutes, cette anomalie « pourrira » l’indicateur de moyenne. L’indicateur de médiane en revanche sera bien plus pertinent pour l’utilisateur.

Temps de réponse

Si la solution proposée fonctionne sur le papier et avec nos jeux de tests, elle s’est révélée un peu décevante dans la pratique. Avec l’augmentation du nombre de lignes de faits, le temps de réponse du cube explose lorsque l’on fait appel à la mesure utilisant la médiane.

En effet, avec un nombre de ligne de l’ordre de plusieurs dizaines de milliers d’enregistrements, le temps de réponse dépasse les 2 minutes (le « time out » de notre outil de restitution). A titre de comparaison, l’agrégation classique en moyenne, sur les mêmes données met moins d’une seconde…

=> Cette solution est donc à utiliser avec précaution.

Analyse

Mais pourquoi cela prend-t-il autant de temps ?

Cette fonction MDX  MEDIAN est à l’origine une fonction mathématique, pas une fonction d’agrégation. Les valeurs ne sont donc pas pré-calculées avec cette médiane comme elles le seraient avec les agrégations en Moyenne ou en Somme. La solution proposée est en réalité une utilisation détournée de la fonction MEDIAN

Dans tous les exemples d’utilisation que l’on trouve de cette fonction,  le premier paramètre (le « set ») est de cardinalité très faible. Alors que dans le cas exposé ci-dessus l’ensemble de « ventilation » est l’ensemble des lignes de faits, donc un ensemble à cardinalité plutôt élevée.

La fonction Median ne permet pas de pré-aggrégation dans la mesure ou son algorithme de résolution nécessite 2 « passages » sur la liste de valeur (là où la Moyenne n’en nécessite qu’un) : un passage pour trier toutes les valeurs, un autre pour prendre la moyenne des deux valeurs du milieu de la liste triée.

Dans le premier exemple avec le CA par région, en réalité le cube se base sur les pré-agrégations sous forme de Somme du CA stockées pour chaque région, et calcule ensuite la médiane de ces pré-agrégations. L’algorithme des 2 « passages » n’est en fait déroulé que sur une liste de 22 valeurs. Tandis que dans notre cas il est déroulé sur le nombre de lignes de fait.

=> La fonction MDX  MEDIAN n’est donc à utiliser pour agréger une mesure que sur des tables de faits de faible population.

SSIS : Lenteurs extrêmes à l’ouverture/exécution de BIDS

Vous avez peut-être déjà rencontré un problème d’extrème lenteur à l’ouverture de BI Developement Studio (BIDS), lors de développement de flux SSIS.

Symptômes :

Le problème se manifeste par un « blocage technique » de Visual Studio (avec perte de la main) d’une durée de 8 à 15 minutes lorsque :

  • l’on ouvre un fichier de flux SSIS (*.dtsx)
  • l’on lance une exécution de flux SSIS (*.dtsx) en mode debug, (l’attente déclenchant généralement un timeout sur le « fork » du processus de debug de Visual Studio cf. ci-après)

Ce blocage est indépendant du processus (normal) de vérification des lots du package, qui intervient une fois les 8/15 minutes de blocage technique passées.

Ce problème persiste :

  • au changement de user
  • au changement de machines
  • à la bascule des fichiers et/ou bases de données en local

Le retard à l’exécution est parfois tellement important que le « fork » du thread de debug par rapport au thread de Visual Studio, passe en « time out », provoquant le message d’erreur suivant :

071708_1347_SSISLenteur1

Une fois que le « fork » a échoué une fois, toute les autres tentatives échoueront venant s’ « empiler » par process ID :

071708_1347_SSISLenteur2

Pour qu’un nouveau test d’exécution de flux en mode debug soit de nouveau effectif, il faut réinitialiser les paramètres utilisateur de Visual Studio :

  • Menu Démarrer -> Exécuter -> ‘devenv /resetsettings

Analyse :

Une analyse poussée du problème a permis de se rendre compte :

  • lorsque le problème se manifeste, une connexion HTTP est effectuée vers un serveur distant de Microsoft (crl.microsoft.com) visible avec la commande MS-DOS NETSTAT
  • cette connexion est bloquée en attente de réponse (statut SYN_SENT) (voir la copie d’écran ci-jointe)
  • au bout des 10 à 15 minutes d’attente cette connexion se ferme et le fichier s’ouvre/s’exécute -> cette connexion en attente est à l’origine du problème
  • CRL veut dire « Certificate Revocation List« , et cette connexion automatique est une vérification de licence/certificat
  • une ouverture/exécution de flux à partir d’une connexion avec un compte local (hors domaine) sur les machines concernées par le problème, ne pose pas de souci -> avec un compte local la vérification de licence n’est pas effectuée

pic1

Il semble donc qu’il s’agisse soit d’un problème de domaine utilisateur, soit de proxy/firewall qui refuse la connexion HTTP vers le site de vérification de licence.
Le compte local doit être considéré comme « suffisamment sûr » par Microsoft pour ne pas effectuer de vérification de certificat.

En attendant, l’installation du SP2 de SQL-Server 2005 sur le poste ne change rien au problème ci-dessus.

Solution/Palliatif :

Au final on peut désactiver cette vérification de certificat en effectuant les opérations suivantes :

  1. Dans les options avancées d’Internet Explorer décocher les cases « Vérification de révocations des certificats »
  2. Changer la valeur de la base de registre [HKEY_USERS\S-1-5-20\Software\Microsoft\Windows\CurrentVersion\WinTrust\Trust Providers\Software Publishing]< de ‘23c00‘ à ‘23e00

(source : http://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=125768 )

Ces manipulations, semblent corriger définitivement le problème (par contre la première est à effectuer pour chaque utilisateur utilisant le poste). En attente d’une plus ample utilisation pour confirmation.
Les utilisateurs appartenant à des domaines sont probablement configurés pour faire ces vérifications de certificats par défaut, tandis que les utilisateurs locaux ne les font pas, ce qui peut expliquer les différences que nous constations.

Sources :

Categories: Trucs & astuces Tags: , , , ,