BI 2014-2015

Sources:

  • Très bons cours: http://www.lsis.org/espinasseb
  • http://fleid.net/
  • www.e-marketing.fr
  • http://www.cigref.fr/wp/wp-content/uploads/2014/10/CIGREF-Enjeux-business-donnees-2014.pdf

Cours 1 – Introduction

Cours 2 – ETL

Travail à faire:

  • Identifier un ensemble de sources de données qui vous paraissent pertinentes pour une « thématique » données (transport, ville, produits,plongée sous marine,…)
  • Proposer une problématique générale de travail (amélioration de la circulation, optimisation d’achats pour la nourriture bio, ….)

Cours 3 – Datawarehouse

20142015_bi_dataw

Cours 4 – OLAP

20142015_bi_olap

Cours 5 – OLAP/MDX

bi_mdx

Cours 6 – Data Mining et Frequent Item Sets

bi_dm1

Cours 7 – Data Mining et Arbres de Décision

bi_dm1 bi_dm2

 

TP Prise en main de PDI

  • Allez dans le répertoire /home/Enseignants/denoyer/BI
  • Lancez ‘spoon’

Exercice 1 :

  • Générer 10 lignes avec un champs test de valeur = 1 – (générer lignes)
  • Rajouter une colonne gender de valeur male (Ajout constantes)
  • Prévisualiser le résultat -> (Boutton droit -> prévisualiser puis fenêtre du bas : prévisualiser)
  • Rajouter une colonne cola dans la génération de lignes de valeur test
  • Rajouter un checksum après la génération de ligne (Ajout checksum)

o   De type CRC32

o   Récupérer les champs en entrée

o   Le champs de sortie sera checksum

  • Numérotez les lignes en utilisant Ajout séquence

Exercice 2 :

  • Créez un fichier CSV contenant une colonne cola dont les 10 première valeurs valent 1 et les 10 suivantes valent 2
  • Numérotez les lignes dans un champs index
  • Numérotez les lignes dont cola vaut 1 et les lignes dont cola vaut 2 indépendamment à l’aide de Ajout séquence réinitialisable dans un compteur colb
  • Rajouter une colonne à l’entrée de valeur cola/colb grâce à un Calculateur en utilisant la formule [cola]/[colb]

Exercice 3 :

  • Créer un fichier CSV contenant des noms et prénoms en minuscule sur deux colonnes
  • Rajouter une majuscule en début de valeur à l’aide de Mnaipulation de chînes de caractères
  • Créer une troisième colonne qui contient les 3 premières lettres du nom de famille à l’aide de Calculateur aéinsi que de Extraction depuis chapînes de caractères
  • Trier par ordre lexicographique sur le nom
  • Sauvegarder la sortie dans un fichier CSV
  • Sauvegarder la sortie dans un fichier Excel et ouvrez le fichier

 

Exercice 4 :

  • Téléchargez le fichier Mobilié de Stationnement depuis le site http://opendata.paris.fr au format CSV
  • Créer un fichier qui ne contient que les coordonnées x et y des stations Velib

Exercice 5 :

Exercice 6 :

 

TP  Création d’un datawarehouse

Nous allons nous intéresser à la création d’un datawarehoTéléchargez le fichier ratings depuis ftp://ftp.fu-berlin.de/pub/misc/movies/database/

NB : Les scripts .ktr peuvent être exécutés en ligne de commande à l’aide de la commande :

pan.bat /file: »D:\Transformations\Customer Dimension.ktr » /level:Basic

 Transformation en fichiers CSV

Nous allons tout d’abord nous focaliser sur le nettoyage des fichiers, et transformer ces fichers en fichiers CSV corrects. Pour cela, nous allons tout d’abord charger le fichier ratings.list à l’aide de l’outil « Extraction depuis un fichier ». Nous allons y enlever les 295 premières lignes, ainsi que les 147 dernières lignes

Nous allons ensuite parser les lignes une à une afin de créer les 4 champs distribution,nombre,ratings, titre. Pentaho ne dispose pas d’outils performants pour traiter des chaînes de caractères. Il nous permet cependant de faire cela en JAVA directement à l’aide de l’outil création de classe java.

