# Laboratoire Pentaho Ubuntu

{% hint style="info" %}

#### **Laboratoire Pentaho**

Pentaho Data Integration est un outil côté client couramment installé et configuré pour fonctionner sous Windows 11.

Il existe plusieurs options de licence ; pour ces ateliers nous installerons une édition Enterprise. Cela vous donnera l'occasion d'essayer de construire une solution complète - pipelines de données automatisés + analyses ..
{% endhint %}

<figure><img src="https://3016379417-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WjeDOi3MsT9tY3oU6mQ%2Fuploads%2FaO9M8NuR6rzHnWiAvgEi%2Fimage.png?alt=media&#x26;token=135c03ed-25dd-465c-9b25-6c2abe6ed093" alt=""><figcaption><p>Niveaux Pentaho</p></figcaption></figure>

{% hint style="danger" %}
Les étapes suivantes sont destinées à configurer un environnement Laboratoire Pentaho et doivent être complétées afin de terminer les ateliers.

Assurez-vous d'avoir téléchargé l'atelier--Installation :

```bash
cd
git clone https://github.com/jporeilly/Workshop--Installation
```

Pour installer git :

```bash
sudo apt install git
```

{% endhint %}

{% hint style="info" %}
**Prérequis**

* Système Ubuntu 24.04 LTS (machine physique ou virtuelle)
* Compte utilisateur avec privilèges sudo
* Connexion Internet
* Connaissances de base de la ligne de commande Linux
  {% endhint %}

{% tabs %}
{% tab title="Docker" %}
{% hint style="info" %}

#### Docker

Docker est une plateforme qui permet aux développeurs d'emballer des applications et leurs dépendances dans des conteneurs légers et portables. Les conteneurs garantissent que les applications s'exécutent de manière cohérente dans différents environnements informatiques, des ordinateurs portables de développement aux serveurs de production. Cet atelier vous guidera à travers le processus complet d'installation de Docker Engine sur Ubuntu 24.04 LTS (Noble Numbat).
{% endhint %}

1. Avant d'installer Docker, mettez à jour votre liste de paquets existante.

```bash
sudo apt update && sudo apt upgrade
```

2. Installez les paquets qui permettent à apt d'utiliser les dépôts via HTTPS.

```bash
sudo apt install -y ca-certificates curl gnupg lsb-release
```

3. Créez un répertoire pour les keyrings et ajoutez la clé GPG de Docker.

```bash
sudo install -m 0755 -d /etc/apt/keyrings
```

```bash
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
```

```bash
sudo chmod a+r /etc/apt/keyrings/docker.gpg
```

4. Ajoutez le dépôt Docker à vos sources apt.

```bash
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
```

5. Maintenant que le dépôt Docker est ajouté, mettez à jour l'index des paquets.

```bash
sudo apt update && sudo apt upgrade
```

6. Installez Docker Engine, containerd et Docker Compose.

```bash
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
```

7. Vérifiez que Docker est correctement installé en vérifiant la version.

```bash
docker --version
```

Vous devriez voir une sortie similaire à (nov. 2025) :

```
Docker version 29.0.2, build 810xxxx
```

8. Vérifiez que Docker Engine fonctionne.

```bash
sudo systemctl status docker
```

Le service devrait s'afficher comme « active (running) ».

9. Quitter.

```bash
q
```

10. Testez votre installation Docker en exécutant le conteneur hello-world.

```bash
sudo docker run hello-world
```

{% hint style="info" %}
Cette commande télécharge une image de test et l'exécute dans un conteneur. Si elle réussit, vous verrez un message confirmant que Docker fonctionne correctement.
{% endhint %}

***

{% hint style="info" %}

#### Sans sudo

Par défaut, Docker nécessite des privilèges sudo. Pour exécuter des commandes Docker sans sudo.
{% endhint %}

1. Ajoutez votre utilisateur au groupe docker.

```bash
sudo usermod -aG docker $USER
```

2. Appliquez la nouvelle appartenance au groupe (ou déconnectez-vous puis reconnectez-vous).

```bash
newgrp docker
```

3. Vérifiez que vous pouvez exécuter Docker sans sudo.

```bash
docker run hello-world
```

4. Assurez-vous que Docker démarre automatiquement au démarrage du système.

```bash
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
```

***

{% hint style="info" %}

#### Vérification et tests

Pour confirmer que tout fonctionne correctement, exécutez les commandes suivantes :
{% endhint %}

