Ana içeriğe geç

PostgreSQL Sorgusu Oluşturma

Bu sayfa, Pirivision Compass modülünde bir PostgreSQL veri kaynağına sorgu yazıp kaydetme sürecini anlatır.

Ön Koşul — Port Veri Kaynağı

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

Port: PostgreSQL Veri Kaynağı Ekleme

Oluşturma Öncesi Gerekli Bilgiler

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

Bilgi Açıklama Varsayılan Örnek
Veri Kaynağı Port'ta eklenmiş PostgreSQL bağlantısı Demo Fabrika - PostgreSQL
Sorgu Adı Compass listesinde görünen isim sensor_zaman_trendi
SQL İfadesi Çalıştırılacak PostgreSQL sorgusu SELECT ts, sicaklik FROM sensor_zaman_serisi WHERE ts >= {{start_date}}::timestamp AND ts <= {{end_date}}::timestamp AND hat_id = {{hat_id}} ORDER BY ts
Açıklama Sorgunun amacı Hat 1 sıcaklık/basınç zaman serisi (son 24 saat)
Global Variable Sorguda {{...}} kullanıldıysa hat_id (Text, varsayılan HAT-1)
Hedef Klasör Compass klasörü Kök (Root) Demo Fabrika / Sensörler

Önbellek Süresi

PostgreSQL sorguları varsayılan olarak 300 saniye önbelleklenir. Sık güncellenmesi gereken veriler için bu değeri küçültün.


1. Compass Modülüne Girin

Sol menüden Compass modülüne tıklayın.

Compass listesi


2. Yeni Sorgu Oluşturun

Sağ üstteki Add New Query butonuna tıklayın.


3. PostgreSQL Veri Kaynağı Seçin

Select Your Data Source ekranında PostgreSQL tipindeki veri kaynağını seçin.

Next butonuna tıklayın.

Veri kaynağı seçimi — PostgreSQL


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

PostgreSQL SQL editör ekranı açılır.

Data Explore — SQL editörü ve Table Preview

Bölüm Açıklama
Write Query SQL kod editörü — PostgreSQL sözdizimi vurgulama aktif
Parameters Sorgu içindeki {{parametre}} değişkenleri otomatik listelenir; önizleme için değer girilir
Table Preview Sağ panelde seçilen tablonun ham verisi — Select Table dropdown ile tablo değiştirilebilir
Write with AI Doğal dille sorgu üret veya geliştir
Next Sorguyu kaydederek parametre ayarları adımına geçer

5. PostgreSQL Sorgusu Yazın

Parametre sözdizimi

{{hat_id}} gibi çift süslü parantez kullanın. Backend bu token'ı otomatik $1 parametresine çevirir. Tek tırnak içine alırsanız ('{{hat_id}}') sorgu literal '$1' olur ve 0 satır döner.

-- Zaman serisi — son 24 saat, parametreli hat (Demo Fabrika)
SELECT ts,
       sicaklik AS sicaklik_c,
       basinc   AS basinc_bar,
       makine_id
FROM   sensor_zaman_serisi
WHERE  ts >= NOW() - INTERVAL '24 hours'
  AND  hat_id = {{hat_id}}
ORDER  BY ts;
-- DATE_TRUNC ile saatlik ortalama sıcaklık
SELECT DATE_TRUNC('hour', ts) AS saat,
             makine_id,
             AVG(sicaklik)          AS ort_sicaklik
FROM   sensor_zaman_serisi
WHERE  ts >= {{start_date}}::timestamp
    AND  ts <= {{end_date}}::timestamp
    AND  hat_id = {{hat_id}}
GROUP  BY saat, makine_id
ORDER  BY saat;
-- Lookup tablolarla JOIN — makine markası ve ürün ailesi adı
SELECT v.ts,
       v.makine_id,
       m.marka,
       m.model,
       v.vardiya,
       u.ad         AS urun_ailesi,
       v.uretim_adet
FROM   vardiya_uretim   v
JOIN   makineler        m ON m.makine_id = v.makine_id
JOIN   urun_aileleri    u ON u.urun_kodu = v.urun_kodu
WHERE  v.ts >= {{start_date}}::timestamp
    AND  v.ts <= {{end_date}}::timestamp
    AND  v.hat_id = {{hat_id}}
ORDER  BY v.ts DESC, v.makine_id
LIMIT  100;
-- Anlık KPI — son OEE değeri (Radial Gauge için ideal)
SELECT ROUND(oee_yuzde, 1) AS oee
FROM   oee_gunluk
WHERE  hat_id = {{hat_id}}
ORDER  BY ts DESC
LIMIT  1;

Parametre sözdizimi: {{parametre_adi}}tırnaksız yazılır; kayıt sırasında Global Değişken olarak tanımlanır. Backend {{hat_id}} token'ını otomatik $1 parametre yer-tutucusuna çevirir; tek tırnak içine alırsanız ('{{hat_id}}') sorgu literal '$1' olur ve 0 satır döner.

