Ürün ağacı; bir ürünün tüm bileşenlerinin üst ürün/bileşen ilişkisinin, mühendislik ve süreç tasarımlarından türetilen kullanım miktarlarının kaydıdır.
Aşağıdaki şekilde bir ürüne ait ürün ağacı gösterilmiştir.
A birimi dışındaki tüm birimler birer bileşendir, çünkü hepsi bir üst ürün yapımında kullanılmaktadır. Şekilde parantez içinde her üst ürün/bileşen ilişkisi için kullanılan miktar gösterilmektedir.
Bir malzeme, bir ürün ağacının çeşitli yerlerinde yer alabilir ya da farklı ürünlerin ürün ağacında bulunabilir. Örneğin şekilde yer alan koltuk alt montajı aynı ürün ailesinden olan arkalıklı sandalyenin ve mutfak sandalyesinin ortak bileşeni olabilir.
Bir ürünün hangi alt parçalardan ve ne kadar kullanılarak üretileceği; üretim planlaması, envanter yönetimi ve satın alma için büyük öneme sahiptir.
Bu kapsamda; Adventureworks 2017 veritabanından yararlanarak Power BI ile ürün ağacının nasıl raporlanacağını bir örnek ile açıklamaya çalışacağım.
Bu örnek için; Adventureworks 2017 veritabanında sırasıyla, ürün bilgileri ve ürün ağacı bilgilerinin yer aldığı “Production.Product” ve “Production.BillOfMaterials” tablolarından yararlanacağız. Ancak hazırlayacağımız rapor için “Production.BillOfMaterials” tablosundaki ürün ağacı bilgilerinin satır düzeyinde hiyerarşik yapıya dönüştürmemiz gerekli. Böylece her bir ürünü oluşturan alt bileşenleri bir ağaç yapısında raporlamamız mümkün olacak.
Bu işlem için Power BI’a aktardığımız “Production.BillOfMaterials” tablosundaki verileri Power Query ile istediğimiz yapıya dönüştürmek için Imke Feldmann tarafından hazırlanan fonksiyondan yararlandım. (https://www.thebiccountant.com/2017/05/08/dynamic-bill-of-material-bom-solution-in-excel-and-powerbi/)
Fonksiyonu kullanarak “Invoked Function” adıyla yeni bir tablo oluşturuyoruz. (Fonksiyonun kullanımı hakkında bilgi web sayfasında mevcuttur) Oluşturduğumuz tabloya son olarak calculated column (örneğimiz için QTY sütunu) ile her aşamada ilgili üründen ihtiyaç duyulan kullanım miktarını getiriyoruz. Bu tablo ile “Production.BillOfMaterials” tablosundaki veriler aşağıdaki yapıya dönüşmüş oldu.
Daha sonra tablolar arasındaki ilişkileri kurarak tasarıma geçebiliriz.
Tablodan da görüldüğü gibi hem boş verilerin bulunması hem de her düzeyde kendinden önceki alt düzeylerde kullanılan miktarların toplamının gösterilmesi nedeniyle hedeflediğimiz rapor gösterimi için düzenleme yapmamız gerekli.
Yapmamız gerekenler;
- Boş verilerin ürün ağacından çıkartılması.
- Her düzeyde kendinden önceki alt düzeylerde kullanılan miktarların toplamı yerine aşağıdaki gibi bir sonraki düzey için ilgili bileşenden ne kadara ihtiyaç duyduğumuzu göstermek.
Öncelikle boş verilerin gösterilmemesi ile başlayalım. Burada her düzeydeki boş değerleri kontrol etmemiz gerekli. Bunun için Dax’ın ISINSCOPE ve ISBLANK işlevlerinden yararlanacağız.
Böylece boş olan değerlerin gösterimini engellemiş olduk.
Diğer sorunu çözmeye başlayabiliriz. Bunun için her aşamadaki nihai ürünü bulup buna ait kullanım miktarını çekmemiz gerekli. Yani kendisinden sonraki aşamaları boş olan malzemeleri tespit etmeliyiz. Kontrol 1 formülüne bu koşulu değişken olarak eklersek;
Sonuç olarak istediğimiz measure’a ulaştık. Ürün ağacını tablo olarak gösterebiliriz ancak benim tercihim Power BI’a yakın zamanda gelen “Decomposition Tree” görselini kullanmak. Böylelikle hem göze hitap etmiş hem de ürün ağacını daha anlaşılır hale getirmiş oluruz.
Ürün ağacı ile başka raporlar da hazırlamak mümkün. Örneğin her bir aşamanın ve nihai ürünün maliyetinin gösterilmesi veya her bir bileşenin hangi üründe ne kadar kullanıldığını da raporlayabiliriz.