Üretim maliyeti SQL odaklı raporlama ve dashboard tasarımı, maliyet bileşenlerini aynı tanım setiyle bir araya getirmeyi hedefler. Üretim yönetimi prensipleri çerçevesinde maliyet; malzeme, işçilik, makine/enerji ve genel üretim giderleri (GÜG) gibi kalemlerin doğru zaman penceresi ve doğru masraf yeriyle ilişkilendirilmesiyle oluşur. Bu çerçevede SQL sorguları, hesaplama mantığını şeffaflaştırır; dashboard ise karar vericinin takip edeceği KPI’ları tek ekranda tutarlı biçimde sunar. Bu yazı, teknik literatürde yaygın kullanılan yaklaşımı izleyerek üretim maliyeti için veri modelleme ipuçlarını, SQL sorgu şablonlarını ve dashboard tasarımında dikkat edilmesi gereken noktaları ele alır.
Üretim maliyeti için veri modeli: temel tablolar ve anahtarlar
Maliyet analizi için SQL tarafında en sık yaşanan zorluk, olay verilerinin (tüketim, zaman, duruş) farklı granülerlikte gelmesidir. Sektörde yaygın kabul gören yaklaşıma göre, analiz edilebilir bir model için üç katman netleştirilir: ana veri, işlem verisi ve maliyet oranları.
- Ana veri: ürün, operasyon, iş merkezi, masraf yeri, kaynak (makine), çalışan, vardiya takvimi, birim dönüşümleri.
- İşlem verisi: üretim emri, ürün çıkışı, malzeme sarfı, işçilik zaman kayıtları, makine zaman/duruş kayıtları, hurda/yeniden işleme kayıtları.
- Oranlar: işçilik saat ücreti, makine saat maliyeti, enerji birim fiyatları, GÜG dağıtım anahtarları, standart maliyetler.
Analitik okumayı kolaylaştırmak için veri ambarı tarafında yıldız şeması (fact/dimension) kurgusu tercih edilir. Çekirdek anahtarlar; production_order_id, operation_id, work_center_id, cost_center_id ve zaman boyutudur. Ayrıca parti/seri izlenebilirliği hedefleniyorsa lot/serial anahtarları da modelin birinci sınıf alanı olmalıdır.
Malzeme maliyeti: sarf, iade, fire ve birim maliyet ilişkisi
Malzeme maliyeti hesaplarında temel prensip, sarf hareketlerinin üretim emri ve mümkünse operasyon seviyesinde toplanmasıdır. Teknik literatürde belirtildiği üzere sarf, iade ve fire gibi hareket tipleri aynı tabloda işlenir; işaret (sign) veya hareket tipi üzerinden net tüketim hesaplanır. Birim maliyet tarafında ise FIFO/ortalama/standart gibi değerleme yaklaşımı ERP veya muhasebe sisteminde tanımlıdır; MES katmanında SQL ile raporlama yapılırken hangi fiyat alanının esas alındığı açık seçik olmalıdır.
Sorgu şablonları: malzeme maliyeti
| İhtiyaç | SQL sorgu şablonu |
|---|---|
| Emir bazında net malzeme maliyeti | SELECT mi.production_order_id, SUM(CASE WHEN mi.movement_type IN (‘ISSUE’,’CONSUME’) THEN mi.qty * mi.unit_cost WHEN mi.movement_type IN (‘RETURN’) THEN -1 * mi.qty * mi.unit_cost ELSE 0 END) AS material_cost FROM material_issues mi WHERE mi.posting_time >= :start_time AND mi.posting_time < :end_time GROUP BY mi.production_order_id; |
| Malzeme kırılımı (kalem bazında) | SELECT mi.production_order_id, mi.material_id, SUM(CASE WHEN mi.movement_type IN (‘ISSUE’,’CONSUME’) THEN mi.qty ELSE -1 * mi.qty END) AS net_qty, SUM(CASE WHEN mi.movement_type IN (‘ISSUE’,’CONSUME’) THEN mi.qty * mi.unit_cost ELSE -1 * mi.qty * mi.unit_cost END) AS net_cost FROM material_issues mi WHERE mi.posting_time >= :start_time AND mi.posting_time < :end_time GROUP BY mi.production_order_id, mi.material_id; |
| Fire ve hurdanın maliyete etkisi | SELECT sc.production_order_id, SUM(sc.scrap_qty * sc.scrap_unit_cost) AS scrap_cost FROM scrap_records sc WHERE sc.event_time >= :start_time AND sc.event_time < :end_time GROUP BY sc.production_order_id; |
Malzeme maliyeti dashboard’ında veri tutarlılığı için ölçü birimi dönüşümleri (UoM) ve parti bazlı fiyat alanlarının (lot cost) kaynak sistemle uyumu kontrol edilmelidir. Aksi durumda aynı malzemenin farklı birimlerle raporlanması toplam maliyeti yanıltır.
İşçilik maliyeti: zaman kayıtları, ücret oranları ve operasyon bazlı izleme
İşçilik maliyeti, zaman kaydı doğruluğuna dayanır. Üretim yönetimi prensiplerinde zaman; kurulum, çevrim, kontrol, taşıma, bekleme gibi alt kategorilere ayrıştırılabildiği ölçüde iyileştirme alanlarını görünür kılar. SQL tarafında ana konu, zamanın üretim emri ve operasyonla eşleştirilmesi ve ücret oranının ilgili döneme göre seçilmesidir (geçerlilik tarihi).
Sorgu şablonları: işçilik maliyeti
| İhtiyaç | SQL sorgu şablonu |
|---|---|
| Emir bazında işçilik maliyeti | SELECT ll.production_order_id, SUM(ll.minutes_worked/60.0 * wr.hourly_rate) AS labor_cost FROM labor_logs ll JOIN wage_rates wr ON wr.employee_id = ll.employee_id AND ll.work_time >= wr.valid_from AND ll.work_time < COALESCE(wr.valid_to, ‘2999-12-31’) WHERE ll.work_time >= :start_time AND ll.work_time < :end_time GROUP BY ll.production_order_id; |
| Operasyon bazında işçilik maliyeti | SELECT ll.production_order_id, ll.operation_id, SUM(ll.minutes_worked/60.0 * wr.hourly_rate) AS labor_cost FROM labor_logs ll JOIN wage_rates wr ON wr.employee_id = ll.employee_id AND ll.work_time >= wr.valid_from AND ll.work_time < COALESCE(wr.valid_to, ‘2999-12-31’) WHERE ll.work_time >= :start_time AND ll.work_time < :end_time GROUP BY ll.production_order_id, ll.operation_id; |
İşçilik maliyeti KPI’larında vardiya takvimi, fazla mesai ve dolaylı işçilik ayrımı net tanımlanmalıdır. Dolaylı işçilik, doğrudan emre yazılmıyorsa masraf yeri üzerinden GÜG içinde ele alınabilir; önemli olan yaklaşımın dashboard açıklamalarında tutarlı biçimde yer almasıdır.
Makine, enerji ve GÜG: saat maliyeti ve dağıtım anahtarları
Makine ve enerji maliyetleri, kaynak kullanımının izlenebilirliğine bağlıdır. ISA-95 katmanlama yaklaşımında kaynak (equipment) kullanımı, operasyon yürütme kayıtlarıyla ilişkilendirilir. GÜG tarafında ise sektör uygulamalarında bir veya birden fazla dağıtım anahtarı (makine saati, işçilik saati, çıktı adedi, standart süre) kullanılır. SQL ile raporlama yaparken dağıtım anahtarının hangi fact tablosundan geldiği ve hangi dönem oranının uygulandığı açık olmalıdır.
Sorgu şablonları: makine ve GÜG
| İhtiyaç | SQL sorgu şablonu |
|---|---|
| Emir bazında makine zamanı maliyeti | SELECT mt.production_order_id, SUM(mt.run_minutes/60.0 * mr.machine_hour_rate) AS machine_cost FROM machine_time mt JOIN machine_rates mr ON mr.machine_id = mt.machine_id AND mt.event_time >= mr.valid_from AND mt.event_time < COALESCE(mr.valid_to, ‘2999-12-31’) WHERE mt.event_time >= :start_time AND mt.event_time < :end_time GROUP BY mt.production_order_id; |
| Masraf yeri bazında GÜG dağıtımı | SELECT x.cost_center_id, SUM(x.base_hours * orr.overhead_per_hour) AS overhead_cost FROM (SELECT ll.cost_center_id, SUM(ll.minutes_worked)/60.0 AS base_hours FROM labor_logs ll WHERE ll.work_time >= :start_time AND ll.work_time < :end_time GROUP BY ll.cost_center_id) x JOIN overhead_rates orr ON orr.cost_center_id = x.cost_center_id AND :period_date >= orr.valid_from AND :period_date < COALESCE(orr.valid_to, ‘2999-12-31’) GROUP BY x.cost_center_id; |
Duruş kayıtları, maliyet analizinde doğrudan “maliyet” alanı olmayabilir; ancak kapasite kaybı, verimlilik ve emre düşen makine saat maliyeti üzerinden dolaylı etki yaratır. Bu nedenle dashboard’da duruş sınıflandırması (planlı/plansız, neden kodları) maliyet metrikleriyle aynı filtrelerle çalışmalıdır.
Toplam üretim maliyeti: birim maliyet, standart sapma ve mutabakat
Toplam üretim maliyeti, bileşenlerin aynı kapsamda birleştirilmesiyle hesaplanır. Burada “kapsam” iki başlıkta netleşir: hangi maliyetlerin ürüne yükleneceği (absorption) ve hangi üretim çıktısına bölüneceği (iyi ürün, toplam üretim, net çıkış). Teknik literatürde standart maliyet ile gerçekleşen maliyetin birlikte izlenmesi, sapma yönetimi için temel bir yöntem olarak ele alınır. SQL sorguları bu sapmayı ürün, emir, operasyon ve masraf yeri kırılımlarında görünür kılacak şekilde tasarlanır.
Sorgu şablonları: toplam ve birim maliyet
| İhtiyaç | SQL sorgu şablonu |
|---|---|
| Emir bazında toplam maliyet (malzeme+işçilik+makine) | SELECT c.production_order_id, SUM(c.material_cost + c.labor_cost + c.machine_cost) AS total_cost FROM cost_components c WHERE c.posting_time >= :start_time AND c.posting_time < :end_time GROUP BY c.production_order_id; |
| Emir bazında birim maliyet (iyi ürün bazlı) | SELECT t.production_order_id, t.total_cost / NULLIF(g.good_qty, 0) AS unit_cost FROM (SELECT c.production_order_id, SUM(c.material_cost + c.labor_cost + c.machine_cost + c.overhead_cost) AS total_cost FROM cost_components c WHERE c.posting_time >= :start_time AND c.posting_time < :end_time GROUP BY c.production_order_id) t JOIN (SELECT pr.production_order_id, SUM(pr.good_qty) AS good_qty FROM production_receipts pr WHERE pr.receipt_time >= :start_time AND pr.receipt_time < :end_time GROUP BY pr.production_order_id) g ON g.production_order_id = t.production_order_id; |
| Standart sapma (gerçekleşen-standart) | SELECT a.product_id, SUM(a.actual_cost) – SUM(s.standard_cost) AS cost_variance FROM actual_costs a JOIN standard_costs s ON s.product_id = a.product_id AND s.valid_from <= :period_date AND COALESCE(s.valid_to, ‘2999-12-31’) > :period_date WHERE a.posting_time >= :start_time AND a.posting_time < :end_time GROUP BY a.product_id; |
Mutabakat (reconciliation) yaklaşımında, MES kaynaklı olay verileri ile ERP/muhasebe kayıtları aynı dönem ve aynı kapsam üzerinden kontrol edilir. Kontrol noktaları; eksik fiyat alanları, negatif stok etkisi, geç gelen kayıtlar, zaman dilimi farklılıkları ve masraf yeri eşleştirmeleridir.
Dashboard tasarımı: KPI seti, drill-down ve performans prensipleri
Üretim maliyeti dashboard tasarımında hedef, “tek ekran” değil, tutarlı bir gezinme (navigasyon) modelidir: üst seviye KPI’lar, neden kırılımları ve aksiyon odaklı detaylar. Bilgi mimarisi tasarlanırken boyutlar (zaman, ürün, emir, masraf yeri, iş merkezi, vardiya) filtre hiyerarşisi olarak ele alınır. Görsel tasarımda okunabilirlik için birimlerin (TL/adet, TL/kg, saat, adet) her metrikte açık yazılması ve aynı renklerin aynı maliyet bileşenini temsil etmesi tercih edilir.
KPI önerileri ve yerleşim
| Panel | İçerik | Not |
|---|---|---|
| Üst KPI şeridi | Birim maliyet, toplam maliyet, standart sapma, GÜG yükleme, WIP değeri | Filtre kapsamı görünür olmalı |
| Bileşen kırılımı | Malzeme, işçilik, makine/enerji, GÜG | Aynı dönem ve aynı para birimi |
| Sapma analizi | Ürün/masraf yeri/iş merkezi bazında sapma | Sapma tanımı sabit kalmalı |
| Süreç göstergeleri | Hurda oranı, yeniden işleme, duruş süreleri | Maliyetle aynı filtreleri kullanmalı |
| Detay tablo | Emir listesi: birim maliyet, bileşenler, miktar, tarih | Drill-down için ana veri alanları |
Performans ve veri yönetişimi
- Toplama stratejisi: ham olay verisinden saatlik/günlük özet fact tabloları; yoğun kullanılan metrikler için materialized/aggregate yaklaşımı.
- SQL performansı: zaman alanlarına indeks, üretim emri ve masraf yeri anahtarlarında bileşik indeks; dönemsel partition.
- Tekil doğrular: ücret/oran tablolarında geçerlilik tarihi (valid_from/valid_to) ve çakışma kontrolü.
- Veri kalitesi: negatif veya sıfır bölme riskleri, eksik maliyet alanları, çift kayıtlar için kural setleri.
- Tanım sözlüğü: “iyi ürün”, “net tüketim”, “GÜG”, “birim maliyet” tanımları dashboard içinde aynı terimlerle sunulmalı.
Özetle, üretim maliyeti için SQL sorgu tasarımı ve dashboard kurgusu; doğru veri modelini kurmak, maliyet bileşenlerini aynı kapsamda birleştirmek ve KPI’ları tutarlı tanımlarla yönetmek üzerine kurulur. MESPlus ile üretim verisi, maliyet bileşenleri ve kurumsal sistem kayıtlarının aynı raporlama mantığıyla izlenmesine yönelik ihtiyaçlarınızı değerlendirmek için iletişime geçebilirsiniz.