PostgreSQL'e özgü notlar: - ::timestamp ile string → zaman damgası dönüşümü yapın ({{start_date}}::timestamp) - INTERVAL '7 days' yerine INTERVAL '{{gun}} days' ile dinamik aralık mümkündür - Tablo adı bulunamazsa Port bağlantısında doğru DB'nin seçildiğini kontrol edin

Data Explore — sorgu yazılmış, Table Preview sağ panelde


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 PostgreSQL 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} (örn. ExampleDB_May_13:36:25)
🗑️ 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; veritabanındaki tüm tablolar checkbox listesi halinde görünür.

Select Tables modalı — sensor_zaman_serisi seçili; hatlar ve makineler seçili değil

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

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.
  • Sağ üstteki Back to Data Explore butonu ile Table Preview'a dönülebilir.

Hardcoded değerleri parametreye çevirin

Use SQL sorguyu olduğu gibi aktarır ve çalıştırır. Üretilen sorguda 'M01' veya 6.50 gibi sabit değerler varsa bunları {{makine_id}} / {{esik}} şeklinde parametreye dönüştürün; Parameters bölümünde varsayılan değer atayın.


7. Tablo Önizlemesini Kullanın

Sağ paneldeki Table Preview bölümünde Select Table dropdown'ından istediğiniz tabloyu seçin. Tablo kolonlarını ve örnek veriyi inceleyerek SQL sorgunuzu buna göre şekillendirebilirsiniz.


8. Sorguyu Test Edin

Parameters bölümünde parametre değerini girin (örn. hat_id = HAT-2) ve Preview butonuna tıklayın. Bu değer yalnızca test içindir; gerçek varsayılan (HAT-1) kayıt panelinde belirlenir.

Parametre doldurma — hat_id = HAT-2 girilmiş, Preview tıklanmak üzere

Sağ panelde Query Result bölümü açılır ve filtrelenmiş sonuçlar tablo formatında görünür.

Query Result — test sonucu tablo halinde


9. Kaydet → Display Info

Next butonuna tıklayın. Set Parameters type and Default Values sayfası açılır.

Kayıt sayfası — Display Info ve Parameter Settings

Sağ tarafta sorgunun SQL metni görünür. Sol tarafta ad ve açıklama girin:

Alan Zorunlu Varsayılan Örnek
Name Evet sensor_zaman_trendi
Description Hayır Hat 1 sıcaklık/basınç zaman serisi (son 24 saat)

10. Global Değişkenler (Parametreler)

Sorguda {{parametre_adi}} kullanıldıysa Parameter Settings bölümünde otomatik listelenir. Her parametre için Set Parameter butonuna tıklayarak tip ve varsayılan değer belirleyin:

Alan Açıklama Seçenekler Örnek
Parameter Type Dashboard'da gösterilecek kontrol tipi Textbox / Datepicker / Dropdown (query) / Dropdown (manuel) Textbox
Default Value İlk yükleniş değeri HAT-1

Demo Fabrika örneği

sensor_zaman_trendi sorgusunda hat_id parametresi: Type Textbox, Default Value HAT-1. (recete_parametre_listesi sorgusu için ise makine_id parametresi, Default M01.)

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


11. Location — Hedef Klasör

Target Folder alanından klasörü seçin. Seçilmezse kök dizine kaydedilir.


12. Kaydet Butonuna Tıklayın

Panelin alt kısmındaki Save butonuna tıklayın. Sorgu Compass listesine kaydedilir.


13. Listede Kontrol

Yeni sorgu kartı Compass listesinde görünmelidir.

Compass listesi — PostgreSQL sorgu kartı


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

Hata / Belirti Olası Neden Çözüm
pq: password authentication failed for user "..." Kullanıcı adı veya şifre yanlış Port'ta PostgreSQL bağlantısını güncelleyin
pq: database "..." does not exist Veritabanı adı yanlış Port'taki Database Name alanını kontrol edin
pq: relation "..." does not exist Tablo veya view yok Tablo adını doğrulayın; Port bağlantısında doğru DB'nin seçildiğini kontrol edin
pq: column "..." does not exist Kolon adı yanlış Tablo tarayıcısından kolon adını kontrol edin
pq: syntax error at or near "..." SQL sözdizimi hatası Sorguyu gözden geçirin; :: casting doğru mu?
could not open target DB: dial tcp: i/o timeout PostgreSQL sunucusuna ulaşılamıyor Sunucu adresi, port ve ağ erişimini kontrol edin
"you already have a query named '...'" Aynı adda sorgu mevcut Farklı ad girin
"could not get columns: ..." Sorgu sütun döndürmüyor Sorgunun SELECT ile kolon döndürdüğünden emin olun
Sorgu 0 satır dönüyor {{hat_id}} tek tırnak içinde ('{{hat_id}}') Tek tırnağı kaldırın: hat_id = {{hat_id}}
relation "sensor_zaman_serisi" does not exist Demo Fabrika verisi yüklenmemiş Bkz. Sentetik Veri Üretimi — PostgreSQL
Parametre boş geliyor Global Variable tanımlı değil Kayıt panelinde hat_id parametresini ekleyip Default Value verin
Boş sonuç tablosu WHERE koşulu veri eşleştirmiyor Filtre değerlerini ve tarih aralığını genişletin

Sonraki Adım

Cartography