Ana içeriğe geç

MSSQL Sorgusu Oluşturma (T-SQL)

Bu sayfa, Pirivision Compass modülünde bir MSSQL veri kaynağına T-SQL sorgusu yazıp kaydetme sürecini anlatır.

T-SQL Farkları

MSSQL, standart SQL'den farklı T-SQL (Transact-SQL) dialektini kullanır. LIMIT yerine TOP N, NOW() yerine GETDATE(), tarih işlemleri için DATEADD() / DATEDIFF() kullanılır.

Ön Koşul — Port Veri Kaynağı

Bu sorguyu oluşturmak için Port modülünde bir MSSQL veri kaynağı tanımlı olmalıdır. Henüz eklenmemişse önce Port'a gidin ve bir bağlantı oluşturun.

Port: MSSQL Veri Kaynağı Ekleme

Oluşturma Öncesi Gerekli Bilgiler

Bu sayfadaki örnekler Demo Fabrika MSSQL demo_fabrika.vardiya_uretim tablosunu ve Port'taki Demo Fabrika - MSSQL veri kaynağını kullanır. Aynı veriyi kendi ortamınızda oluşturmak için bkz. Sentetik Veri Üretimi — MSSQL.

Bilgi Açıklama Varsayılan Örnek
Veri Kaynağı Port'ta eklenmiş MSSQL bağlantısı Demo Fabrika - MSSQL
Sorgu Adı Compass listesinde görünen isim mssql_vardiya_uretim
T-SQL İfadesi Çalıştırılacak T-SQL sorgusu SELECT TOP 50 * FROM demo_fabrika.vardiya_uretim WHERE hat_id = {{hat_id}} ORDER BY ts DESC
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. MSSQL Veri Kaynağı Seçin

Select Your Data Source ekranında MSSQL tipindeki veri kaynağını seçin. Next butonuna tıklayın.

Veri kaynağı seçimi — MSSQL


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

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

T-SQL editörü — MSSQL bağlı, tablo tarayıcısı sol panelde


5. T-SQL Sorgusu Yazın

-- Hızlı test — parametresiz, son 7 gün — Demo Fabrika
SELECT TOP 50
       ts,
       hat_id,
       makine_id,
       vardiya,
       urun_ailesi,
       uretim_adet
FROM   demo_fabrika.vardiya_uretim
WHERE  ts >= CAST(DATEADD(day, -7, GETDATE()) AS date)
ORDER  BY ts DESC, hat_id;
-- Son N gün — {{days}} parametreli
-- NOT: CAST({{days}} AS int) zorunludur; aksi halde MSSQL nvarchar hatasını verir.
SELECT TOP 50
       ts,
       hat_id,
       makine_id,
       vardiya,
       urun_ailesi,
       uretim_adet
FROM   demo_fabrika.vardiya_uretim
WHERE  ts >= CAST(DATEADD(day, -CAST({{days}} AS int), GETDATE()) AS date)
  AND  hat_id = {{hat_id}}
ORDER  BY ts DESC, hat_id;
-- Zaman aralığı — {{start_date}} / {{end_date}} parametreli
SELECT ts,
       hat_id,
       uretim_adet
FROM   demo_fabrika.vardiya_uretim WITH (NOLOCK)
WHERE  ts >= CAST({{start_date}} AS date)
  AND  ts <= CAST({{end_date}} AS date)
ORDER  BY ts;
-- Vardiya bazlı özet
SELECT vardiya,
       SUM(uretim_adet)               AS toplam,
       AVG(CAST(uretim_adet AS FLOAT)) AS ortalama,
       COUNT(*)                       AS kayit_sayisi
FROM   demo_fabrika.vardiya_uretim WITH (NOLOCK)
WHERE  ts >= CAST({{start_date}} AS date)
  AND  ts <= CAST({{end_date}} AS date)
  AND  hat_id = {{hat_id}}
GROUP  BY vardiya;
-- DATEDIFF ile gün farkı
SELECT hat_id,
       DATEDIFF(day, MIN(ts), MAX(ts)) AS gun_araligi
FROM   demo_fabrika.vardiya_uretim
WHERE  ts >= CAST({{start_date}} AS date)
  AND  ts <= CAST({{end_date}} AS date)
GROUP  BY hat_id;

T-SQL'e özgü notlar: - TOP N kullanın — LIMIT N T-SQL'de çalışmaz - ts kolonu date tipindedir; tarih parametrelerini her zaman CAST({{param}} AS date) ile dönüştürün - GETDATE() ile anlık zaman alın; DATEADD(unit, amount, date) ile tarih hesaplama; sonucu CAST(... AS date) ile kesin - Canlı tablolarda WITH (NOLOCK) kilit sorunlarını önler - DATEDIFF(unit, start, end) ile iki tarih arasındaki farkı hesaplayın - Boşluklu isimler için [tablo adi] sözdizimi kullanın

T-SQL editörü — sorgu yazılmış, TOP N / DATEADD 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 T-SQL 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; MSSQL veritabanındaki tüm tablolar checkbox listesi halinde görünür.

Select Tables modalı — tablo 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 T-SQL kodu; üst köşede Copy ve Use SQL butonları
SQL Sorgu Açıklaması Sorgunun ne yaptığını açıklayan Türkçe metin

T-SQL diyalektini belirtin

İsteğinizde "TOP N kullan, LIMIT kullanma" veya "DATEADD ile tarih hesapla" gibi notlar eklerseniz Makinist T-SQL'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.

T-SQL 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 mssql_vardiya_uretim
Description Hayır Son 7 günlük vardiya üretim kayıtları (MSSQL)

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.

Compass listesi — MSSQL sorgu kartı


12. Sık Karşılaşılan Hatalar

Hata / Belirti Olası Neden Çözüm
mssql: login failed for user '...' Kullanıcı adı veya şifre yanlış Port'ta MSSQL bağlantısını güncelleyin
mssql: Cannot open database "..." requested by the login Veritabanı adı yanlış veya yetki yok Port'taki bağlantı ayarlarını kontrol edin
mssql: TCP provider: connection refused MSSQL sunucusuna ulaşılamıyor Host, port ve ağ erişimini kontrol edin
mssql: TLS Handshake failed SSL/TLS uyuşmazlığı Port bağlantısındaki SSL ayarlarını kontrol edin
mssql: Operand data type nvarchar is invalid for minus operator DATEADD içinde -{{param}} kullanımı CAST({{days}} AS int) ile sarın: DATEADD(day, -CAST({{days}} AS int), GETDATE())
'LIMIT' is not a recognized T-SQL keyword T-SQL'de LIMIT kullanılamaz SELECT TOP N kullanın
mssql: Invalid object name 'tablo' Tablo yok Tablo adını doğrulayın
mssql: Invalid object name 'demo_fabrika.vardiya_uretim' Demo Fabrika verisi yüklenmemiş Bkz. Sentetik Veri Üretimi — MSSQL
mssql: Column 'kolon' does not exist Kolon adı yanlış Tablo tarayıcısından kolon adını doğrulayın
"you already have a query named '...'" Aynı adda sorgu mevcut Farklı ad girin
Boş sonuç WHERE koşulu eşleşmiyor NOLOCK hint ekleyin; filtre değerlerini kontrol edin

Sonraki Adım

Cartography