TDD et Business Intelligence

Bonjour,

Voici un article initialement posté sur le blog talentagile.com en 2016.

Un projet de Business Intelligence se caractérise par plusieurs activités de développement :

  • Le modèle de données (storage, publication)
  • L’ETL (acquisition, transformation, publication)
  • La restitution (publication, consumption)
  • La donnée
Schéma Business Intelligence

Le TDD (Test-driven development) consiste à faire des tests tôt et réguliers de manière à augmenter la qualité du logiciel. En pratique, il s’agit de créer des tests avant le développement de chaque fonctionnalité et de pouvoir les exécuter avant le développement puis après. Le test est conçu ré-exécutable et automatisable.

Le TDD est assez peu répandu dans les projets de Business Intelligence. Voici une situation classique rencontrée par un développeur sur un projet BI.

Un utilisateur métier signale des incohérences de données dans les restitutions. Le développeur constate qu’il manque des données. Pour identifier la source du problème :

  1. Il ouvre le développement de la restitution (Est-ce que le cube a bien été traité ? Est-ce que le rapport ne filtre pas certaine valeur de la dimension ?). L’analyse ne donne rien.
  2. Il vérifie dans le modèle de donnée que le contenu est bien présent (Est-ce que le modèle permet l’ajout de la donnée manquante ?). L’analyse montre que des lignes de fait sont manquantes.
  3. Il ouvre les traitements d’ETL et vérifie qu’aucune règle de gestion ne filtre cette donnée. L’analyse montre qu’un croisement avec un référentiel peut en être la raison.
  4. Il regarde le fichier source du référentiel. Le fichier ne contient pas la ligne de référentiel attendue.

Conclusion : Ce dernier n’est pas à jour.

En BI, l’utilisation des TDD est liée à l’activité de développement. Voici quelques propositions de TDD qui auraient permis d’analyser automatiquement la situation décrite au-dessus.

  • Le modèle de donnée
    • Tester la connexion
    • Tester l’existence des objets avant de créer les objets (table, vue, procédure stockée, fonction, table type, variable, job…)
    • Exécuter un cas de test dans une SP avant de développer le cas
  • La donnée
    • Tester l’existence d’un cas fixe avant d’insérer (valeur dans le référentiel, valeur par défaut)
    • Tester les volumes dans les systèmes sources
    • Tester la fraicheur des données dans les système source
  • L’ETL
    • Tester la disponibilité de la connexion/d’un fichier
    • S’assurer que les circuits ne créent pas de perte de donnée. Tester que le volume de ligne en sortie correspond au volume de ligne en entrée.
    • S’assurer que les circuits ne créent pas d’altération de donnée. Tester que les totaux en sortie correspondent aux totaux en entrée.
  • La restitution (selon le type de restitution)
    • Exemple un cube SSAS
      • Tester l’existence d’une dimension avant de la créer
      • Tester l’existence de données dans une dimension avant de développer sa génération
      • Tester l’existence d’une mesure ou d’un membre calculé avant de la créer
  • Exemple un rapport SSRS
    • Tester l’existence du rapport avant de le déployer
    • Tester l’ouverture d’un filtre avant de le créer

Pratiquez-vous les TDD sur vos projets BI ? N’hésitez pas à partager vos expériences ou vos questions.

Mémo : Ajouter une dimension existante dans un projet SSAS

Bonjour,

Je relais un mémo technique sur une problématique fonctionnelle plutôt courante. Il s’agit de permettre à des utilisateurs d’analyser un changement d’état (en gros, le passage d’état initial à un état final via une opération).

Imaginons un cas simple dans le domaine de l’automobile. Le service commercial connait l’ancienne voiture et la nouvelle voiture achetée. Avant l’achat, le client possédait un Coupé et il a acheté un Monospace.

Cette information peut permettre de mieux cibler les futurs clients et de fournir au vendeur des arguments de vente sous forme de statistiques. On peut réaliser une analyse simple du type x% des prospects possédant un Coupé achète un Monospace.

Pour permettre cette analyse dans un cube, nous avons besoin d’un produit d’arrivée (Monospace) et d’un produit de départ (Coupé).

D’un point de vue technique, nous avons 1 dimension produit qui contient le coupé, le monospace et certainement la segmentation complète des véhicules du marché. Dans le cube, nous avons besoin de 2 dimensions connectées sur cette table/vue contenant les véhicules.

Le lien ci-dessous vous donne le mode d’emploi pour ajouter une dimension existante dans un projet SSAS.

http://www.dimodelo.com/blog/2011/how-to-add-an-existing-dimension-to-a-ssas-project/

Installer et débuter avec Master Data Services

Master Data Services (MDS) est un outil permettant de gérer les données maitres (wikipedia).

L’outil est inclus dans SQL Server et peut être installé en quelques clics :

http://jeffprom.com/2013/03/22/installing-master-data-services-in-sql-server-2012/

 Il ne faut pas oublier les Web Application Requirements pour Master Data Services listé dans :

https://technet.microsoft.com/en-us/library/ee633744%28v=sql.110%29.aspx

L’installation se fait donc en 2 étapes : configuration web et initialisation de la base de données.

MDS

Une fois installé, voici 2 vidéos pour débuter :

  • Une session des TechEd New Zealand 2012 intitulée Introduction to Microsoft SQL Server 2012 Master Data Services and Data Quality Services (EN)

https://channel9.msdn.com/Events/TechEd/NewZealand/TechEd-New-Zealand-2012/DBI303/player

  • Mise en place d’un modèle de référentiel avec MDS (Intégré à Sql server) (FR).

Mémo : SSAS sur HTTPS

Bonjour,

Si vous travaillez dans une entreprise ou un réseau ou seul les ports 80 (HTTP) et 443 (HTTPS) sont ouverts et que vous souhaitez permettre à vos utilisateurs de se connecter sur un cube SSAS dans Excel, voici une solution que j’ai mis en place chez un de mes clients.

http://mglaser.bloggingabout.net/2008/08/15/configuring-http-access-to-sql-server-2008-analysis-services-on-microsoft-windows-server-2008/

 

Mémo : Vider/Réduire la base de données SSISDB

Bonjour,

Voici un mémo pour vider une base de données SSISDB générée avec SQL Server 2012. En phase de développement ou de recette, le volume pris par cette base de données peut s’accroitre rapidement si le mode « verbose » est conservé dans les jobs.

http://thinknook.com/truncate-ssis-catalog-database-operation-log-tables-2012-11-03/