Vérifier la version de Docker :

```bash
docker version
```

Afficher les informations système de Docker :

```bash
docker info
```

Lister les conteneurs en cours d'exécution :

```bash
docker ps
```

Lister tous les conteneurs (y compris ceux arrêtés) :

```bash
docker ps -a
```

Lister les images téléchargées :

```bash
docker images
```

***

{% hint style="info" %}

#### Commandes courantes

Voici les commandes Docker essentielles que vous utiliserez régulièrement :

* `docker pull <image>` - Télécharger une image depuis Docker Hub
* `docker images` - Lister toutes les images locales
* `docker run <image>` - Créer et démarrer un conteneur à partir d'une image
* `docker ps` - Lister les conteneurs en cours d'exécution
* `docker ps -a` - Lister tous les conteneurs
* `docker stop <container>` - Arrêter un conteneur en cours d'exécution
* `docker rm <container>` - Supprimer un conteneur arrêté
* `docker rmi <image>` - Supprimer une image
* `docker logs <container>` - Voir les journaux du conteneur
* `docker exec -it <container> bash` - Accéder au shell d'un conteneur en cours d'exécution
  {% endhint %}
  {% endtab %}

{% tab title="Conteneur MySQL" %}
{% hint style="info" %}

#### **Docker Compose - MySQL**

L'utilisateur pentaho\_admin n'a que l'autorisation LECTURE pour la base de données Steel Wheels - sampledata. Le compte administrateur a été supprimé.

Comme vous allez effectuer des opérations CRUD sur la base de données, nous devons déployer une base de données sampledata - conteneur Docker, en accordant tous les privilèges à un utilisateur admin.
{% endhint %}

{% file src="<https://3016379417-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WjeDOi3MsT9tY3oU6mQ%2Fuploads%2F7uyO1nOpAC1L5LImVpXw%2Fcopy_mysql.sh?alt=media&token=faf508ec-d5ac-485c-87a9-b168555f7d62>" %}

{% file src="<https://3016379417-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WjeDOi3MsT9tY3oU6mQ%2Fuploads%2FTNHQIpfuNWOLZ6ydxOJa%2Frun_mysql_compose.sh?alt=media&token=c059e221-8972-4825-aeec-744f682cfd14>" %}

{% file src="<https://3016379417-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WjeDOi3MsT9tY3oU6mQ%2Fuploads%2Fs3JdzrMjXvhWtw16Jx8v%2Fdocker-compose.yml?alt=media&token=8294fd3e-cb13-404a-b5b9-eb8fac9feea4>" %}

1. Exécutez le script suivant pour créer un dossier MySQL et copier les fichiers requis.

```bash
cd
cd ~/Workshop--Installation/MySQL
# Rendre exécutable
chmod +x copy_mysql.sh
./copy_mysql.sh
```

2. Vérifiez que le répertoire a été créé et que les fichiers ont été copiés.
3. Exécutez le script docker-compose pour créer le conteneur.

```bash
cd
cd ~/MySQL
# Rendre exécutable
chmod +x run_mysql_compose.sh
./run_mysql_compose.sh
```

<figure><img src="https://3016379417-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WjeDOi3MsT9tY3oU6mQ%2Fuploads%2FpHkcDLcEdqMddzXATvqx%2Fimage.png?alt=media&#x26;token=e9c7e569-63fc-4e1c-9176-99e225a79f87" alt="" width="500"><figcaption><p>Déployer le conteneur MySQL Docker</p></figcaption></figure>

4. Vérifiez que le conteneur est démarré et en cours d'exécution dans Docker.

```
docker ps
```

<figure><img src="https://3016379417-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WjeDOi3MsT9tY3oU6mQ%2Fuploads%2FgKgy69kHeeNPNKDO1rxv%2Fimage.png?alt=media&#x26;token=4facea24-c8b8-4ca1-bfbd-d315a64a473b" alt=""><figcaption><p>Conteneurs Docker MySQL</p></figcaption></figure>
{% endtab %}

{% tab title="sampledata" %}
{% hint style="info" %}

#### **Données d'exemple**

La prochaine étape consiste à créer la base de données sampledata.
{% endhint %}

