İş Programında Doğru Takvim Kullanımın Önemi

Bu yazımızda iş programı yapımızda pek dikkat edilmeyen bir konudan bahsetmek istiyorum, inşaat aktivitelerinde işin karakteristiğine göre mevsimsel olarak verim düşmeleri yaşanmak. Mesela kil serilmesi gibi yağmur yağmayan bir ortamda yapılması gereken bir aktivitenin verimi yaz ve sonbahar aylarında çok değişkenlik gösterebilmektedir, aynı şekilde Ramazan ayı boyunca tüm şantiyenin veriminin yüzde 25 düşeceğini tahmin etmek zor değildir. Bu tip durumlarda yapılan yanlış uygulamalardan en önemlisi bu periyottaki aktivitelerin sürelerini manuel olarak arttırmak, yani iş programında yazın 10 günde biten bir kil serimi aktivitesini sonbaharda 20 gün olarak göstermektir. Bu yapılan yanlış uygulamanın sonucu olarak, iş programını dinamik bir belde olduğundan, ileride oluşacak gecikmeler ve hızlanmalar ile bu aktivitelerin yekleri sabit kalamayacaktır. Bu şekilde hazırlanmış bir iş programı hem projenin bitiş tarihini yanlış gösterirken hem de süre uzatma analizlerinde hatalı sonuçlar vermektedir.  Burada yapılması gereken doğru hamle ise düzgün bir takvim ile aktivitelerin yüzde yüz performans sürelerinin yazılmasıdır.

Bu yazımızda örnek olarak öneki yazılarımızda kullandığımız bir programı baz alacağız,

İlgili yazıya

http://planlamadanismanlik.com/impacted-as-planned-iap-analizi-neden-ise-yaramiyor/

Linkinden ulaşabilirsiniz,

Bu iş programa 3 adet yeni aktivite koyuyoruz, 14, 15 16 isimli aktivitelerin kil serme aktivitesi olduğunu farz ediyoruz. Aldığımız verilere göre kil sermesi için eylül ve ekim ayında yüzde 25, kasım ayında yüzde 50; aralık ayında yüzde 75 verim azalması varken, ocak şubat ve mart aylarında çalışmak mümkün değil, nisan ayında ise ilk 15 gün yüzde 50 performans ile çalışabiliyorken geri kalan tüm zamanlarda tam performans çalışılabiliyor, bu aşamada 2 adet iş programı hazırlayacağız, ilk örnek bu durumu düzgün takvim kullanarak aşarken ikinci örnek süreleri manipüle ederek aşmaya çalışacak.

Takvim yaratma

İlk iş programımız için yeni bir takvim yaratıyoruz, primavera saat bazlı çalışan bir programdır bu yüzden aslında 10 günlük bir aktivite tanımladığımızda iş programı bu aktivitenin bağlı olduğu takvimin ön tanımlı günlük çalışma saatine bakarak aktivitenin toplam kaç saatlik bir aktivite olduğunu hesaplar ve bundan sonra tüm hesaplamalarını buna göre yapar. Mesela 10 günlük günde 8 saat çalışma saati olan bir takvime bağlı aktivite aslında primavera tarafından 80 saatlik bir aktivite olarak tanımlanır, bu aktivitenin takvimini günde 10 saat çalışılan bir takvimle değiştirirseniz toplam 80 saati sabit tutacağı için aktivitenin toplam süresi 8 güne düşecektir, aynı şekilde toplam 8 saat çalışma tanımlı bir takvimde bazı günlerin çalışma saatini 4 saate düşürürseniz normal iş gününde 1 günde biten aktivite 2 günde bitecektir.  Yukarıda belirttiğimiz takvime uygun olarak gerekli zaman dilimindeki çalışma saatlerini yeni takvimimizde düşürüyoruz.

 

Mesela yukarıdaki fotoğrafta da görebileceğiniz üzere kasım ayındaki çalışılan günlerdeki çalışma saatini 4 saate indirdik ve bunu proje süresindeki tüm kasım aylarına uyguladık. Kil aktivitelerinin takvimini yeni yarattığımız aktivitelere atadık ve hepsini zamanını 45 gün olarak belirledik,

Böylece yukarıda gördüğümüz baseline ı oluşturmuş olduk,

İkinci senaryomuzda ise böyle bir takvim tanımlamadan Primavera’nın standart takvimini kullanarak iş programını oluşturduk,

 

İki projeyi de düzgün ve hatalı adlandırmalarıyla alt alta koyuyorum, gördüğünüz gibi 2 projede aynı tarihlere sahip,

1 Şubat 2019 tarihi itibariyle 2 projeyi de güncellediğimizde,

 

Gördüğünüz gibi aynı verilere sahip 2 güncelleme için proje bitiş tarihlerinde 16 günlük bir sapma meydana geldi, tabii ki aralık ayında verim düşeceği için ilk proje bitiş tarihi daha doğru,

