Ces dernières années, je pense que la visualisation et la démocratisation des données à l'aide d'outils de BI sont devenues extrêmement importantes.
J'ai utilisé des outils BI tels que Redash
, mais
Je n'ai pas abordé Metabase
, qui est un sujet brûlant depuis un certain temps, alors je vais essayer d'y toucher une fois.
Pour DB, j'utilise MySQL8
.
Construisez avec Docker.
Nous avons préparé le fichier docker-compose.yml
suivant.
docker-compose.yml
version: '3'
services:
app:
image: metabase/metabase:v0.37.0.2
container_name: metabase
ports:
- 3000:3000
volumes:
- ./metabase/data:/mnt/data
sample_db:
build: ./db
container_name: sample_db
ports:
- 33006:3306
volumes:
- mysql-sample-app-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: sample
MYSQL_APP_USER: sample
MYSQL_APP_USER_PASSWORD: sample
MYSQL_DATABASE: metabase_sample
restart: unless-stopped
volumes:
mysql-sample-app-data:
driver: local
En ce qui concerne la hiérarchie des répertoires, j'ai téléchargé le projet sur GitHub, donc Veuillez vérifier ici. https://github.com/inagacky/metabase_sample
Démarrez avec la commande suivante.
[inagacky@macbook] ~/workspace/metabase_sample
% docker-compose up -d
Après cela, accédez à http: // localhost: 3000
et si l'écran suivant apparaît, cela réussit.
Suivez le guide «Langue», «Paramètres utilisateur» et «Paramètres de source de données». C'est très poli, donc vous n'avez pas à vous inquiéter.
Une fois les réglages terminés, l'écran ci-dessous apparaît. Au départ, il existe un "Sample Dataset", mais cette fois, nous le vérifierons avec notre propre base de données.
Créez une table et versez les données dans la base de données qui s'exécute sur Docker. Puisque nous sommes dans le secteur de l'immobilier, nous faisons un tableau simple avec une structure comme celle-là. Cette fois, nous créerons des «informations client», des «informations sur la propriété» et des «informations sur le contrat». (Il y a certains domaines qui devraient être maîtrisés, mais c'était gênant, alors je l'ai fait tel quel.)
CREATE TABLE IF NOT EXISTS `customers` ( --Informations client
`id` INT AUTO_INCREMENT, -- PK
`name` VARCHAR(20) , --Nom complet
`age` INT, --âge
PRIMARY KEY (`id`),
KEY `idx_age`(`age`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
;
CREATE TABLE IF NOT EXISTS `property` ( --Informations sur la propriété
`id` INT AUTO_INCREMENT, -- PK
`prefName` VARCHAR(20) , --Nom des préfectures
`price` BIGINT, --prix
`category` VARCHAR(20), --Catégorie(Maison individuelle/terre/Manoir etc.)
PRIMARY KEY (`id`),
KEY `idx_prefName`(`prefName`),
KEY `idx_price`(`price`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
;
CREATE TABLE IF NOT EXISTS `contracts` ( --Informations contractuelles
`customer_id` INT NOT NULL, --N ° de client
`property_id` INT NOT NULL, --ID de propriété
CONSTRAINT fk_customer_id
FOREIGN KEY (customer_id)
REFERENCES customers (id)
ON DELETE RESTRICT,
CONSTRAINT fk_property_id
FOREIGN KEY (property_id)
REFERENCES property (id)
ON DELETE RESTRICT
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
;
Pour les données, procédez comme suit.
--Informations client
INSERT INTO `metabase_sample`.`customers` (`name`, `age`) VALUES ('Ichiro Yamada', '30');
INSERT INTO `metabase_sample`.`customers` (`name`, `age`) VALUES ('Jiro Yamada', '31');
INSERT INTO `metabase_sample`.`customers` (`name`, `age`) VALUES ('Ichiro Tanaka', '32');
INSERT INTO `metabase_sample`.`customers` (`name`, `age`) VALUES ('Jiro Tanaka', '45');
INSERT INTO `metabase_sample`.`customers` (`name`, `age`) VALUES ('Saburo Tanaka', '50');
INSERT INTO `metabase_sample`.`customers` (`name`, `age`) VALUES ('Ichiro Suzuki', '47');
INSERT INTO `metabase_sample`.`customers` (`name`, `age`) VALUES ('Jiro Suzuki', '20');
--Informations sur la propriété
INSERT INTO `metabase_sample`.`property` (`prefName`, `price`, `category`) VALUES ('Préfecture d'Aichi', '32000000', 'Maison individuelle');
INSERT INTO `metabase_sample`.`property` (`prefName`, `price`, `category`) VALUES ('Préfecture d'Aichi', '40000000', 'Maison individuelle');
INSERT INTO `metabase_sample`.`property` (`prefName`, `price`, `category`) VALUES ('Tokyo', '90000000', 'Maison individuelle');
INSERT INTO `metabase_sample`.`property` (`prefName`, `price`, `category`) VALUES ('Tokyo', '120000000', 'appartement');
INSERT INTO `metabase_sample`.`property` (`prefName`, `price`, `category`) VALUES ('Préfecture d'Aichi', '20000000', 'terre');
INSERT INTO `metabase_sample`.`property` (`prefName`, `price`, `category`) VALUES ('Tokyo', '90000000', 'appartement');
INSERT INTO `metabase_sample`.`property` (`prefName`, `price`, `category`) VALUES ('Préfecture d'Aichi', '24000000', 'appartement');
--Informations contractuelles
INSERT INTO `metabase_sample`.`contracts` (`customer_id`, `property_id`) VALUES ('1', '1');
INSERT INTO `metabase_sample`.`contracts` (`customer_id`, `property_id`) VALUES ('2', '2');
INSERT INTO `metabase_sample`.`contracts` (`customer_id`, `property_id`) VALUES ('3', '3');
INSERT INTO `metabase_sample`.`contracts` (`customer_id`, `property_id`) VALUES ('4', '4');
INSERT INTO `metabase_sample`.`contracts` (`customer_id`, `property_id`) VALUES ('5', '5');
INSERT INTO `metabase_sample`.`contracts` (`customer_id`, `property_id`) VALUES ('6', '6');
INSERT INTO `metabase_sample`.`contracts` (`customer_id`, `property_id`) VALUES ('7', '7');
L'introduction est devenue longue, mais je vais jouer un peu avec la métabase.
Les jointures de table peuvent également être effectuées sur l'interface graphique.
Vous pouvez parcourir le tableau comme indiqué ci-dessous.
Il existe également différents types de graphiques. (Cela n'avait pas l'air bien car il n'y avait pas beaucoup de données ...)
Vous pouvez également créer un tableau de bord comme indiqué ci-dessous.
J'ai touché à la métabase pour la première fois, mais j'ai compris diverses choses de manière intuitive. Étant donné que l'article est devenu plus long que prévu en raison de la construction de l'environnement, etc., concernant chaque fonction de la métabase J'aborderai la création de graphes avec divers indicateurs dans un autre article. .. (Veuillez noter qu'il s'agit d'une édition de construction environnementale ...)
C'est tout merci.
Recommended Posts