<figure><img src="https://3016379417-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WjeDOi3MsT9tY3oU6mQ%2Fuploads%2FfHrm1HbmPxxV8bPSDUK9%2Fimage%20(62).png?alt=media&#x26;token=4d4eb534-9ee4-49eb-80d1-17c363ada1f1" alt=""><figcaption><p>Diagramme de relations</p></figcaption></figure>

{% tabs %}
{% tab title="1. sampledata\_schema.sql" %}
{% hint style="info" %}

#### **sampledata\_schema.sql**

Ce script crée une structure de base de données relationnelle complète pour une application métier d'exemple. Il est conçu pour modéliser un système de gestion des ventes et des commandes pour une entreprise qui vend divers produits.
{% endhint %}

{% hint style="info" %}

#### **Configuration de la base de données**

* Crée une base de données nommée

  ```
  sampledata
  ```

  avec l'encodage de caractères UTF-8
* Met en place des utilisateurs avec les permissions appropriées
* Configure le mode SQL pour une meilleure intégrité des données
  {% endhint %}

{% hint style="info" %}

#### **Tables**

**BUREAUX**: Stocke les emplacements des bureaux de l'entreprise avec les détails d'adresse

**EMPLOYÉS**: Contient des informations sur les employés avec des relations aux bureaux et à la structure hiérarchique

**CLIENTS**: Stocke les informations client incluant les coordonnées et les limites de crédit

**PRODUITS**: Contient le catalogue de produits avec les informations d'inventaire et de tarification

**COMMANDES**: Suit les commandes des clients avec le statut et les dates

**DETAILS\_COMMANDE**: Contient les lignes d'articles pour chaque commande avec quantité et prix

**PAIEMENTS**: Enregistre les paiements des clients avec montants et dates

**FACT\_COMMANDE**: Une table de faits pour l'analyse des commandes

**CLIENT\_AVEC\_TER**: Informations client étendues avec territoire

**DIM\_TEMPS**: Table dimensionnelle de temps pour les rapports

**RESPONSABLES\_DEPARTEMENT**: Stocke les informations des responsables de département

**QUADRANT\_REELS**: Contient les données financières budget vs réel avec une colonne VARIANCE générée

**BALANCE\_DE\_VERSEMENT**: Données de comptabilité financière
{% endhint %}

{% hint style="info" %}

#### **Vues**

**résumé\_commandes\_client**: Résume les commandes et les dépenses par client

**performance\_produit**: Analyse les métriques de ventes des produits incluant revenus et bénéfices

**performance\_ventes\_employé**: Suit la performance des ventes par employé

**tendance\_ventes\_mensuelle**: Montre les tendances des ventes dans le temps par mois

**statut\_inventaire\_produit**: Catégorise les produits par niveaux d'inventaire

**historique\_paiements\_client**: Résume l'activité de paiement des clients et les soldes
{% endhint %}

{% hint style="info" %}

#### **Procédures stockées**

**ObtenirCommandesClient**: Récupère les commandes d'un client spécifique

**MettreAJourStockProduit**: Met à jour les niveaux d'inventaire des produits

**ObtenirVentesProduitParTrimestre**: Analyse les ventes trimestrielles par produit

**ObtenirTopClientsParRégion**: Identifie les meilleurs clients par région

**ObtenirValeurInventaireParLigneProduit**: Calcule les métriques d'inventaire par ligne de produit

**Triggers**

**avant\_insertion\_commande**: Valide les contraintes de date sur les commandes

**avant\_insertion\_paiement**: S'assure que les montants des paiements sont positifs
{% endhint %}

{% hint style="info" %}

#### **Événements**

* **maintenance\_quotidienne**: Tâche planifiée pour la maintenance de la base de données
  {% endhint %}

1. Exécutez la commande suivante pour créer le schéma.

```bash
cd 
cd ~/MySQL
cat sampledata_schema.sql | docker exec -i mysql-database-1 mysql -u root -p"password" sampledata
```

{% hint style="info" %}
Cette commande importe des données de schéma SQL dans une base de données MySQL s'exécutant dans un conteneur Docker. Voici une répartition :

Cette commande lit le fichier SQL :

```powershell
cat sampledata_schema.sql
```

Transmet (redirige) le contenu du fichier à la commande suivante :

```
|
```

Ceci exécute une commande dans un conteneur Docker en cours d'exécution :

```
docker exec -i mysql-database-1 mysql -u root -p"password" sampledata
```

{% endhint %}

2. Vous pouvez vérifier la base de données sampledata et les tables avec les commandes suivantes.

Afficher les bases de données :