Hikayemizi devam ettirdiğimizde 1 Şubat itibari ile şantiyeni 2 ay durdurulduğunu farz edelim ve her iki iş programı içinde bunu bir impact olarak kabul edelim ve bir gecikme analizi yapalım.

Gördüğünüz gibi her iki iş programına da 60 günlük 2 adet impact koyuyoruz ilk programda kil aktivitesi kışın yapılamayacağı için iş programı gelecek senenin baharına ertelenirken diğer projede kış ortasında bitmesi gerektiği gözüküyor, ilk program için yapılan analiz 185 gün süre uzatımı gösterirken ikinci programda tahmin edebileceğiniz gibi 60 günde kalıyor.

Peki böyle bir hatalı iş programınız varsa ne yapmalısınız; eğer işveren kabul ederse, ki etmeyebilir, bu aşamada yapmanız gereken analiz disruption(bozulma) denen analiz yani bir şekilde verim düştüğü için 41 günde yapacağınız işi çok daha uzun sürede yapacağınızı ispatlayıp bunu başka bir gecikme olarak gösterip 2. Bir gecikme analizi yapmanız gerekiyor, disruption analizi ile ilgili detaylı bir yazıyı ileriki zamanlarda yazmayı planlıyorum.

 

SQLite veri tabanı için ODBC bağlantısı yapılması

Yıllardır tam bir MS SQL fan boyu olarak standalone bile olsa her zaman MS SQL kullanırdım, bu seçimimdeki temel etkenler bağlantı kolaylığı, SQL Management Studio programı ile bulmak istediğin datanın kolayca bulunabilmesi ve az buçuk MS SQL bilgimle bazı durumlara müdahale edebilme ihtimaliydi. Olayın server kısmında ise muhtemelen IT elemanlarının MS SQL’e daha aşina olmasından dolayı her zaman MS SQL ile daha iyi performans almamdı. Son bir yıldır ise standalone olarak SQLite kullanmaya başladım ve gayet memnun kaldığımı söyleyebilirim. MS SQL gibi içini açıp kurcalayabileceğim bir araçtansa hızlı çalışan içinde ne olup bittiğini bilmediğim fakat bir sıkıntıda yedek dosyaya bağlanabileceğim bir veri tabanı hoşuma gitmeye başladı. (Sanırım yaşlanıyorum ve cep telefonunda Androidden Apple geçmeyi düşünmeye başladım). SQLite ile ilgili sıkıntılarım ise excele ODBC ile bağlantı kurmak ve SQL Management Studio programına link yaratabilmekti.
Bu yazıda bu sorunları nasıl bertaraf edebileceğimiz anlatmak istiyorum, bu sorunları çözmek için öncelikle SQLite için bir driver indirmeliyiz fakat şunu söylemeliyim ki internette bu konuyla ilgili nerdeyse hiçbir bilgi yok araştırmam sonucunda Oracle’ın SQLite için bir ODBC driver çözümü sunmadığını farkettim, bulabildiğim tek driver anladığım kadarıyla amatör bir grup tarafından geliştirmiş olan bir driver idi. Bu noktada şu uyarıyı yapmam gerekiyor eğer bu driverı indirirseniz veri tabanınızın başına bir şey gelirse muhatap olarak kimseyi bulamayacaksınız. Öncelikle
http://www.ch-werner.de/SQLiteodbc/
Adresinden kendi sisteminize uygun kurulum dosyasını indiriyorsunuz, ben 64 bit olanını indirdim.

 

Dosyayı indirdikten sonra ODBC data source administrator (64 bit) programını çalıştırıyorsunuz           System DSN sekmesini seçip SQLite3 veri kaynağını seçip configure tuşuna basıyoruz,

 

Database name alanında browse düğmesine basıp SQLite veri tabanımız bilgisayarda nerede bulunuyorsa onu seçiyoruz. Artık OBSC drive’ını kurmuş bulunmaktayız.


Excelden bu veri tabanına ulaşmak için yanda görülen seçeneği seçip SQLite3 datasource bağlantısını seçiyoruz.

 

 

 

 

SQL management linkini kurmak içinde
New linked server seçeneğini seçip fotoğraftaki gibi dolduruyoruz, burada öneli olan provider ve provider string alanlarının doğru doldurulması sonuç olarak veri tabanımızı SQL management studio ya bağlamış olduk.

 

 

 


artık bu bağlantı sayesinde veritabanı ile ilgili sorgularımızı burdan yapabiliriz.

Alternatif bir SPI analizi

Proje planlaması ile ilgili en sıkıntılı konulardan birisi teorideki performans hesaplama kriterlerinin pratikte çok kullanılamıyor olması, proje kontrolü denince ilk akla gelen yaklaşım kazanılmış değer analizleridir fakat daha önceki deneyimlerimden hem SPI hem de CPI hesaplamalarının gerçek manada bir referans olamayacağını düşünüyorum bu yüzden SPI için alternatif bir çalışma göstermek istiyorum.

