96 lines
2.6 KiB
Markdown
96 lines
2.6 KiB
Markdown
# TP 1 Synthèse de l'activité bancaire
|
||
|
||
Créer un tableau de bord complet à partir de données issues d’une application bancaire (comptes, transactions, titularisation…), en utilisant des fonctions d’agrégation SQL et un outil de visualisation (Grafana).
|
||
|
||
## Installation de l'environnement de travail
|
||
|
||
Nous allons construire un environnement de travail pour étudier les interactions entre les différents élements.
|
||
|
||
Git est un outil qui permet de garder l’historique complet d’un projet (code, schémas, configs…). Il permet de travailler à plusieurs personnes de travailler en même temps ou en parallèle sur un même projet.
|
||
|
||
```shell
|
||
git clone https://sources.neotech.fr/Universite/tp.git
|
||
cd tp
|
||
```
|
||
|
||
Docker est une technologie pour emballer une application, ses dépendances et sa configuration dans un conteneur : un mini-système isolé, reproductible et portable.
|
||
|
||
```shell
|
||
docker build -t iut/pgsql:2025-13 -f postgresql.Dockerfile .
|
||
```
|
||
|
||
```shell
|
||
git clone https://sources.neotech.fr/Universite/sql_bank.git
|
||
cd sql_bank
|
||
```
|
||
|
||
```shell
|
||
docker network create pgsql_net
|
||
```
|
||
|
||
```shell
|
||
docker run --detach --name pgsql ^
|
||
--network pgsql_net ^
|
||
-p "5432:5432" ^
|
||
-e "POSTGRES_INITDB_ARGS=--locale-provider=icu --icu-locale=fr-FR" ^
|
||
-e "POSTGRES_PASSWORD=geii2025" ^
|
||
-e "POSTGRES_USER=iut" ^
|
||
-v pgsql_data:/var/lib/postgresql ^
|
||
-v "./:/docker-entrypoint-initdb.d" ^
|
||
iut/pgsql:2025-13
|
||
```
|
||
|
||
```shell
|
||
docker pull grafana/grafana:12.1
|
||
```
|
||
|
||
```shell
|
||
docker run --detach --name grafana ^
|
||
--network pgsql_net ^
|
||
-p "3000:3000" ^
|
||
-e "GF_SECURITY_ADMIN_USER=admin" ^
|
||
-e "GF_SECURITY_ADMIN_PASSWORD=geii2025" ^
|
||
-e "GF_USERS_ALLOW_SIGN_UP=false" ^
|
||
-e "GF_USERS_DEFAULT_THEME=system" ^
|
||
--label "caddy=grafana.localhost" ^
|
||
--label "caddy.reverse_proxy={{upstreams 3000}}" ^
|
||
--label "caddy.tls=internal" ^
|
||
grafana/grafana:12.1
|
||
```
|
||
|
||
### Création d’un tableau ou d’un panneau
|
||
|
||
- Nombre total de titulaires
|
||
- Nombre total de comptes ouverts
|
||
- Solde total dans la banque
|
||
- Volume total des transactions de l'heure en cours
|
||
- Solde moyen par compte
|
||
- Montant moyen des transactions
|
||
|
||
|
||
### Tâches planifiée
|
||
|
||
Nous allons générer des données aléatoire dans le temps
|
||
|
||
```sql
|
||
SELECT cron.schedule('* * * * *', $$call add_depot(6, (floor(random() * 100) + 50)::decimal);$$);
|
||
SELECT cron.schedule('*/2 * * * *', $$call add_retrait(6, (floor(random() * 200) + 100)::decimal);$$);
|
||
```
|
||
|
||
### Afficher le cours des devises
|
||
|
||
Ajouter un graphie timeseries
|
||
|
||
- `$__timeFrom()`
|
||
- `$__timeTo()`
|
||
- `$__timeFilter(date)`
|
||
- (${currency:sqlstring})
|
||
|
||
### Construire un histogramme avec les soldes :
|
||
|
||
< 0 €
|
||
0 – 100 €
|
||
100 – 500 €
|
||
500 – 1 000 €
|
||
> 1 000 €
|