Supply Chain & Procurement serimizin bir parçası
Tam kılavuzu okuyunPower BI ile Envanter Analizi: Stok, Ciro ve Talep
Fazla stok, taşıma maliyetlerinde yıllık olarak değerinin %25-30'una mal olur. Stokların tükenmesi perakendecilere her yıl yaklaşık 1 trilyon dolarlık satış kaybına neden oluyor. Bu iki uç arasında dar bir aralıkta optimum envanter yer alır ve Power BI, operasyon ekiplerini tam olarak bu çizgide tutan araçtır.
Power BI'da envanter analitiğinin zorluğu, stokun bir akış ölçüsünden (bu ay ne kadar satıldı?) ziyade bir anlık görüntü ölçüsü (şu anda ne kadarımız var?) olmasıdır. Bu ayrım, veri modelindeki her tasarım kararını ve her DAX hesaplama modelini yönlendirir. Bu kılavuz, envanter analitiği platformunun tamamını kapsar: veri modeli, ABC sınıflandırması, ciro analizi, yeniden sipariş noktası hesaplamaları ve talep tahmini görselleştirmeleri.
Önemli Çıkarımlar
- Envanter, satış ölçümlerinden farklı DAX kalıpları gerektiren bir anlık nokta (anlık görüntü) ölçüsüdür
- ABC analizi, öğeleri gelir katkısına göre sınıflandırır: A (en üstteki %80), B (sonraki %15), C (en alttaki %5)
- Envanter cirosu = SMM / Ortalama Envanter — sektöre göre önemli ölçüde değişiklik gösterir
- Yeniden Sipariş Noktası = (Ortalama Günlük Kullanım × Teslim Süresi) + Emniyet Stoku
- DAX RANKX işlevi, veri değiştikçe ABC sınıflandırmasını otomatik olarak güçlendirir
- Power BI'daki talep tahmini, DAX veya Azure ML entegrasyonu aracılığıyla doğrusal regresyon kullanır
- Yavaş hareket eden ve eski (SLOB) envanter tanımlama, taşıma maliyetinden önemli ölçüde tasarruf sağlar
- Power BI, veri hareketi olmadan ERP envanter tablolarına (Odoo, SAP, NetSuite) bağlanır
Envanter Analitiği için Veri Modeli
Temel Envanter Tabloları
Envanter_Anlık Görüntüsü (öğe başına gün/hafta başına bir satır — belirli bir zamandaki stok seviyeleri):
| Sütun | Açıklama |
|---|---|
| KOD0 | Stok sayımı tarihi |
| KOD0 | FK - Ürün/Ürün boyutu |
| KOD0 | FK'dan Depoya/Konuma |
| KOD0 | Fiziksel stok miktarı |
| KOD0 | Açık PO'lardaki miktar |
| KOD0 | Açık siparişlere taahhüt edilen miktar |
| KOD0 | QoH - Ayrılmış |
| KOD0 | Ortalama veya standart maliyet |
| KOD0 | Eldeki Miktar × BirimMaliyet |
Envanter_Hareketleri (hisse senedi işlemi başına bir satır):
| Sütun | Açıklama |
|---|---|
| KOD0 | İşlem Kimliği |
| KOD0 | FK'den Öğeye |
| KOD0 | FK'dan Konum'a |
| KOD0 | Hareket tarihi |
| KOD0 | Makbuz, Satış, Transfer, Ayarlama, İade |
| KOD0 | Taşınan miktar (pozitif = giren, negatif = çıkan) |
| KOD0 | Hareket anında birim başına maliyet |
Sales_Lines (talep analizi için satış siparişi satırı başına bir satır):
- KOD0, KOD1, KOD2, KOD3, KOD4, KOD5, KOD6, KOD7
Purchase_Orders (tedarik süresi ve satın alma analizi için):
- KOD0, KOD1, KOD2, KOD3, KOD4, KOD5, KOD6
Dim_Item (ürün boyutu):
ItemID,SKU,Name,Category,SubCategory,Supplier,LeadTimeDays,ReorderPoint,SafetyStock,UnitCost,ListPrice,IsActive
DAX ile Temel Envanter KPI'ları
Stok Seviyesi Ölçümleri
// Current Stock on Hand (point-in-time)
Stock on Hand =
CALCULATE(
SUM(Inventory_Snapshot[QuantityOnHand]),
Inventory_Snapshot[SnapshotDate] = MAX(Inventory_Snapshot[SnapshotDate])
)
// Stock Value (current)
Stock Value =
CALCULATE(
SUM(Inventory_Snapshot[StockValue]),
Inventory_Snapshot[SnapshotDate] = MAX(Inventory_Snapshot[SnapshotDate])
)
// Available to Promise (ATP)
Available to Promise =
CALCULATE(
SUM(Inventory_Snapshot[QuantityAvailable]),
Inventory_Snapshot[SnapshotDate] = MAX(Inventory_Snapshot[SnapshotDate])
)
// Stock on Order (incoming POs)
Stock on Order =
CALCULATE(
SUM(Inventory_Snapshot[QuantityOnOrder]),
Inventory_Snapshot[SnapshotDate] = MAX(Inventory_Snapshot[SnapshotDate])
)
// Projected Stock (current + on order - reserved)
Projected Stock = [Stock on Hand] + [Stock on Order] - [Stock Reserved]
Envanter Devri
// COGS in Period (for turnover denominator)
Total COGS =
SUMX(
FILTER(Inventory_Movements, Inventory_Movements[MovementType] = "Sale"),
Inventory_Movements[Quantity] * Inventory_Movements[UnitCost]
)
// Average Inventory Value (beginning + ending / 2)
Avg Inventory Value =
AVERAGEX(
VALUES(Date[Month]),
CALCULATE(
SUM(Inventory_Snapshot[StockValue]),
Inventory_Snapshot[SnapshotDate] = MAX(Inventory_Snapshot[SnapshotDate])
)
)
// Inventory Turnover Ratio
Inventory Turnover =
DIVIDE([Total COGS], [Avg Inventory Value], 0)
// Days Inventory Outstanding (DIO)
Days Inventory Outstanding =
DIVIDE(365, [Inventory Turnover], 0)
// Benchmark comparison (industry varies widely)
// Manufacturing: 6-12x | Retail: 4-6x | Electronics: 8-15x
Turnover vs Benchmark =
[Inventory Turnover] -
LOOKUPVALUE(
Industry_Benchmark[InventoryTurnover],
Industry_Benchmark[Category],
SELECTEDVALUE(Dim_Item[Category])
)
ABC Analizi
ABC analizi, envanter kalemlerini gelirlerine veya maliyet katkılarına göre sınıflandırır:
- A öğeleri: Gelirin/SMM'nin ilk %80'i — yüksek öncelik, sıkı kontrol
- B maddeleri: Sonraki %15 — orta düzeyde kontrol
- C öğeleri: Alt %5 — minimum gözetim
// Revenue contribution per item (last 12 months)
Item Revenue 12M =
CALCULATE(
SUM(Sales_Lines[Revenue]),
DATESINPERIOD(Date[Date], TODAY(), -12, MONTH)
)
// Cumulative revenue % (for ABC cutoff)
Cumulative Revenue % =
DIVIDE(
SUMX(
FILTER(
ALL(Dim_Item),
RANKX(ALL(Dim_Item), [Item Revenue 12M], , DESC) <=
RANKX(ALL(Dim_Item), [Item Revenue 12M], , DESC)
),
[Item Revenue 12M]
),
CALCULATE([Item Revenue 12M], ALL(Dim_Item)),
0
)
// ABC Classification (calculated column in Dim_Item, refreshed periodically)
ABC Class =
VAR CumPct = [Cumulative Revenue %]
RETURN
SWITCH(TRUE(),
CumPct <= 0.80, "A",
CumPct <= 0.95, "B",
"C"
)
// ABC Summary measure
A Items Count = CALCULATE(COUNTROWS(Dim_Item), Dim_Item[ABC Class] = "A")
A Items Revenue % = DIVIDE(
CALCULATE([Item Revenue 12M], Dim_Item[ABC Class] = "A"),
CALCULATE([Item Revenue 12M], ALL(Dim_Item)),
0
)
ABC-XYZ Matrisi
Talep değişkenliği için ABC'yi XYZ sınıflandırmasıyla genişletin:
- X: Düşük talep değişkenliği (CV < 0,5) — öngörülebilir, verimlilik planı
- Y: Orta değişkenlik (CV 0,5-1,0) — biraz belirsizlik
- Z: Yüksek değişkenlik (CV > 1,0) — öngörülemez, hizmet seviyesi için plan
// Coefficient of Variation for demand variability
Demand CV =
DIVIDE(
STDEV.P(Sales_Lines[Quantity]),
AVERAGE(Sales_Lines[Quantity]),
0
)
// XYZ Classification
XYZ Class =
SWITCH(TRUE(),
[Demand CV] < 0.5, "X",
[Demand CV] < 1.0, "Y",
"Z"
)
AX segmenti (yüksek gelir, öngörülebilir talep) en sıkı yeniden sipariş yönetimine tabidir. CZ segmenti (düşük gelirli, öngörülemeyen) ortadan kaldırılmaya veya sipariş üzerine üretilmeye adaydır.
Yeniden Sipariş Noktası ve Emniyet Stok Hesaplamaları
Yeniden Sıralama Noktası Formülü
Yeniden Sipariş Noktası = (Ortalama Günlük Kullanım × Teslim Süresi) + Güvenlik Stoku
// Average Daily Usage (last 90 days)
Avg Daily Usage =
DIVIDE(
CALCULATE(
SUM(Sales_Lines[Quantity]),
DATESINPERIOD(Date[Date], TODAY(), -90, DAY)
),
90,
0
)
// Reorder Point calculation
Calculated Reorder Point =
ROUND(
[Avg Daily Usage] * AVERAGE(Dim_Item[LeadTimeDays]) +
Dim_Item[SafetyStock],
0
)
// Below Reorder Point flag
Below Reorder Point =
IF([Stock on Hand] < [Calculated Reorder Point], "Reorder Required", "OK")
// Days of Supply remaining
Days of Supply =
DIVIDE([Stock on Hand], [Avg Daily Usage], 0)
// Stockout Risk Score (0-100)
Stockout Risk =
SWITCH(TRUE(),
[Days of Supply] < 7, 100, -- Critical
[Days of Supply] < 14, 75, -- High risk
[Days of Supply] < 30, 50, -- Medium risk
[Days of Supply] < 60, 25, -- Low risk
0 -- OK
)
Emniyet Stoku Hesaplaması
// Safety Stock using statistical method
// SS = Z-score × σ(demand) × √Lead Time
Safety Stock Calculated =
VAR ZScore = 1.645 -- 95% service level
VAR DemandStdDev = STDEV.P(Sales_Lines[Quantity]) -- per day
VAR LeadTime = AVERAGE(Dim_Item[LeadTimeDays])
RETURN ROUND(ZScore * DemandStdDev * SQRT(LeadTime), 0)
Yavaş Hareket Eden ve Eski (SLOB) Envanter
SLOB envanterinin belirlenmesi işletme sermayesi optimizasyonu için kritik öneme sahiptir:
// Days Since Last Sale
Days Since Last Sale =
DATEDIFF(
CALCULATE(
MAX(Sales_Lines[OrderDate]),
ALL(Date)
),
TODAY(),
DAY
)
// SLOB Classification
SLOB Class =
SWITCH(TRUE(),
[Days Since Last Sale] > 365, "Obsolete",
[Days Since Last Sale] > 180, "Slow Moving",
[Days Since Last Sale] > 90, "At Risk",
"Active"
)
// SLOB Inventory Value
SLOB Value =
CALCULATE(
[Stock Value],
Dim_Item[SLOB Class] IN {"Slow Moving", "Obsolete"}
)
// SLOB as % of total inventory
SLOB % =
DIVIDE([SLOB Value], [Stock Value], 0)
Talep Tahmini Görselleştirmesi
Power BI aşağıdakileri kullanarak talep tahminlerini görselleştirebilir:
Yerleşik Tahmin (Analiz Bölmesi)
Bir çizgi grafiğine sağ tıklayın → Analiz bölmesi → Tahmin:
- Tahmin süresi: 12 ay
- Güven aralığı: %95
- Mevsimsellik: Otomatik algılama
Bu, basit, sabit talep kalıpları için uygun olan Üstel Düzeltme (ETS) algoritmasını kullanır.
Özel DAX Doğrusal Tahmini
// Simple Linear Regression Forecast
Demand Forecast =
VAR LastPeriod = MAX(Date[MonthNum])
VAR ForecastPeriod = LastPeriod + 1 -- Next month
VAR N = COUNTROWS(VALUES(Date[Month]))
VAR SumX = SUMX(VALUES(Date[MonthNum]), Date[MonthNum])
VAR SumY = SUMX(VALUES(Date[Month]), [Monthly Sales Qty])
VAR SumXY = SUMX(VALUES(Date[Month]), Date[MonthNum] * [Monthly Sales Qty])
VAR SumX2 = SUMX(VALUES(Date[MonthNum]), Date[MonthNum]^2)
VAR Slope = DIVIDE(N*SumXY - SumX*SumY, N*SumX2 - SumX^2, 0)
VAR Intercept = DIVIDE(SumY - Slope*SumX, N, 0)
RETURN Intercept + Slope * ForecastPeriod
Azure ML Talep Tahmini
Gelişmiş talep tahmini için Azure Machine Learning'i entegre edin:
- Azure ML'deki geçmiş talep verileri üzerinde bir Prophet veya ARIMA modeli eğitin
- Azure ML web hizmeti olarak dağıtın
- AI Insights entegrasyonunu kullanarak Power BI veri akışlarından çağrı yapın
- Öğe boyutunda bir sütun olarak yüzey tahmin değerleri
Envanter Kontrol Paneli Mimarisi
Sayfa 1: Yönetici Envanter Özeti
- Toplam Stok Değeri (Aylık değişimli KPI kartı)
- Envanter Devri (gösterge ve sektör karşılaştırması)
- Bekleyen Gün Envanteri (trendli KPI)
- Stokta Olmayan Ürün Sayısı (uyarı kartı, >0 ise kırmızı)
- SLOB Değeri (Toplamın %'si ile KPI)
- Kategoriye Göre Stok Değeri (ağaç haritası)
- Yeniden Sipariş Uyarıları (tablo: ürün, QoH, yeniden sipariş noktası, tedarik günleri)
Sayfa 2: ABC Analizi
- Pareto grafiği (gelire göre sıralanmış öğeler, kümülatif yüzde)
- ABC dağıtımı (halka grafiği: sınıfa göre sayım ve değer)
- ABC-XYZ matrisi (dağılım grafiği: X'te gelir, Y'de CV, kabarcık boyutu = hisse senedi değeri)
- En iyi A kalemleri tablosu (kalem, gelir, ciro, stok değeri, marj)
Sayfa 3: Stok Takibi
- Stok düzeyinde ısı haritası (konum × kategori)
- Yeniden sipariş noktası öğelerinin altında (stok riski renginin bulunduğu tablo)
- Gelen PO zaman çizelgesi (Gantt veya çubuk grafik)
- Stok yaş analizi (çubuk grafik: 0-30, 30-60, 60-90, 90+ gün)
Sayfa 4: Talep ve Tahmin
- Gerçek talep ve tahmin (tahmini gölgeli çizgi grafik)
- Kategoriye göre talep değişkenliği (kutu grafiği veya hata çubuklu çubuk)
- Mevsimsel talep modelleri (ısı haritası: ay × haftanın günü)
- İlk 20 hızlı hareket eden (haftalık satılan adetlere göre çubuk grafik)
Sıkça Sorulan Sorular
Envanter verileri için Power BI'ı bir ERP'ye bağlamanın en iyi yolu nedir?
Bağlantı yöntemi ERP'nize bağlıdır. Odoo için okuma kopyası üzerinden doğrudan PostgreSQL'e bağlanın. SAP için envanter CDS görünümleriyle SAP HANA bağlayıcısını kullanın. NetSuite için SuiteAnalytics Connect ODBC'yi kullanın. Dynamics 365 Business Central için Business Central bağlayıcısını kullanın. Tüm ERP bağlantıları için, envanter tablolarına salt okunur erişime sahip özel bir analitik kullanıcı hesabı kullanın ve ERP yükünü en aza indirmek için yenilemeleri yoğun olmayan saatlerde planlayın.
Power BI'da çoklu depo envanterini nasıl yönetirim?
Depo adı, şehir, ülke ve tür (dağıtım merkezi, perakende mağaza vb.) gibi özellikleri içeren veri modelinize bir Konum boyutu ekleyin. Tüm envanter anlık görüntüsü satırları bir LocationID içerir. Tüm konumlarda toplanan ölçümler oluşturun veya dilimleyici aracılığıyla seçilen konuma göre filtreleyin. Depolar arası transfer analizi için, MovementType = "Transfer" özelliğine sahip Inventory_Movements tablosu, konumlar arasında hareket eden stokları izler.
İyi bir stok devir hızı oranı nedir?
Büyük ölçüde endüstriye bağlıdır. Elektronik: 8-15x (yüksek hız, düşük marjlar). Bakkal/FMCG: 15-30x. Otomotiv parçaları: 3-6x. Moda perakende satış: 4-8x (sezonluk). Endüstriyel üretim: 3-8x. Ciro oranınızı genel bir hedef yerine sektör ölçütünüzle karşılaştırın. "İdeal" bir oran, hizmet seviyesini (stokların önlenmesi) taşıma maliyetine (fazlalığın önlenmesi) karşı dengeler.
Power BI stoklarımın ne zaman tükeneceğini tahmin edebilir mi?
Evet — "Tedarik Günleri" ölçümü, ortalama günlük satış oranında mevcut stokun kaç günü kapsadığını hesaplar. Bu, teslim süresi + emniyet stoğu tamponunuzun altına düştüğünde Power BI, öğeyi riskli olarak işaretleyebilir ve yeniden sipariş uyarı tablosunda gösterebilir. Tahmine dayalı stoklama için, gelecekteki satışları tahmin etmek amacıyla Azure ML talep tahminini entegre edin ve stok tükenmesi riskinin, geçmiş talep yerine tahmin edilen talebe göre ne zaman kritik hale geldiğini hesaplayın.
Power BI'da envanter yaşlanmasını nasıl görselleştirmeliyim?
Her yaş grubundaki (0-30 gün, 31-60, 61-90, 91-180, 180+ gün) hisse senedi değerinin yüzdesini gösteren yığılmış bir çubuk grafik kullanın. Yaşlandırma, en eski partinin teslim alındığı tarihten itibaren hesaplanır. Yaşlanma profilinizin iyileşip iyileşmediğini (daha yeni stoklara doğru ilerleme) veya kötüleşme (eski envanter biriktirme) durumunu görmek için bu eğilimi zaman içinde takip edin. SLOB risk göstergesi olarak 90+ günlük hisse senetlerini kırmızıyla vurgulayın.
Sonraki Adımlar
Power BI'daki etkili envanter analitiği, tedarik zinciri ve operasyon liderliği açısından en önemli üç ölçüm olan taşıma maliyetlerini azaltır, stok tükenmesini önler ve nakit akışını iyileştirir. Veri modelini doğru şekilde kullanmak (anlık görüntüye dayalı stok seviyeleri, harekete dayalı akış analizi), diğer her şeyin üzerine inşa edildiği temeldir.
ECOSIRE'ın Power BI ekibi, ERP sistemlerinize (Odoo, SAP, NetSuite, Dynamics 365 ve diğerleri) bağlı tedarik zinciri ve envanter kontrol panelleri oluşturur. ABC analizini, yeniden sipariş uyarı sistemlerini ve talep tahmini görselleştirmesini üretime hazır gösterge tabloları olarak uyguluyoruz.
Tedarik zinciri analizi uygulaması için Power BI kontrol paneli geliştirme hizmetlerimizi keşfedin veya envanter veri kaynaklarınızı ve analiz gereksinimlerinizi görüşmek için ekibimizle iletişime geçin.
Yazan
ECOSIRE Research and Development Team
ECOSIRE'da kurumsal düzeyde dijital ürünler geliştiriyor. Odoo entegrasyonları, e-ticaret otomasyonu ve yapay zeka destekli iş çözümleri hakkında içgörüler paylaşıyor.
İlgili Makaleler
Building Financial Dashboards with Power BI
Step-by-step guide to building financial dashboards in Power BI covering data connections to accounting systems, DAX measures for KPIs, P&L visualisations, and best practices.
Blockchain for Supply Chain Transparency: Beyond the Hype
A grounded analysis of blockchain in supply chains—what actually works, real-world deployments, traceability use cases, and how to evaluate blockchain for your business.
Case Study: Power BI Analytics for Multi-Location Retail
How a 14-location retail chain unified their reporting in Power BI connected to Odoo, replacing 40 spreadsheets with one dashboard and cutting reporting time by 78%.
Supply Chain & Procurement serisinden daha fazlası
Blockchain for Supply Chain Transparency: Beyond the Hype
A grounded analysis of blockchain in supply chains—what actually works, real-world deployments, traceability use cases, and how to evaluate blockchain for your business.
ERP for Agriculture: Farm Management and Supply Chain
Complete guide to ERP for agriculture — farm management, crop tracking, supply chain integration, compliance reporting, and precision agriculture for 2026.
ERP for Government: Procurement, Finance, and Citizen Services
How ERP systems modernize government operations by automating procurement, fund accounting, grants management, and citizen service delivery with full auditability.
ERP for Logistics: 3PL and 4PL Operations Management
Complete guide to ERP for logistics providers — 3PL and 4PL operations management, WMS integration, customer billing, and supply chain visibility for 2026.
Warehouse Automation with ERP: Efficiency and ROI Analysis
Quantify warehouse automation ROI with ERP integration — labor savings, throughput improvement, inventory accuracy, and technology investment frameworks for 2026.
Odoo Inventory and Warehouse Management Deep Dive
Complete guide to Odoo 19 Inventory: multi-warehouse setup, lot tracking, reordering rules, putaway strategies, and warehouse operations.