Öncelikle SPI ile alakalı en sıkıntılı durum genelde çok kısıtlı zamanda yapıldığı için baseline gerçek uygulamayı değerlendirebileceğimiz bir doküman olamıyor ,FIDIC te detaylı iş programının 28. Günde sunulmalıdır yazdığı için birçok müşavir daha doğru düzgün dizaynı olmayan bir projenin baseline’ı bu düzgün oluşturulamamış iş programı olarak kabul ediyor, bu durumda da normalde 15 günde yapılacak bir aktiviteyi  5 günde yapamadığı için kişilerin performansının düşük olduğunu söylüyoruz .Bu sıkıntının kesin bir çözüm yok fakat Amerika Dışişleri Bakanlığının projelerindeki iş programı sunum yönteminin çok daha mantıklı olduğunu düşünüyorum, bu kontratlarda 2 adet iş programı sunuluyor bunlardan ilki IPES( initial Project Execution Schedule) ikincisi ise BPES (Baseline Project Execution Schedule) olarak anılıyor ,ilk program kontrat imzasından 28 gün sonra sunulan ve sadece dizayn ve mobilizasyon aktivitelerinin detaylı olarak ele alındığı , geri kalan projenin ise üstün körü gösterildiği bir programken ikinci program ise  dizaynın büyük ölçüde tamamlanmasında sonra verilen kısıtlı NTP(Notice to proceed) sonrası sunulan dizayn bir çok belirsizliğin giderilmesinden dolayı çok daha detaylı olarak hazırlanabilen ve gerçek baseline olarak kabul edilen iş programı  oluyor ve bu program bir performans değerlendirmesi için nispeten daha iyi bir araç oluyor.

ikinci olarak SPI genelde sadece proje bazlı olarak hesaplanıyor, bu da hiçbir proje paydasını(çalışan yada müteahhit) motive edebilecek bir hesaplama değil , bence asıl yapılması gereken her proje paydaşının ayrı bir performans indeksinin hesaplanması fakat bunu da tek bir baseline üzerinden yaptığımızda bütün işlerini 50 gün geciktirmiş fakat bitirmiş bir müteahhit yada sorumlunun SPI’ı 1 iken bu müteahhit yüzünden kendi işine 50 gün geç başlamış , 100 günlük işinin yarısını insan üstün bir çabayla 30 günde bitiren bir müteahhit 0.8 gibi bir SPI a sahip olabiliyor .Spı ile ilgili bir diğer sıkıntıda bir müteahhit kritik olmayan aktiviteleri bitrerek projeyi ciddi bir şekilde geciktirmesine rağmen 1 in üstünde bir SPI a sahip olabiliyor.

Bu sıkıntıları bertaraf etmek için benim aklımdan geçen modifiyeli Spı hesaplaması

A: Gerçekleşmelerden gelen kazanılmış değer

B: hesaplanan paydaşın kendi dışındaki etkilerin yansıtıldığı bir baseline dan hesaplanan planlanan değer

Ve bir katsayı olarak

C: hesaplanan paydaşın kendi dışındaki etkilerin yansıtıldığı baseline tamamlanma süresi

D: Hesaplanan paydaşın etkisiyle oluşan proje tamamlanma süresi

(A/B) * (C/D)

Burada 1 adet güncellenen program ve her paydaşın için 2 tane program yaratmamız gerekiyor,1 tanesi paydaşın kendi dışındaki etkilerin yansıtıldığı diğeri de paydaşın etkisiyle oluşan program

Bloğu buraya kadar okuyan herkesin şu anda kafası iyice karışmaya  başladı o yüzden hemen uygulamaya geçiyorum. Adımları olabilince ayrıntılı anlatmaya çalışayım gene de bazı okurlara karmaşık gelebilir bu yüzden yazının sonunda paylaşacağım linkten dosyaları indirebilirsiniz , yazıyı okurken dosyaları da incelerseniz daha kolay anlayabilirsiniz.

Elimizde 6 kişilik bir ekip olsun

furkan proje müdürü
ahmet satin alma şefi
mehmet sözleşme müdürü
metin şantiye şefi
ali saha mühendisi
veli saha mühendisi

Bu altı kişilik ekip için OBS tanımlamak yerine daha kolay olduğu için bir “org” diye bir aktivite kodu tanımlıyorum.

2 binanın ve 1 yol yapımının olduğu basit bir iş programı uyduruyoruz

Şu anda projenin 2 ayını bitirdiğimizi varsayıyoruz, şöyle bir senaryo ile karşı karşıyayız;

Mehmet sözleşmesini 1 gün gecikme ile bitirmiş,

Ahmet nakliyeciyi bağlayıp 5 günlük işi 3 güne indirmiş (şirket Ahmet gibiler sayesinde ayakta kalıyor)