```powershell
docker exec -i mysql-database-1 mysql -u root -p"password" -e "SHOW DATABASES;"
```

Afficher les tables :

```powershell
docker exec -i mysql-database-1 mysql -u root -p"password" sampledata -e "SHOW TABLES;"
```

Afficher les colonnes d'une table :

```powershell
docker exec -i mysql-database-1 mysql -u root -p"password" sampledata -e "DESCRIBE table_name;"
```

{% endtab %}

{% tab title="2. sampledata\_data.sql" %}
{% hint style="info" %}

#### **sampledata\_data.sql**

Ce script peuple la base de données avec des données d'exemple pour démontrer la fonctionnalité du schéma.
{% endhint %}

{% hint style="info" %}

#### **Données de référence**

* Emplacements des bureaux à travers différentes régions
* Hiérarchie des employés avec intitulés de postes
* Catalogue de produits organisé par lignes de produits
  {% endhint %}

{% hint style="info" %}

#### **Données transactionnelles**

* Enregistrements clients avec informations de contact
* Historique des commandes avec dates et statuts
* Détails des commandes avec quantités et prix
* Enregistrements de paiements
  {% endhint %}

{% hint style="info" %}

#### **Données financières**

* Chiffres budget vs réel dans QUADRANT\_REELS
* Données de comptabilité de balance de vérification
  {% endhint %}

{% hint style="info" %}

#### **Caractéristiques des données**

* Scénarios commerciaux réalistes avec divers statuts de commande
* Catalogue de produits complet avec descriptions et tarification
* Structure hiérarchique des employés avec relations de reporting
* Données temporelles couvrant plusieurs années pour l'analyse des tendances
* Données financières adaptées à la budgétisation et à l'analyse des écarts
  {% endhint %}

{% hint style="info" %}

#### **Caractéristiques notables**

* Les données respectent les contraintes d'intégrité référentielle
* Bonne gestion des valeurs NULL lorsque c'est approprié
* Valeurs de prix et de quantités réalistes
* Les colonnes générées (comme VARIANCE) sont exclues des insertions directes
* Les commandes sont séquencées pour satisfaire les contraintes de clé étrangère
  {% endhint %}

1. Exécutez la commande suivante pour charger les données dans les tables sampledata.

```bash
cd 
cd ~/MySQL
cat sampledata_data.sql | docker exec -i mysql-database-1 mysql -u root -p"password" sampledata
```

2. Vous pouvez utiliser les commandes suivantes pour vérifier que les données ont été chargées.

Pour compter le nombre de lignes dans une table spécifique :

```docker
docker exec -i mysql-database-1 mysql -u root -p"password" sampledata -e "SELECT COUNT(*) FROM table_name;"
```

Pour voir les premières lignes d'une table :

```docker
docker exec -i mysql-database-1 mysql -u root -p"password" sampledata -e "SELECT * FROM table_name LIMIT 10;"
```

Pour vérifier les comptes pour toutes les tables :

```docker
docker exec -i mysql-database-1 mysql -u root -p"password" sampledata -e "SELECT TABLE_NAME, TABLE_ROWS FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'sampledata';"
```

Pour obtenir un résumé des tables et de leur statut :

```docker
docker exec -i mysql-database-1 mysql -u root -p"password" sampledata -e "SHOW TABLE STATUS;"
```

<figure><img src="https://3016379417-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WjeDOi3MsT9tY3oU6mQ%2Fuploads%2FC2JqcCFFJZKg4RchJKQv%2Fimage.png?alt=media&#x26;token=52e97f01-a8a4-4971-a4b0-c02f08dcf832" alt=""><figcaption><p>Vérifier les tables</p></figcaption></figure>
{% endtab %}
{% endtabs %}
{% endtab %}

{% tab title="DBeaver" %}
{% hint style="info" %}

#### DBeaver

Vous allez avoir besoin d'un outil de gestion de base de données. DBeaver Community est un outil de gestion de base de données gratuit et open-source pour les projets personnels.
{% endhint %}

1. L'option la plus simple est de télécharger et d'installer depuis le Snapstore.

```bash
cd
sudo apt update && sudo apt upgrade
sudo apt install snapd
sudo snap install dbeaver-ce
```

Ou

