Ana içeriğe geç

PostgreSQL Sorguları

PostgreSQL sorguları, Compass modülünde Port'a eklenmiş bir PostgreSQL veri kaynağı üzerinde standart SQL ve PostgreSQL uzantılarıyla yazılan sorgulardır.


Güçlü Yanları

Özellik Açıklama
Tam ANSI SQL JOIN, CTE (WITH), window function, HAVING tam destek
TimescaleDB Uyumu time_bucket() ile yüksek frekanslı zaman serisi sorguları
JSONB Desteği data->>'key' ile yarı-yapılandırılmış veri sorgulama
Schema Organizasyonu schema_adi.tablo_adi ile çok-şemalı veritabanı yapısı
Gelişmiş Tip Dönüşümü ::timestamp, ::numeric gibi :: ile tip casting
Dizi (Array) Desteği ARRAY_AGG(), UNNEST() ile dizi işlemleri

Pirivision'da Sık Kullanılan Sorgu Kalıpları

Demo Fabrika veri kümesi

Aşağıdaki örnekler Demo Fabrika PostgreSQL şemasını kullanır: sensor_zaman_serisi (30 günlük sıcaklık/basınç), vardiya_uretim (vardiya bazlı üretim), oee_gunluk, alarm_log, duris_log, recete_parametre + hatlar / makineler / urun_aileleri lookup tabloları. Port'taki veri kaynağı adı: Demo Fabrika - PostgreSQL.

Aynı veriyi kendi ortamınızda oluşturmak için → Sentetik Veri Üretimi — PostgreSQL

-- Anlık KPI (son OEE değeri)
SELECT ROUND(oee_yuzde, 1) AS oee
FROM   oee_gunluk
ORDER  BY ts DESC
LIMIT  1;

-- Zaman serisi — parametreli tarih aralığı ve hat
SELECT ts,
       sicaklik AS sicaklik_c,
       basinc   AS basinc_bar,
       makine_id
FROM   sensor_zaman_serisi
WHERE  ts >= {{start_date}}::timestamp
  AND  ts <= {{end_date}}::timestamp
  AND  hat_id = {{hat_id}}
ORDER  BY ts;

-- TimescaleDB / DATE_TRUNC — saatlik ortalama
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
GROUP  BY saat, makine_id
ORDER  BY saat;

-- GROUP BY özet — hat bazlı OEE
SELECT hat_id,
       AVG(oee_yuzde)::numeric(5,1) AS oee
FROM   oee_gunluk
WHERE  ts >= CURRENT_DATE - 7
GROUP  BY hat_id
ORDER  BY hat_id;

Önemli PostgreSQL Fonksiyonları

Kategori Fonksiyon Örnek
Zaman NOW() WHERE ts > NOW() - INTERVAL '1 hour'
Zaman DATE_TRUNC() DATE_TRUNC('day', ts)
Zaman EXTRACT() EXTRACT(HOUR FROM ts)
Zaman CURRENT_DATE WHERE ts >= CURRENT_DATE - 7
Tip ::tip ts::date, sicaklik::numeric(5,1)
Metin TO_CHAR() TO_CHAR(ts, 'DD.MM.YYYY HH24:MI')
Metin CONCAT() CONCAT(deger, ' ', birim)
Agregasyon PERCENTILE_CONT PERCENTILE_CONT(0.95) WITHIN GROUP (ORDER BY sicaklik)
TimescaleDB time_bucket() time_bucket('1 hour', ts)

Gereksinimler

Gereksinim Açıklama
Port'ta PostgreSQL veri kaynağı Bağlantısı test edilmiş olmalı
SELECT yetkisi Veritabanı kullanıcısının sorgulanacak tablolarda yetkisi olmalı

Rehberler

Rehber Açıklama
PostgreSQL Sorgusu Oluşturma Compass'ta yeni PostgreSQL sorgusu yazma
PostgreSQL Sorgusu Düzenleme Mevcut sorguyu güncelleme
Sorgu Taşıma Farklı klasöre taşıma
Sorgu Çoğaltma Kopyalama
Sorgu Silme Kaldırma

PostgreSQL Sorgusu Oluşturma