Furkan baseline da olduğu gibi 5 günde işi yapmış,

İşini takip etmeyen bir arkadaş olduğunu düşündüğüm veli ise 10 günde bitirmesi gereken temel kazısını 20 günde bitirmiş ve daha sonra tutuştuğu için de 9 günde kaba işlerin yüzde 70 ini bitirmiş,

Bence şirketin en başarılı elemanı Ali ise veli yüzünden işine geç başlamış ama süper bir yetenek 0olduğu için 10 günlük temel kazısını 6 günde bitirmiş ve kaba işerin yüzde 30 unu bitirmiş (Ali planlama güncellemelerini yapan mühendisle kanka olabilir bu veriler bana çok gerçekçi gelmedi).

Projenin son durumu

Seklinde oldu, şimdi tüm elemanları performansları değerlendirmek için her elemana ait 2 adet iş programı oluşturuyoruz

Furkan proje müdürü olduğundan onun projesini ana baseline ve güncellenen proje olarak düşünebiliriz çünkü projenin genel performansından zaten Furkan sorumlu.

Mehmet için “mehmet dış etkiler” ve “mehmet kendi etkileri” isimli 2 proje oluşturuyoruz. Mehmet’in sadece tek aktivitesi olduğu ve buda başlangıç aktivitesi olduğu için herhangi bir dış mihrakın Mehmet’in performansını etkilemesi mümkün değil o yüzden Mehmet’in “mehmet dış etkiler” projesi baseline ile aynı olacak

“mehmet dış etkiler” programının asıl amacı ise Mehmet’in yaptığı 1 günlük gecikmenin normalde proje bitişini nasıl etkilediğini Mehmet’in suratına vurmak. Eğer bu bir gecikme analizi çalışması olsaydı bu işlemi 1 günlük gecikme diye bir aktivite oluşturup projeye ekleyerek yapabilirdik fakat bu işlemleri yapacak insanın işini kolaylaştırmak için sadece aktivite süresini arttırarak bu etkiyi gösterebiliyoruz.

Gördügünüz gibi mehmetin hatası tüm projeyi 1 gün uzattı , klasik SPI hesaplamasında mehmet projeyi 1 günde uzatsa 10 günde uazatsa aktivitesi bittiği için SPI I 1 olarak hesaplanacaktı benim alternatif hesaplamamda ise mehmetin yaptığı bu hatayı ona ödeteceğiz , burnundan fitil fitil getireceğiz.

Mehmet için yaptığımız işlemin aynısını ahmet içinde yaporuz , bu kez mehmet hametin işini 1 gün geçiktirdiği için “ahmet dış etkiler” programını düzenlememiz gerekiyor.

Gördüğünüz gibi Ahmet’in planlanan günleri bir gün ileri atılmış oldu

Ahmet’in kendi etkileri programında ise Ahmet’in aktivitesinin süresini azaltarak herkes işini düzgün yapsaydı iş programının nasıl 2 gün erken bitebileceğini görüyoruz.

Metine geldiğimizde ise farklı bir durumla karşı karşıyayız metinin programındaki aktiviteler sadece metinin değil Ali ve velinin de aktiviteleri olmalı çünkü bu ikisinin başarısı veya başarısızlığı metininde performans indeksini etkilemeli.

Metin dış etkiler programında inşaat ekibini etkileyen tek aktivite ekskavatör satın alınmasının 1 gün önce bitmesi olduğu için bir tek bu aktiviteyi 1 gün önce bitirdik ve inşaat ekibi tüm işleri düzgün yapsaydı projenin bir gün önce biteceğini görüyoruz.

Metinin kendi etkileri programına baktığımızda alinin müthiş performansı sayesinde projeyi zamanında bitirebilme ihtimali doğmuşken aslında metin işe 1 gün önce başladığı için aslında 1 günlük bir performans kaybı mevcut buda bizim hesaplamamızı etkileyecek.

Aynı işlemleri veli

Ve Ali için yapıyoruz

Şimdi elimizde 12 adet iş programı var ve raporlamanın zor kısmını bitirmiş durumdayız çünkü bundan sonraki kısım her ay hazırladığımız şablon sayesinde kendiliğinden oluşacak.

Şablonu oluşturmaya performans simli bir tablo oluşturarak başlıyoruz

Bu tablodaki alanlarını açıklamadan önce bu hesaplamanın şöyle bir mantığı olacak, eğer bir çalışanın altında başka bir çalışan varsa bu çalışanın performansı kendi altında çalışanların performansından da etkilenecek yani bir ülke müdürünün performansını hesaplarken kendi bireysel olarak yaptığı aktivitelerin yanı sora altında çalışan proje müdürleri veya mühendislerinde performansını hesaba katacağız. Şimdi tablodaki alanları açıklarsak

İsim: performansını değerlendireceğimiz proje paydaşları, bu örnekte hepsi çalışan olmasına rağmen aynı değerlendirmeyi projede çalışan müteahhit firmalar içinde kullanabiliriz

