Ana içeriğe geç

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.

Port: MySQL Veri Kaynağı Ekleme

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.

Compass listesi


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.

Veri kaynağı seçimi — MySQL


4. SQL Editörü Açılır

MySQL SQL editör ekranı açılır. Sol panelde MySQL veritabanındaki tablolar ve kolonlar listelenir.

MySQL SQL editörü — tablo tarayıcısı sol panelde


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

SQL editörü — MySQL sorgusu yazılmış, backtick ve DATE_SUB içeriyor


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.

Data Explore — sol Write Query + sağ Table Preview; "Write with AI" butonu görünür

Makinist paneli açılır; sol taraf sohbet arayüzüne dönüşür, sağ tarafta Table Preview aktif kalmaya devam eder.

Makinist paneli — boş oturum; oturum dropdown, Close Chat butonu ve Select Tables ikonu görünür

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.

Select Tables modalı — demo_vardiya_uretim seçili

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:

Makinist — kullanıcı isteği + SQL bloğu (Copy / Use SQL) + SQL Sorgu Açıklaması

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.

"Use SQL" tıklandı — sorgu editöre aktarıldı; sağ panel Query Result moduna geçti

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

MySQL test sonucu tablosu


8. Kaydet → Display Info

Save butonuna tıklayın. Kayıt paneli açılır.

Kayıt paneli

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

Parametre tipi seçimi — Textbox seçili, Default Value girilmiş


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.

Compass listesi — MySQL sorgu kartı


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

Sonraki Adım

Cartography