[DOCKER] Einführung in Metabase ~ Umgebungskonstruktion ~

Einführung

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".

Über die Umwelt

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

Eigentlich starten

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. スクリーンショット 2020-10-29 9.47.05.png

Grundeinstellung

Folgen Sie der Anleitung zu "Sprache", "Benutzereinstellungen" und "Datenquelleneinstellungen". Es ist sehr höflich, so dass Sie sich keine Sorgen machen müssen. スクリーンショット 2020-10-29 9.49.31.png

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. スクリーンショット 2020-10-29 9.52.42.png

DB-Einstellungen

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');

Spielen Sie mit der Metabasis

Die Einführung ist lang geworden, aber ich werde ein wenig mit Metabasis spielen.

Tabellenverknüpfung

Tabellenverknüpfungen können auch über die GUI durchgeführt werden. スクリーンショット 2020-10-29 11.12.30.png

Sie können die Tabelle wie unten gezeigt durchsuchen. スクリーンショット 2020-10-29 11.13.15.png

Graph

Es gibt auch verschiedene Arten von Diagrammen. (Es sah nicht gut aus, weil es nicht viele Daten gab ...) スクリーンショット 2020-10-29 11.18.37.png

Instrumententafel

Sie können auch ein Dashboard erstellen, wie unten gezeigt. スクリーンショット 2020-10-29 11.24.36.png

Zusammenfassung

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

Einführung in Metabase ~ Umgebungskonstruktion ~
Einführung in den Roboterkampf mit Robocode (Umgebungskonstruktion)
Road to Java Engineer Teil 1 Einführung & Umgebungskonstruktion
Einführung in Kotlin für iOS-Entwickler ①-Umgebungskonstruktion
Einführung in Slay the Spire Mod Development (2) Konstruktion der Entwicklungsumgebung
Einführung in Ruby 2
[Java] Umgebungskonstruktion
Jekyll Super Einführung # 1 ab 0 - Umweltkonstruktion
Einführung in web3j
Einführung in Micronaut 1 ~ Einführung ~
[Java] Einführung in Java
Einführung in die Migration
Einführung in Java
[Frühling] Umweltbau
Einführung in Doma
So verknüpfen Sie Rails6 Vue (aus dem Umgebungsbau)
Aufbau der Penronse-Umgebung [Windows]
Einführung in JAR-Dateien
Einführung in Ratpack (8) -Session
[Flattern] Ubuntu 20.04 Umgebungskonstruktion
Aufbau der Rails Docker-Umgebung
Einführung in die Bitarithmetik
Einführung in Ratpack (6) --Promise
Einführung in Ratpack (9) - Thymeleaf
Einführung in PlayFramework 2.7 ① Übersicht
Einführung in das Android-Layout
Einführung in Entwurfsmuster (Einführung)
Einführung in die praktische Programmierung
Einführung in den Befehl javadoc
Einführung in den Befehl jar
Einführung in Ratpack (2) -Architektur
Java Entwicklungsumgebung Konstruktion
Einführung in den Lambda-Stil
Einführung in den Java-Befehl
Einführung in die Keycloak-Entwicklung
Einführung in den Befehl javac
Bereitstellen auf Ruby on Rails Elastische Bohnenstange (Umgebungskonstruktion)
Einführung in Entwurfsmuster (Builder)
Aufbau der Rails6-Entwicklungsumgebung [Mac]
Rails Engineer Environment Construction Ruby2.7.1
Ich habe versucht, node-jt400 (Umgebungskonstruktion)
Schienen Umgebungsbau Schienen5.2.1 ruby2.5.1 Catalina
Einführung in die Android App-Entwicklung
Einführung in Ratpack (5) --Json & Registry
Konstruktionsnotiz für die MySQL 5.7 (Docker) -Umgebung
Einführung in Ratpack (7) - Guice & Spring
(Punktinstallation) Einführung in Java8_Impression
Einführung in Entwurfsmuster (Composite)
Einführung in Micronaut 2 ~ Unit Test ~