Parent: çalışanın üstünde buluna -kişi

Org: primavera raporundan veri alabilmek için yaptığımız bir eşleştirme alanı

A, B, C, D: yazının ilk başında açıkladığımız değerler

r: C/D katsayısı bunu ayrı olarak hesaplamamızın nedeni bu değeri organizasyon hiyerarşine katmak istemiyoruz , diğer hesaplamalarda ise bu hiyerarşiyi kullanacağız

parent SPI: organizasyon hiyerarşisini göz önünde bulundurarak yaptığımız SPI hesaplaması

Performans: bu çalışmanın son ürünü

İkinci adım olarak dışarıdan alacağımız verileri ayarlamamız gerekiyor burada 2 çeşit verimiz olacak

  • Pmdb serverdan direkt olarak alacağımız veriler
  • Pmdb serverda hesaplanmayan “ time distributed” veriler

Pmdb serverden direkt alacağımız tablolar TASK, PROJECT, ACTVCODE, TASKACTV olacak,bu verileri almak için ODBC driver kurmamız gerekiyor , nasıl kuracağımız ile ilgiliyazıya

http://planlamadanismanlik.com/sqlite-veri-tabani-icin-odbc-baglantisi-yapilmasi/

bağlantısından ulaşabilirsiniz

Bu tabloları excele almak için fotoğraftaki opsiyonu seçip, üstte belirttiğim tabloları yüklüyoruz.

işimiz bittiğinde artık excelde 4 adet query (sorgu) oluşmuş durumda.

Task sorgusunu power query editör de açıyoruz

Sadece fotoğraftaki kolonları seçiyoruz, merge queries opsiyonunu seçip

Project id alanı üzerinden 2 query i birleştiriyoruz

Project tablosundan da sadece proj short name alanını seçip sadece “ana” projesini filtreliyoruz, daha sonra proje id alanlarından taskact tablosunu birleştirip

Aynı işlemi actcode tablosu içinde yapıp shortname alanını seçiyoruz ve elimizde artık güncellediğimiz iş programının istediğimiz detaylarına sahip bir sorguya sahibiz

SPI için kullanacağımız deger Cost olacak , bu konuda herkesin farklı bir yaklaşımı var ben daha kesin bir değer olduğu için Cost seçiyorum, burdada nbenim tercihim bu değeri güncellenen bir iş programından almaktansa aktivite id ve Cost değerlerinin olduğu sabit bir excel tablosunu tercih ediyorum . daha önce kullandğım programlarda yanlışlıkla başlatıp sonra başlamamış hale getirdiğim aktivitelerde çeşitli cost hesaplaması sıkıntıları yaşadım , o yüzden eğer excelde hesaplıyabiliyorsam o değeri excelin hesaplamasını tercih ediyotrum. Bu yüzden  COST isimli yeni bit tablo oluşturuyoruz.

Kırmızı dikdörtgen içindeki tuşu kullanarak tabloyu bir sorguya dönüştürüyoruz ve cost sorgusunu activity Id üzerinden task sorgusuna ekliyoruz

Bizim hedefimiz zamansal performansı ölçmek olduğu için kullanacağımız yüzde “ duration percent complete” olmalı , biraz araştırınca PMDB nin “ duration percent complete” i bir tabloda tutmadığını anlıyorum , bunu hesaplamak içinde “EARNED” adlı yeni hesaplanan alan yaratmalıyız ve formülümüz

=(1-([@[REMAIN_DRTN_HR_CNT]]/[@[TARGET_DRTN_HR_CNT]]))*[@[COST.Budgeted Total Cost]]

Olmalı şimdi elimizde tüm paydaşların güncel tabloda ne kadar kazanılmış değerinin olduğu bir tabloya ve toplamda 5 adet sorguya sahibiz

PMDB tablolarının kapsamlarını anlamak için

https://docs.oracle.com/cd/E17462_01/Reporting_Database/R2andAnalytics/OdsFieldMapList.html

Linkine bakabilirsiniz

Şimdi performans tablosuna geri dönüyoruz, Furkan tüm projenin sahibi olduğu için

Furkan için A alanının formülünü

=SUMIFS(TASK[EARNED],TASK[PROJECT.PROJ_SHORT_NAME],"=ana")

Olarak tanımlıyoruz

Diğerleri için ise

=SUMIFS(TASK[EARNED],TASK[PROJECT.PROJ_SHORT_NAME],"=ana",TASK[ACTVCODE.SHORT_NAME],"="&[@isim])

Formülünü kullanıyoruz böylece A değerlerini hesaplamış olduk

Artık 2. Kısım olan time distributed verileri oluşturmamız gerekiyor

İlk önce time distributed aktivite raporu oluşturmamız gerekiyor, burada dikkat etmemiz gereken şeyler