Allez sur le site officiel [page de téléchargement de DBeaver](https://dbeaver.io/download/)

{% embed url="<https://dbeaver.io/files/dbeaver-ce_latest_amd64.deb>" %}

Ou

Pour installer ce fichier DEB.

```bash
wget https://dbeaver.io/debs/dbeaver.gpg.key -O /tmp/dbeaver.gpg.key
sudo gpg --dearmor -o /usr/share/keyrings/dbeaver.gpg /tmp/dbeaver.gpg.key
echo "deb [signed-by=/usr/share/keyrings/dbeaver.gpg] https://dbeaver.io/debs/dbeaver-ce /" | sudo tee /etc/apt/sources.list.d/dbeaver.list
sudo apt update
sudo apt install dbeaver-ce
```

4. Épingler DBeaver au lanceur - barre d'outils inférieure.

***

{% hint style="info" %}

#### **Base de données MySQL**

Si vous avez rempli les 3 exigences précédentes, vous devriez avoir un conteneur MySQL Docker, exposé sur le port :3306 avec la base de données sampledata.
{% endhint %}

1. Lancez DBeaver et sélectionnez : MySQL.

<figure><img src="https://3016379417-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WjeDOi3MsT9tY3oU6mQ%2Fuploads%2FdO4Wo4hKJzPuJW6OCI7C%2Fimage.png?alt=media&#x26;token=72d92d39-22dd-4603-a480-94495aa6a808" alt=""><figcaption><p>MySQL</p></figcaption></figure>

2. Configurez la connexion avec les propriétés suivantes :

Nom d'utilisateur : root ou pentaho\_user

Mot de passe : password

<figure><img src="https://3016379417-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WjeDOi3MsT9tY3oU6mQ%2Fuploads%2Fx4hj27wSVxKqareREN8p%2Fimage.png?alt=media&#x26;token=1268171f-8274-4cdb-87af-f0f44c3a5392" alt=""><figcaption><p>Configurer et tester la connexion MySQL - sampledata</p></figcaption></figure>

{% hint style="warning" %}
Vous devrez peut-être télécharger la version du pilote de base de données prise en charge.

Activez également : allowPublicKeyRetrieval
{% endhint %}

<figure><img src="https://3016379417-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WjeDOi3MsT9tY3oU6mQ%2Fuploads%2FMcdTFaqU0LsctCgZfC7S%2Fimage%20(56).png?alt=media&#x26;token=2a981c76-44d2-416d-a6f1-f08152c14740" alt=""><figcaption><p>Activer : allowPublicKeyRetrieval</p></figcaption></figure>

3. Testez la connexion.

<figure><img src="https://3016379417-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WjeDOi3MsT9tY3oU6mQ%2Fuploads%2FMMdsCwDdInxb5tkHhfjS%2Fimage.png?alt=media&#x26;token=420b31e7-86a7-46f6-807f-255c607e3526" alt=""><figcaption><p>Tester la connexion</p></figcaption></figure>

4. Développez : bases de données > sampledata > Tables

<figure><img src="https://3016379417-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WjeDOi3MsT9tY3oU6mQ%2Fuploads%2FE7sRaOXCFgJLUlfRmbyv%2Fimage.png?alt=media&#x26;token=ecf46ab4-f4f5-4f8c-bc48-15b85389da2a" alt=""><figcaption><p>Données client</p></figcaption></figure>

5. Ouvrez une fenêtre SQL et exécutez une requête de test.

```sql
select * from CUSTOMERS
where COUNTRY = 'USA' and CITY = 'NYC';
```

<figure><img src="https://3016379417-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5WjeDOi3MsT9tY3oU6mQ%2Fuploads%2FEiNfAWHg3ZxaJX6INeIC%2Fimage.png?alt=media&#x26;token=bec6eaec-6e08-488e-ab04-85001312c550" alt=""><figcaption><p>Requête SQL - Clients de NYC</p></figcaption></figure>
{% endtab %}
{% endtabs %}

<details>

<summary>Dépannage général (cliquer pour développer)</summary>

**Problème : erreurs « permission denied »**

* Solution : Assurez-vous que votre utilisateur fait partie du groupe docker et que vous vous êtes déconnecté/reconnecté ou avez exécuté `newgrp docker`

**Problème : le service Docker ne démarre pas**

* Solution : Vérifiez les journaux avec `sudo journalctl -u docker.service`

**Problème : Impossible de se connecter au démon Docker**

* Solution : Assurez-vous que le service Docker fonctionne avec `sudo systemctl start docker`

</details>