La classe créer permet le traitement d’une table ligne par ligne. Un exemple de code qui permet de créer une colonne coucou à partir d’une colonne truc en rajoutant « coucou » en début de chaque valeur est :

 public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException
{
// First, get a row from the default input hop
//
Object[] r = getRow();

// If the row object is null, we are done processing.
//
if (r == null) {
setOutputDone();
return false;
}

// It is always safest to call createOutputRow() to ensure that your output row's Object[] is large
// enough to handle any new fields you are creating in this step.
//
Object[] outputRow = createOutputRow(r, data.outputRowMeta.size());

String contenu = get(Fields.In, “truc”).getString(r);

// Set the value in the output field
//
Contenu=”coucou “+contenu;
get(Fields.Out, “coucou”).setValue(outputRow,contenu);

// putRow will send the row on to the default output hop.
//
putRow(data.outputRowMeta, outputRow);

return true;
}

Une documentation plus complète est disponible ici : http://wiki.pentaho.com/display/EAI/User+Defined+Java+Class

 

Après nettoyage des colonnes (remplacer dans chaînes de caractères et manipulation de chaînes de caractères), le résultat peut être sauvegardé dans un fichier ratings.csv

On va faire la même chose avec le fichier actors.list. Commencez par extraire les acteurs et les films associés dans une table. Ensuite, vous extrairez depuis le nom du film, le role de l’acteur. Pour cela il faut utiliser les expressions régulières JAVA :

Pattern pattern=Pattern.compile("\\[(.*)\\]");
Matcher matcher = pattern.matcher(film);
if (matcher.find())
{
get(Fields.Out, "role").setValue(outputRow,matcher.group());
}

Sauvegardez le résultats dans un fichier .CSV

A partir de la table film+acteurs, extrayez la colonne titre, puis identifiez les titres uniques, et numérotez les films à l’aide de l’outils séquence. Sauvegarder cette information dans un fichier CSV

 

 

TP Premier pas avec OLAP

Nous allons nous intéresser à faire nos premiers pas avec OLAP

Exercice à faire en premier

Nous allons maintenant utiliser des données plus complexes. Les données sont disponibles dans la base tp3 (tp3/tp3$). L’hypercube a déjà été calculé et est disponible à l’adresse:

http://XXXXXXXXX/mondrian dans la menu JPivot Table

  1. Quel est le produit le plus vendu en 1997 ?difficulté: choix des dimensions et de la mesure.
  2. Quel est la répartition des ventes entre les différents type de boisson en 1997 ?difficulté: navigation + choix du graphique.
  3. Y-a-t-il une différence hommes/femmes dans répartition de la consommation entre les différents types de produits ?difficulté: tableau croisé.
  4. Y-a-t-il des variations de consommation saisonnières ? mensuelles ?difficulté: tableau croisé + choix graphique.
  5. Quelle est la distribution des revenus des consommateurs en Californie (CA) ?difficulté: tri dimension + choix mesure + filtrage.

Exercice a faire en second

A partir du fichier précédent, nous allons créer un schéma en étoile dans la base de données. Pour cela, nous utiliserons les outils « Datawarehouse » de Pentaho. Nous allons créer des dimensions assignees et issue_type stockée dans deux bases séparées, ainsi qu’une table de faits nommée ‘bug’

(voir ici pour plus de détails : http://type-exit.org/adventures-with-open-source-bi/2010/07/a-basic-mondrian-cube-introducing-the-star-schema/)

Dans pentaho, nous allons maintenant importer ce schéma en étoile et définir des mesures dessus afin de pouvoir l’explorer dans le visualiser OLAP

Exercice à faire en troisieme

Téléchargez http://www-connex.lip6.fr/~denoyer/biserver.zip dans le répertoire /tmp

Dezipper, et executez start-pentaho.sh

Connectez vous au navigateur à l’adresse: http://localhost:8080 (login=admi, mdp=password)

Téléchargez le fichier suivant : bug_report

Importez ce fichier dans une table SQL sur la base de donnée à l’aide de Kettle

Ouvrez Pentaho (commme expliqué en TP) et logguez vous

Créez une nouvelle source de donnée de type Base de données, puis créez une nouvelle vue JPIVOT

Vous pouvez maintenant jouer avec les données – prenez le temps d’explorer les fonctionnalités

Exercice de fin

Nous allons nous intéresser à des données plus complexes dipsonible ici : databi

  • Concevoir un schéma MySQL pour stocker ces données (en étoile)
  • Importer les données dans MySQL à l’aide de pentaho data integration
  • Calculez une vue JPivot à l’aide de pentaho comme expliqué à l’étape précédente

 

 

TP  Création de Cube OLAP

  • Démarrez BIServer en local comme vu dans le TP précédent
  • Téléchargez l’application de design de cube
  • Téléchargez le driver MySQL et copiez le dans le répertoire « drivers » du logiciel  : Driver
  • Créez une cube sur les données BugReport importées la semaine dernière

Organisation du projet

* Lien vers le site des projets

 TP  DataMining