Burada ordinal dates i seçmemizin sebebi raporun date formatını Excel tanıyamayabiliyor bunun yerine sayısal bir değer kullanıyoruz

Raporu oluşturduktan sonra tüm projeleri birlikte açıp raporu çalıştırıyoruz, alttaki dosya oluştuktan sonra buradaki tüm bilgileri Excel dosyamıza kopyalıyoruz

Ve bu raporu tablo haline getiriyoruz

Tabloyu sorgu haline getiriyoruz, total cost kolonunu kapatıyoruz, tablonun mevcut hali datayı süzmemize olanak vermiyor o yüzden 127 günü gösteren kolonları seçip

Unpivot columns seçeneğini seçiyoruz

Böylece her elemanın her projede her gün için planlanan değerlerinin olduğu bir tablo elde ettik

Kolonun adını days passed olarak değiştirip data type’ını decimal numbera çeviriyoruz.

Bu tablodan istediğimiz veriyi alabilmemiz için rapor tarihi ile proje başlangıcı arasındaki farkı bulmamız gerekiyor o yüzden 3 tane hücre belirliyoruz

Bu veriyi çok kullanma ihtimalimiz olduğu için passed days hücresini “passed” olarak isimlendiriyoruz.

Furkan tüm projenin sahibi olduğu için

Furkan için B alanının formülünü

=SUMIFS(DIST[Value],DIST[Project ID],"=ana",DIST[days passed],"= "&passed)

Olarak tanımlıyoruz

Diğerleri için ise

=SUMIFS(DIST[Value],DIST[Project ID],"=ana-"&[@isim]&"-1",DIST[days passed],"= "&passed,DIST[org],[@org])

Formülünü kullanıyoruz

C ve D alanlarını hesaplamak için önce Project sorgusunu düzenlememiz gerekiyor, Sorgunun son hali

Oluyor, sorgunun ismini “PROJECTS” olarak değiştiriyoruz

C değerlerini hesaplarken Furkan için

=VLOOKUP("ana",PROJECTS,3,0)-VLOOKUP("ana",PROJECTS,2,0)

Diğerleri için

=VLOOKUP("ana-"&[@isim]&"-1",PROJECTS,3,0)-VLOOKUP("ana-"&[@isim]&"-1",PROJECTS,2,0)

Formüllerini kullanıyoruz

D değerlerini hesaplarken Furkan için

=VLOOKUP("ana-baseline",PROJECTS,3,0)-VLOOKUP("ana",PROJECTS,2,0)

Diğerleri için

=VLOOKUP("ana-"&[@isim]&"-2",PROJECTS,3,0)-VLOOKUP("ana-"&[@isim]&"-2",PROJECTS,2,0)

Formüllerini kullanıyoruz

r alanı içinde

=[@C]/[@D]

Formülünü kullanıyoruz

Şu an elimizde her isim için bir değerimiz fakat biz çalışanlar için hiyerarşi yapısın oluşturup üstteki çalışanın performansının alttaki çalışanların performansından etkilenmesini istiyoruz, ayrıca ülke müdürü gibi projelere direkt etkisi olmayan fakat birden fazla proje için değerlendirme yapmamız gereken çalışmalar için hiyerarşi yapısını kullanmaktan başka bir alternatifimiz yok. Hiyerarşi yapısını oluşturmamız için DAX (Data Analysis Expressions) denen hesaplamaları kullanmamız gerekiyor ve fonksiyonlar ise excelde ve query alanlarında kullanılamıyor bu yüzden PowerPivot özelliği ile veri modeli oluşturmalıyız

Add to data model seçeneğini tıklıyoruz ve karşımıza alttaki gibi bir ara yüz çıkıyor

Bu tabloya 4 adet hesaplanmış kolon ekliyoruz sırasıyla adları ve formülleri

Path =path([isim],[parent])

org1 =PATHITEM([path],1)

org2 =PATHITEM([path],2)

org3 =PATHITEM([path],3)

Diagram view i seçip org1 org2 org3 alanlarını seçip create hierarchy opsiyonunun seçiyoruz

Oluşturduğumuz hiyerarşinin son hali yandaki gibi oluyor

Ve bu veri modelinden yeni bir pivot table oluşturuyoruz

Burada da gördüğünüz gibi metinin tek başına planlanan değeri 3000 iken alt çalışanları da işe kattığımızda 57500 oluyor şimdi SPI hesaplamalarını yapmamız gerekiyor burada dikkat etmemiz gereken nokta bunu performans tablosunda yapsaydık üst grup alttaki SPI ları toplayacağı için 5 6 gibi abuk subuk rakamlar görecektik bunu engellemek için bir calculated fied oluşturmamız gerekiyor.

Böylece her çalışan için hiyerarşiye göre bir SPI hesaplaması yapılmış oldu.

Performans tablosuna geri dönüp  parent SPI kolonuna

=VLOOKUP([@isim],PIVOT!A:D,4,0)

