Ana içeriğe geç

Sentetik Veri — MySQL

MySQL için hazırlanan Demo Fabrika veri seti, Pirivision'da MySQL bağlantısını denemek için tek bir tablo içerir. MySQL'de generate_series olmadığından tarih dizisi geçici bir tablo yöntemiyle üretilir.


Oluşturulan Tablo

Tablo mevcut veritabanınızda demo_ önekiyle açılır; uygulama tablolarınızla çakışmaz.

CREATE TABLE demo_vardiya_uretim (
    ts            DATE         NOT NULL,
    hat_id        VARCHAR(20)  NOT NULL,
    makine_id     VARCHAR(20)  NOT NULL,
    vardiya       VARCHAR(10)  NOT NULL,
    urun_ailesi   VARCHAR(20)  NOT NULL,
    uretim_adet   INT          NOT NULL,
    hedef         INT          NOT NULL,
    INDEX idx_demo_vardiya_ts  (ts),
    INDEX idx_demo_vardiya_hat (hat_id, ts)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

Verinin Üretim Mantığı

1. Geçici Tarih Tablosu

MySQL'de generate_series bulunmadığından 0–30 arasındaki sayılar çapraz birleştirilerek 31 günlük bir tarih listesi oluşturulur:

CREATE TEMPORARY TABLE _seed_gunler (gun DATE);

INSERT INTO _seed_gunler (gun)
SELECT DATE_SUB(CURDATE(), INTERVAL t.n DAY)
FROM (
    SELECT a.N + b.N * 10 AS n
    FROM (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3
          UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7
          UNION ALL SELECT 8 UNION ALL SELECT 9) a
    CROSS JOIN (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2) b
    WHERE (a.N + b.N * 10) <= 30
) t;

2. Veri Üretimi

Tarih listesi makine ve vardiya listeleriyle CROSS JOIN yapılarak her kombinasyon için bir satır üretilir:

INSERT INTO demo_vardiya_uretim
    (ts, hat_id, makine_id, vardiya, urun_ailesi, uretim_adet, hedef)
SELECT
    g.gun,
    CASE WHEN m.idx <= 3 THEN 'HAT-1' ELSE 'HAT-2' END,
    CONCAT('M0', m.idx),
    v.vardiya,
    ELT(1 + FLOOR(RAND() * 4), 'Ürün-A','Ürün-B','Ürün-C','Ürün-D'),
    250 + FLOOR(RAND() * 200),   -- 250–449 arası üretim adedi
    400                           -- sabit hedef
FROM _seed_gunler g
CROSS JOIN (
    SELECT 1 AS idx UNION ALL SELECT 2 UNION ALL SELECT 3
    UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6
) m
CROSS JOIN (
    SELECT 'V1' AS vardiya UNION ALL SELECT 'V2' UNION ALL SELECT 'V3'
) v;

Sonuç: 31 gün × 6 makine × 3 vardiya = 558 satır

Script tamamlandığında otomatik bir doğrulama sorgusu çalışır:

SELECT COUNT(*) AS toplam_satir FROM demo_vardiya_uretim;
-- Beklenen: 558

Veritabanına Yükleme

SQL scriptini veritabanınıza çalıştırın:

mysql -h <sunucu> -u <kullanici> -p <veritabani> < demo_fabrika_mysql.sql

Scripti tekrar çalıştırmak güvenlidir — başında mevcut tablo varsa önce silinir.


Pirivision'a Ekleme

  1. Port → Yeni Veri Kaynağı → MySQL yolunu izleyin.
  2. Sunucu, veritabanı ve kimlik bilgilerini girin.
  3. Test and Save ile kaynağı kaydedin.

Kayıt tamamlandıktan sonra Compass'ta yazabileceğiniz örnek sorgu:

SELECT ts, hat_id, makine_id, vardiya, urun_ailesi, uretim_adet
FROM demo_vardiya_uretim
WHERE ts >= DATE_SUB(NOW(), INTERVAL 7 DAY)
ORDER BY ts DESC, hat_id
LIMIT 50;