In den letzten Jahren ist die Visualisierung und Demokratisierung von Daten mithilfe von BI-Tools meiner Meinung nach äußerst wichtig geworden.
Ich habe BI-Tools wie "Redash" verwendet.
Ich habe Metabase
nicht angesprochen, was seit einiger Zeit ein heißes Thema ist, also werde ich versuchen, es einmal zu berühren.
Für DB verwende ich "MySQL8".
Mit Docker erstellen.
Wir haben das folgende docker-compose.yml
vorbereitet.
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
In Bezug auf die Verzeichnishierarchie habe ich das Projekt auf GitHub hochgeladen Bitte überprüfen Sie hier. https://github.com/inagacky/metabase_sample
Starten Sie mit dem folgenden Befehl.
[inagacky@macbook] ~/workspace/metabase_sample
% docker-compose up -d
Greifen Sie danach auf "http: // localhost: 3000" zu. Wenn der folgende Bildschirm angezeigt wird, ist dies erfolgreich.
Folgen Sie der Anleitung zu "Sprache", "Benutzereinstellungen" und "Datenquelleneinstellungen". Es ist sehr höflich, so dass Sie sich keine Sorgen machen müssen.
Wenn die Einstellungen abgeschlossen sind, wird der folgende Bildschirm angezeigt. Anfangs gibt es einen Beispieldatensatz, aber dieses Mal werden wir ihn mit unserer eigenen Datenbank überprüfen.
Erstellen Sie eine Tabelle und gießen Sie Daten in die Datenbank, die auf Docker ausgeführt wird. Da wir im Immobiliengeschäft tätig sind, erstellen wir einen einfachen Tisch mit einer solchen Struktur. Dieses Mal erstellen wir "Kundeninformationen", "Immobilieninformationen" und "Vertragsinformationen". (Es gibt einige Felder, die gemeistert werden sollten, aber es war mühsam, also habe ich es so gemacht, wie es ist.)
CREATE TABLE IF NOT EXISTS `customers` ( --Kundeninformation
`id` INT AUTO_INCREMENT, -- PK
`name` VARCHAR(20) , --Vollständiger Name
`age` INT, --Alter
PRIMARY KEY (`id`),
KEY `idx_age`(`age`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
;
CREATE TABLE IF NOT EXISTS `property` ( --Immobilieninformationen
`id` INT AUTO_INCREMENT, -- PK
`prefName` VARCHAR(20) , --Name der Präfekturen
`price` BIGINT, --Preis
`category` VARCHAR(20), --Kategorie(Einfamilienhaus/Land/Herrenhaus 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` ( --Vertragsinformation
`customer_id` INT NOT NULL, --Kundennummer
`property_id` INT NOT NULL, --Eigenschafts-ID
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
;
Führen Sie für die Daten die folgenden Schritte aus.
--Kundeninformation
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');
--Immobilieninformationen
INSERT INTO `metabase_sample`.`property` (`prefName`, `price`, `category`) VALUES ('Präfektur Aichi', '32000000', 'Einfamilienhaus');
INSERT INTO `metabase_sample`.`property` (`prefName`, `price`, `category`) VALUES ('Präfektur Aichi', '40000000', 'Einfamilienhaus');
INSERT INTO `metabase_sample`.`property` (`prefName`, `price`, `category`) VALUES ('Tokio', '90000000', 'Einfamilienhaus');
INSERT INTO `metabase_sample`.`property` (`prefName`, `price`, `category`) VALUES ('Tokio', '120000000', 'Wohnung');
INSERT INTO `metabase_sample`.`property` (`prefName`, `price`, `category`) VALUES ('Präfektur Aichi', '20000000', 'Land');
INSERT INTO `metabase_sample`.`property` (`prefName`, `price`, `category`) VALUES ('Tokio', '90000000', 'Wohnung');
INSERT INTO `metabase_sample`.`property` (`prefName`, `price`, `category`) VALUES ('Präfektur Aichi', '24000000', 'Wohnung');
--Vertragsinformation
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');
Die Einführung ist lang geworden, aber ich werde ein wenig mit Metabasis spielen.
Tabellenverknüpfungen können auch über die GUI durchgeführt werden.
Sie können die Tabelle wie unten gezeigt durchsuchen.
Es gibt auch verschiedene Arten von Diagrammen. (Es sah nicht gut aus, weil es nicht viele Daten gab ...)
Sie können auch ein Dashboard erstellen, wie unten gezeigt.
Ich habe die Metabasis zum ersten Mal berührt, aber ich habe verschiedene Dinge intuitiv verstanden. Da der Artikel aufgrund von Umgebungskonstruktionen usw. länger wurde als erwartet, in Bezug auf jede Funktion der Metabasis, Ich werde in einem anderen Artikel auf die Erstellung von Diagrammen mit verschiedenen Indikatoren eingehen. .. (Bitte beachten Sie, dass dies eine Umweltkonstruktionsausgabe ist ...)
Das ist alles danke dir.
Recommended Posts