Formülünü, performans kolonuna ise

=VLOOKUP([@isim],PIVOT!A:D,4,0)

Formülünü yazıyoruz

Artık elimizde tüm çalışanlar için performans değerimiz oluştu , burada r değerine bazı modifikasyonlar yapabiliriz , mesela 600 günlük bir projede 6 günlük gecikme yüzde 1 olarak hesaplanıyor eğer bunun daha önemli olduğunu düşünüyorsanız r değerini C/D nin karesi küpü gibi alternatifler yapabiliriz

Son olarak ta power view özelliği ile bu çalışanları görsel olarak sıralayan bir çalışma yapıyoruz

Power view özelliğini ilk defa kullanıyorum, bunu tercih etmemim sebebi internetten öğrendiğim kadarıyla power BI ve SharePoint’te bu raporları yayınlayabileceğimizin yazmasıydı, bu özelliği aktif etmek için 2 gün uğraştım internet forumlarından bulduğum yalan yanlış bilgiler ile regeditten Excel ayarlarını bile değiştirdim , en sonunda Microsoft’un sitesinde bu özelliğin hangi Office 365 planına ait olduğunu buldum benim Office 365 planım business plus olmasına ve normalde Office pro özelliklerine sahip olmasına rağmen bu özellik için minimum enterprise e3 planını kullanmam gerektiğini anladım , sonuç olarak internetteki yanlış bilgilerden regedit  agd olduğu için  bilgisayara format atmak ve bir üst Office 365 sürümüne geçmek zorunda kaldım bence Microsoft plan içeriklerini daha açıklayıcı yapmalı , ayrıca şunu da belirteyim okurlarını en fazla seven blogger benim , insanlara Bir şeyler öğreteceğim diye çektiğim çilenin haddi hesabı yok.

Bu yazının olması gerekenden 5 kat daha uzun olması ve benim de konuya daha hâkim olabilmem için power view ı daha etkin kullanma ve yayınlama ile ilgili başka bir yazı yayınlamayı planlıyorum.

Bu çalışmayla ilgili ilk söyleyebileceğim şey içinde birçok özelliğin nasıl kullanılacağını gösteren bir çalışma oldu , böyle bir hesaplamanın karışık bir projede daha zor olacağının farkındayım ama bu çalışmayı kendi yapmaya çalışan biri planlama raporu oluştururken karşısına çıkabilecek birçok problemi nasıl çözebileceğini görecektir. İkinci olarak eğer bir projede bu hesaplama yöntemi hayata geçirilirse çalışanların iş programına ilgisi oldukça artacak ve herkes iş programına hâkim olacaktır , buda iş programını bir prosedür dokümanından çıkartıp yaşayan bir dokümana çevirecektir.

Çalışma sonucu ortaya çıkan dosyaları

https://planlamadanismanlik.sharepoint.com/:f:/s/genel/EmBdy_-xMqhNpILo67XdvbUBjJrrFxrEpmBr6Sr3xGVwGw?e=Ik7e6T

linkinden indirebilirsiniz, 12 adet proje ve 1 adet raporu import etmekle uğraşmamanız için direkt olarak SQLite dosyasını koyuyorum, bağlanabilmeniz için

username: admin

password:asd123

Son olarak da buradan Microsoft Türkiye’ye seslenmek istiyorum , milyonlarca inşaat firması çalışanlarını birer yarış atı gibi sıralayabilecekleri bu tür opsiyonları fark edip Office sürümlerini yükselttiklerinde eminim ki beni de görürsünüz.

Primavera için metraj esaslı hızlı kaynak ataması yapılması

Primavera kullanıcısı planlama uzmanları için kaynak ataması her zaman sıkıntılı bir süreç olmuştur. MS Project’te kaynak ataması sözcük bazlı yapıldığı için excelde bazı manipülasyonlar yapıp direkt MS Project’e atmak bize zaman kazandırırken Primavera Database tabanlı olduğundan bu işlemi yapmak süre almaktadır.

Özellikle ihale süreci gibi kısıtlı zamanlarda elimizde tüm metrajlar ve analizler olmasına rağmen bunları iş programına aktarmak büyük sıkıntı olabiliyor. Eskiden bu zorluğu elimine etmek için MS access programını kullanırken yakın zamanda Excel programının Microsoft query özelliğinin daha basit bir çözüm olacağını fark ettim. Bununla ilgili bir örneği bloğuma koymanın birçok insanın işinin kolaylaştıracağını düşündüm.

Öncellikle hayali bir örnek proje oluşturmakla başlayacağım (yazı sonunda örnek XER dosyasının indirme bağlantısını paylaşacağım). Bu sistemin işleyebilmesi için her analiz için ayrı bir aktivite tanımlamanız gerekmekte, yani sizin metraj tablonuzda beton ve demir için ayrı analizler varsa sizin güçlendirilmiş beton gibi bir aktiviteniz olmamalı onun yerine demir döşemesi ve beton dökülmesi gibi 2 ayrı aktiviteniz olmalı. Toplam 4 aktiviteli bir iş dizisinin 8 defa tekrarlandığı bir iş programı yapalım, bunlar

  • Kazı yapılması
  • Koruma betonu dökümü
  • Temel çelik döşenmesi
  • Beton dökümü

