From a413a5173d225f7c49d6c7df83051489dd3c0f53 Mon Sep 17 00:00:00 2001 From: medina5 Date: Thu, 18 Sep 2025 07:48:51 +0200 Subject: [PATCH] metabase --- compose.yaml | 27 ++++++++++++++ docker-entrypoint-initdb.d/1_initdb.sql | 21 ----------- docker-entrypoint-initdb.d/3_views.sql | 20 +++++++++++ docker-entrypoint-initdb.d/7_metabase.sql | 43 +++++++++++++++++++++++ docker-entrypoint-initdb.d/8_superset.sql | 43 +++++++++++++++++++++++ postgis/postgis.sql | 2 +- 6 files changed, 134 insertions(+), 22 deletions(-) create mode 100644 docker-entrypoint-initdb.d/7_metabase.sql create mode 100644 docker-entrypoint-initdb.d/8_superset.sql diff --git a/compose.yaml b/compose.yaml index d3a0947..781fb2e 100644 --- a/compose.yaml +++ b/compose.yaml @@ -41,6 +41,33 @@ services: superset run -h 0.0.0.0 -p 8088 --with-threads --reload --debugger " + metabase: + image: metabase/metabase:v0.56.5.5 + depends_on: + database: + condition: service_healthy + volumes: + - /dev/urandom:/dev/random:ro + ports: + - "3000:3000" + environment: + MB_DB_TYPE: postgres + MB_DB_HOST: ${MB_DB_HOST:-database} + MB_DB_PORT: 5432 + MB_DB_USER: metabase_user + MB_DB_PASS: ${DB_ROOT_PASSWORD:-supermotdepasse} + MB_DB_DBNAME: metabase + MB_SITE_LOCALE: fr + MB_ADMIN_EMAIL: etudiant@univ-lorraine.fr + MB_ANON_TRACKING_ENABLED: false + MB_CHECK_FOR_UPDATES: false + MB_NO_SURVEYS: yes + MB_START_OF_WEEK: monday + MB_CUSTOM_FORMATTING: '{"type/Temporal":{"time_style":"HH:mm","date_style":"D MMMM, YYYY","date_abbreviate":true},"type/Currency":{"currency":"EUR"},"type/Number":{"number_separators":", "}}' + MB_EMAIL_SMTP_HOST: mailpit + MB_EMAIL_SMTP_PORT: 1025 + MB_EMAIL_FROM_ADDRESS: metabase@univ-lorraine.fr + # CouchDB # Single-node document database # https://couchdb.apache.org/ diff --git a/docker-entrypoint-initdb.d/1_initdb.sql b/docker-entrypoint-initdb.d/1_initdb.sql index ee559cd..7efd6b3 100644 --- a/docker-entrypoint-initdb.d/1_initdb.sql +++ b/docker-entrypoint-initdb.d/1_initdb.sql @@ -65,24 +65,3 @@ create table region ( insert into region values (1, 'Est'), (2, 'Ouest'); - --- Apache Superset -create database superset; -create user superset with password 'supermotdepasse'; -grant all privileges on database superset to superset; - - -grant connect on database sql to superset; -grant usage on schema public to superset; -grant select on table famille, article to superset; - --- Pour toutes les tables d’un schéma existant -grant select on all tables in schema public to superset; - --- Privilège par défaut pour que chaque nouvelle table créée dans public donnera automatiquement le droit SELECT à superset. -alter default privileges in schema public -grant select on tables to superset; - -\c superset -alter schema public owner to superset; -grant all privileges on schema public to superset; diff --git a/docker-entrypoint-initdb.d/3_views.sql b/docker-entrypoint-initdb.d/3_views.sql index 08e8e3c..7fafaa4 100644 --- a/docker-entrypoint-initdb.d/3_views.sql +++ b/docker-entrypoint-initdb.d/3_views.sql @@ -9,3 +9,23 @@ create view nb_total_tickets as create view nb_total_adherents as select count(*) as nb_total_adherents from adherent; + +create materialized view detail_ticket as +select t.id as ticket_id, t.date_ticket, t.mode_rglt, + h.id as adherent_id, h.codepostal, h.genre, + round(sum(l.total), 2) as total +from ticket t +join ligne l on l.ticket_id = t.id +join adherent h on h.id = t.adherent_id +group by t.id, h.id; + +create materialized view detail_vente as +select t.id as ticket_id, t.date_ticket, t.mode_rglt, + h.id as adherent_id, h.codepostal, h.genre, + l.article_code, a.famille_code, + round(sum(l.total), 2) as total +from ticket t +join ligne l on l.ticket_id = t.id +join adherent h on h.id = t.adherent_id +join article a on a.code = l.article_code +group by t.id, h.id, l.article_code, a.famille_code; diff --git a/docker-entrypoint-initdb.d/7_metabase.sql b/docker-entrypoint-initdb.d/7_metabase.sql new file mode 100644 index 0000000..b52038d --- /dev/null +++ b/docker-entrypoint-initdb.d/7_metabase.sql @@ -0,0 +1,43 @@ +-- Metabase + +create role metabase_user with + login + nosuperuser + nocreatedb + nocreaterole + noinherit + noreplication + connection limit -1 + password 'supermotdepasse'; + +create database metabase with + owner metabase_user; + +grant connect + on database metabase + to metabase_user; + +grant connect + on database sql + to metabase_user; + +grant usage + on schema public + to metabase_user; + +grant select + on table famille, article + to metabase_user; + +-- Pour toutes les tables du schéma public +grant select + on all tables + in schema public + to metabase_user; + +-- Privilège par défaut pour que chaque nouvelle table créée dans public donnera automatiquement le droit SELECT à metabase. +alter default privileges + in schema public + grant select + on tables + to metabase_user; diff --git a/docker-entrypoint-initdb.d/8_superset.sql b/docker-entrypoint-initdb.d/8_superset.sql new file mode 100644 index 0000000..547dabc --- /dev/null +++ b/docker-entrypoint-initdb.d/8_superset.sql @@ -0,0 +1,43 @@ +-- Apache Superset + +create role superset_user with + login + nosuperuser + nocreatedb + nocreaterole + noinherit + noreplication + connection limit -1 + password 'supermotdepasse'; + +create database superset with + owner superset_user; + +grant connect + on database superset + to superset_user; + +grant connect + on database sql + to superset_user; + +grant usage + on schema public + to superset_user; + +grant select + on table famille, article + to superset_user; + +-- Pour toutes les tables du schéma public +grant select + on all tables + in schema public + to superset_user; + +-- Privilège par défaut pour que chaque nouvelle table créée dans public donnera automatiquement le droit SELECT à superset_user. +alter default privileges + in schema public + grant select + on tables + to superset_user; diff --git a/postgis/postgis.sql b/postgis/postgis.sql index 28b9d2e..6a00e92 100644 --- a/postgis/postgis.sql +++ b/postgis/postgis.sql @@ -43,7 +43,7 @@ create table route_cout ( ); create table zone ( - id int primary key generated always as identity, + id int primary key, nom text, categorie text, geom geometry(polygon, 4326) -- on choisit srid 4326 (wgs84)