MySQL Sorgusu Oluşturma
Bu sayfa, Pirivision Compass modülünde bir MySQL veri kaynağına sorgu yazıp kaydetme sürecini anlatır.
MySQL Dialekti
MySQL, standart SQL'e yakın ancak bazı farklılıklar içerir: tanımlayıcılar için backtick (`), IFNULL(), IF(), DATE_SUB(), GROUP_CONCAT() MySQL'e özgüdür.
Ön Koşul — Port Veri Kaynağı
Bu sorguyu oluşturmak için Port modülünde bir MySQL veri kaynağı tanımlı olmalıdır. Henüz eklenmemişse önce Port'a gidin ve bir bağlantı oluşturun.
Oluşturma Öncesi Gerekli Bilgiler
Bu sayfadaki örnekler Demo Fabrika MySQL veri setindeki demo_vardiya_uretim tablosunu ve Port'taki Demo Fabrika - MySQL veri kaynağını kullanır. Aynı veriyi kendi ortamınızda oluşturmak için bkz. Sentetik Veri Üretimi — MySQL.
| Bilgi | Açıklama | Varsayılan | Örnek |
|---|---|---|---|
| Veri Kaynağı | Port'ta eklenmiş MySQL bağlantısı (database app_db) |
— | Demo Fabrika - MySQL |
| Sorgu Adı | Compass listesinde görünen isim | — | mysql_vardiya_uretim |
| SQL İfadesi | MySQL sorgusu | — | SELECT * FROM demo_vardiya_uretim WHERE hat_id = {{hat_id}} ORDER BY ts DESC LIMIT 50 |
| Hedef Klasör | Compass klasörü | Kök (Root) | Demo Fabrika / Üretim |
1. Compass Modülüne Girin
Sol menüden Compass modülüne tıklayın.
2. Yeni Sorgu Oluşturun
Add New Query butonuna tıklayın.
3. MySQL Veri Kaynağı Seçin
Select Your Data Source ekranında MySQL tipindeki veri kaynağını seçin. Next butonuna tıklayın.
4. SQL Editörü Açılır
MySQL SQL editör ekranı açılır. Sol panelde MySQL veritabanındaki tablolar ve kolonlar listelenir.
5. MySQL Sorgusu Yazın
-- Son 50 üretim kaydı — Demo Fabrika
SELECT ts, hat_id, makine_id, vardiya, urun_ailesi, uretim_adet
FROM demo_vardiya_uretim
WHERE hat_id = {{hat_id}}
ORDER BY ts DESC, hat_id
LIMIT 50;
-- Zaman aralığı — parametreli
SELECT ts, hat_id, uretim_adet
FROM `demo_vardiya_uretim`
WHERE ts >= {{start_date}}
AND ts <= {{end_date}}
ORDER BY ts;
-- Son 7 gün — DATE_SUB ile dinamik tarih
SELECT ts, hat_id, uretim_adet
FROM demo_vardiya_uretim
WHERE ts >= DATE_SUB(NOW(), INTERVAL {{days}} DAY)
ORDER BY ts DESC;
-- Günlük özet — GROUP BY ve DATE()
SELECT DATE(ts) AS gun,
SUM(uretim_adet) AS toplam,
AVG(uretim_adet) AS ortalama,
MAX(uretim_adet) AS maksimum,
MIN(uretim_adet) AS minimum
FROM demo_vardiya_uretim
WHERE ts >= DATE_SUB(NOW(), INTERVAL {{days}} DAY)
AND hat_id = {{hat_id}}
GROUP BY DATE(ts)
ORDER BY gun;
-- IFNULL ve IF ile koşullu değer
SELECT vardiya,
IFNULL(SUM(uretim_adet), 0) AS toplam,
IF(AVG(uretim_adet) >= 350, 'Hedef Üstü', 'Hedef Altı') AS durum
FROM demo_vardiya_uretim
WHERE ts >= DATE_SUB(NOW(), INTERVAL {{days}} DAY)
AND hat_id = {{hat_id}}
GROUP BY vardiya;
MySQL'e özgü notlar:
- Boşluklu veya rezerve kelime olan kolon/tablo isimleri için backtick kullanın: `demo_vardiya_uretim`
- LIMIT N PostgreSQL gibi çalışır; T-SQL'den farklı olarak SELECT TOP N yok
- DATE_SUB(NOW(), INTERVAL X UNIT) ile geçmişe giden tarih hesaplama
- CURDATE() = bugünün tarihi (zaman kısmı yok); NOW() = tarih + saat
- IFNULL(deger, varsayilan) — null kontrolü
- Demo tablo, mevcut app_db veritabanı içinde demo_ prefix'iyle yaşar; uygulamanın diğer tablolarına dokunmaz
6. Makinist ile Sorgu Yazdırma (AI)
Makinist nedir?
Makinist, Compass SQL sorgu editörünün yapay zeka asistanıdır. Veritabanı tablolarını bağlam olarak seçin, doğal dille isteğinizi yazın; çalıştırılabilir MySQL sorgusu olarak geri döner. Yanıt Langflow üzerinden üretilir ve oturum geçmişi korunur.
Data Explore ekranında, Write Query panelinin sağ üst köşesindeki Write with AI butonuna tıklayın.
Makinist paneli açılır; sol taraf sohbet arayüzüne dönüşür, sağ tarafta Table Preview aktif kalmaya devam eder.
| UI Öğesi | Açıklama |
|---|---|
| Makinist başlığı + 🤖 ikonu | Sol panelin sohbet moduna geçtiğini gösterir |
| Oturum dropdown | Geçmiş oturumlara geçiş; format: {VeriKaynağı}_{Ay}_{SS:dd:ss} |
| 🗑️ Silme ikonu | Aktif oturumu Langflow'dan siler; yeni boş oturum açılır |
| Close Chat | Makinist panelini kapatır; Write Query moduna döner |
| ≡ (Select Tables) | Tablo seçim modalını açar — tablo seçmeden mesaj gönderilemez |
| Input + ▶ | Mesaj yazma ve gönderme alanı |
1. Tablo Seçin
Sol alttaki ≡ (Select Tables) ikonuna tıklayın. Select Tables modalı açılır; MySQL veritabanındaki tüm tablolar checkbox listesi halinde görünür.
Kullanacağınız tabloyu işaretleyip OK butonuna tıklayın. Seçilen tablolar input alanının solunda chip olarak görünür; chip'in × ikonu ile tek tek kaldırılabilir.
Az tablo, net sonuç
Sorgu için gerekli olan minimum tablo setini seçin. Fazla tablo eklemek modelin doğru bağlamı bulmasını zorlaştırır. Hiç tablo seçilmeden mesaj gönderilemez.
2. İsteğinizi Yazın ve Gönderin
Input alanına Türkçe veya İngilizce isteğinizi yazın ve ▶ (Gönder) butonuna tıklayın.
Yanıt beklenirken sohbet alanında typing... balonu görünür. Makinist yanıtı iki bölümden oluşur:
| Bölüm | Açıklama |
|---|---|
| Kullanıcı mesajı | Sağda yeşilimsi balonda gösterilir |
| SQL kod bloğu | Syntax highlighted MySQL kodu; üst köşede Copy ve Use SQL butonları |
| SQL Sorgu Açıklaması | Sorgunun ne yaptığını açıklayan Türkçe metin |
MySQL diyalektini belirtin
İsteğinizde "backtick kullan" veya "DATE_SUB ile son 7 günü filtrele" gibi notlar eklerseniz Makinist MySQL'e daha uygun sorgu üretir.
3. SQL'i Editöre Aktarın
SQL kod bloğundaki Use SQL butonuna tıklayın.
- Sorgu sol Write Query editörüne syntax highlighted olarak yapıştırılır.
- Sağ panel otomatik olarak Query Result moduna geçer ve sorgu çalıştırılır.
- Makinist paneli kapanır; Write with AI butonu tekrar görünür.
Hardcoded değerleri parametreye çevirin
Use SQL sorguyu olduğu gibi aktarır ve çalıştırır. Üretilen sorguda 'HAT-1' veya 7 gibi sabit değerler varsa bunları {{hat_id}} / {{days}} şeklinde parametreye dönüştürün; Parameters bölümünde varsayılan değer atayın.
7. Sorguyu Test Edin
Run butonuna tıklayın. Sonuçlar tablo formatında görünür.
8. Kaydet → Display Info
Save butonuna tıklayın. Kayıt paneli açılır.
| Alan | Zorunlu | Varsayılan | Örnek |
|---|---|---|---|
| Name | Evet | — | mysql_vardiya_uretim |
| Description | Hayır | — | Son 50 vardiya üretim kaydı (MySQL) |
9. Global Değişkenler
{{parametre}} kullanıldıysa sol panelde tanımlanır:
| Alan | Zorunlu | Açıklama | Varsayılan | Örnek |
|---|---|---|---|---|
| Değişken Adı | Evet | {{...}} içindeki isim |
— | start_date |
| Görünen Ad | Evet | Dashboard etiketi | — | Başlangıç Tarihi |
| Tip | Evet | Textbox / Datepicker / Dropdown | Textbox |
Datepicker |
| Varsayılan Değer | Hayır | İlk yükleniş değeri | — | 2024-01-01 |
10. Location — Hedef Klasör
Target Folder alanından klasörü seçin.
11. Kaydet Butonuna Tıklayın
Save butonuna tıklayın. Sorgu Compass listesine kaydedilir.
12. Sık Karşılaşılan Hatalar
| Hata / Belirti | Olası Neden | Çözüm |
|---|---|---|
Error 1045: Access denied for user '...'@'...' |
Kullanıcı adı veya şifre yanlış | Port'ta MySQL bağlantısını güncelleyin |
Error 1049: Unknown database '...' |
Veritabanı adı yanlış | Port'taki Database Name alanını kontrol edin |
Error 2003: Can't connect to MySQL server on '...' |
MySQL sunucusuna ulaşılamıyor | Host, port ve ağ erişimini kontrol edin |
Error 1146: Table '...' doesn't exist |
Tablo yok | Veritabanı (app_db) ve tablo (demo_vardiya_uretim) adını doğrulayın |
Error 1146: Table 'app_db.demo_vardiya_uretim' doesn't exist |
Demo Fabrika verisi yüklenmemiş | Bkz. Sentetik Veri Üretimi — MySQL |
Error 1054: Unknown column '...' |
Kolon adı yanlış | Tablo tarayıcısından kolon adını kontrol edin |
Error 1064: You have an error in your SQL syntax |
SQL sözdizimi hatası | Backtick kullanımını ve sözdizimini gözden geçirin |
"you already have a query named '...'" |
Aynı adda sorgu mevcut | Farklı ad girin |
| Boş sonuç | WHERE koşulu eşleşmiyor | CURDATE() yerine DATE(ts) = CURDATE() deneyin; tarih formatını kontrol edin |