olsun

Metrajlarımız ise 200 m3 , 20 m3 , 8 ton , 100 m3 olsun

Normalde ihale aşamasında düzgün fiyat belirmek için şirketler analizlerini yapmış olurlar, bu örnekte yapılmadığını farz ediyoruz , bu durumda yapılması gereken ya önceki tecrübelerden bir analiz oluşturmak yada bazı devlet kurumlarının analizlerini kullanmaktır. Benim önceki tecrübelerim kurumların analizlerini abartılı olduğu yönünde fakat elimizde hiçbir şey yoksa bunları kullanmak mantıklı olabiliyor.

İnternetten bulduğum analizler

https://www.birimfiyat.net/y.15.001-1a-makine-ile-yumusak-ve-sert-toprak-kazilmasi-serbest-kazi

https://www.birimfiyat.net/y.16.050-03-beton-santralinde-uretilen-veya-satin-alinan-ve-beton-pompasiyla-basilan-c-16-20-basinc-dayanim-sinifinda-beton-dokulmesi-beton-nakli-dahil

https://www.birimfiyat.net/23.002-14-50-kalin-betonarme-demiri-bukulup-dosenmesi

Bu aşamada dikkat etmemiz gereken şey bu çalışma bir kesin hesap olmadığı için her şeyi olabildiğince genel tanımlamalıyız.

İlk önce bir Excel tablosu açıyoruz ve ilk sekmeye analizler diye bir tablo ekliyoruz,

Elimizdeki analizlere göre tabloyu ekteki gibi dolduruyoruz. Böylece analizlerimiz ve kullanacağımız kaynaklarımız ortaya çıkmış oldu

İkinci adım olarak aktivitelere analizleri atamamız gerekiyor, örneğimiz küçük bir program olduğu için bunu excelde yapabiliriz fakat Primaverada hem filtreleme hem de WBS yapısını daha rahat kullandığımız için ben Primaverada yapmayı tercih ediyorum.

Primaverada 1 adet aktivite kodu 1 adette “user defined field” oluşturuyoruz, aktivite kodunun ismi analiz “user defined field” ismi ise metraj olarak tanımlıyoruz ve “unit” olarak number seçiyoruz ve her aktivite için bu alanları dolduruyoruz.

Artık elimizde her aktivitenin bir analizi ve metrajının olduğu bir iş programına sahibiz.

Bu bilgiyi Excel’e aktarmamamız gerekiyor, bu sürekli değişen bir alan olsaydı Excel’in “get data” özelliği ile veri tabanından almayı düşünebilirdik fakat bu tek seferlik oluşturulan bir data olduğu için direk olarak Excel’e kopyala yapıştır yapmayı tercih ediyorum , sonraki bir yazımda veri tabanından direkt olarak Excel’e veri aktarmayı anlatmayı planlıyorum

Excel’de 2. sekmede aktiviteler isimli bir tablo oluşturup, fotoğrafta görüldüğü gibi düzenliyoruz.

Daha sonra bu Excel dosyasını kapatıp yeni bir Excel dosyası açıyoruz,

Data>get data>from Other sources >from Microsoft query  seçeneğini seçiyoruz,

Buradan “Excel files” seçeneğini seçip gördüğümü tüm kolonları seçiyoruz

Next tuşuna bastığımızda tablolar arasında bir bağlantı olmadığı uyarısı veriyor bir sonraki adımda analiz ve analiz ismi kolonlarını birbirine bağlıyoruz

Bir sonraki adımda “query” ekranından çıkıyoruz ve önümüze altta gözüken  form geliyor

Tablomuzu nasıl eklememiz gerektiğini gösteren ekran geliyor burada ok tuşuna basıyoruz. Şimdi her kaynağın aktivite metrajı ve analiz biriminin olduğu bir tablo oluşturmuş durumdayız yenidir kolonda metraj ve adet kısımlarını çarpıyoruz

Elimizdeki tüm kaynakları Primaverada tanımlıyoruz

Elimizdeki Excel dosyasından sadece activity id resource id ve budgeted units kısımlarını import dosyasına kopyalayarak import dosyasını oluşturuyoruz ve import dosyasını primaveraya yüklüyoruz.

Bloğu okuyanların inceleyebilmesi için xer, analiz, query ve import dosyasını indirebileceğiniz bir linki aşağıda veriyorum

https://planlamadanismanlik.sharepoint.com/:f:/s/genel/EiPHjHIjum5KkHS_CSXyw9IBmt09xCOnvFiVQU2QtMKOFQ?e=Rv9bmI