Fakirler için cep telefonu üzerinden PowerApps uygulaması ile iş programı güncelleme

Bir süredir pahalı uygulamalara alternatif yöntemleri anlatmayı planladığım fakirler için serisinin ilk yazınını yazmaya karar verdim, ilk yazımız Microsoft’un PowerApps uygulaması ile cep telefonu üzerinden is programı aktivitelerinin yüzde tamamlanma, başlangıç günü, kalan sure ve beklenene bitiş bilgilerini güncelleme olacak. Proje yönetiminde gerçekleşme bilgilerini günlük olarak sahadan toplamamak can sıkıcı olabiliyor. Aktivitenin sorumlusunun gelip bilgisayar başına oturup güncelleme maili atmasındansa , ki bu bile çok ütopik , sahadayken cep telefonu ile o gün uğraştığı aktivitelerin güncellemesini yapmak çok daha kullanışlı olacaktır  , zaten Oracle firmasının da bunu başarabilmek için telefondan primavera programını güncelleyebileceğimiz uygulamaları var fakat bu uygulamalar  için bir sunucu kurmalı ve birçok kullanıcı lisansı almanız gerekiyor, bunun yerine Primavera’nın sadece stand alone kullanıldığı bir projede Microsoft PowerApps uygulaması ile bu güncellemeleri bir Excel dosyası üzerine alabiliyoruz.MS PowerApps Microsoft’un Office 365 business ve enterprise planları dahilinde sunduğu  cep telefonunda ve bilgisayarda kullanabileceğimiz uygulamaları hızlı bir şekilde oluşturabileceğiniz bir platform.

Bu yazıdaki senaryomuzda primavera server kurmak istemeyen, ama eğer güncellemeleri düzgün almazsa ileride hukuki bir durumda başına bela alacağının farkında olan fakir ama tüm çalışanlarına en azında lisanslı başlangıç Office 365 paketini sağlayabilecek bir firma olduğunu farz ediyoruz.

Öncelikle bu benim ilk PowerApps uygulamam o yüzden benim uyguladığımdan daha verimli uygulamalar olabilir zamanla bu uygulamayı geliştirmeyi planlıyorum, ilk olarak her iş programını güncellediğimizde bilgileri aktaracağımız ve kullanıcılar tarafından güncellenecek bir tablo oluşturmamız gerekiyor, bu tabloyu daha önceki yazımda bahsettiğim proje üzerinden yapmayı planlıyorum,

İlgili yazı için

http://planlamadanismanlik.com/alternatif-bir-spi-analizi/

Linkine tıklayabilirsiniz

Önceki yazımızda OBDC üzerinden nasıl güncel bilgileri excelde power query ile istediğimiz son formata dönüştürebileceğimiz anlatmıştık, burada benzer şekilde sadece bitmemiş aktivitelerin filtrelendiği son tablomuzu oluşturuyoruz, o projede çok az aktivite olduğu ve düzgün bir WBS yapısı olmadığı için bu toplaya bazı farazi aktiviteler ve WBS adlandırmaları (WBS burada hesaplanmış bir alan ve WBS’in 2. Ve 3. Seviyelerinin birleştirilmiş bir metni olacak) ekliyorum,

Tabloda görebildiğiniz gibi temel bilgiler, güncelleyeceğimiz alanların yanısıra edited by ve data date kolonları ekliyoruz, böylece o aktivitenin ne zaman ve kim tarafından güncellendiğini görebileceğiz.

Bu dosyamızı OneDrive bulut alanı üzerinde bir klasöre kaydediyoruz böylece PowerApps bu tabloya erişebiliyor.

PowerApps web sayfasına girip start from data özelliğini seçip uygulamayı yapmaya başlıyoruz,

Data kaynağı olarak OneDrive seçip, kaydettiğimiz dosyayı bulup içinden tablomuzu seçiyoruz, benim yarattığım tablonun ismi Task_update ve ben onu seçiyorum, bundan sonra benim veri kaynağımın ismi Task_update olarak geçecek ve benim excelde yaptığım her değişikliği PowerApps otomatik olarak güncelleyecek. Bu noktada PowerApps otomatik olarak bir şablon hazırlıyor aslında bu şablonda bence baya kullanılır olmasına rağmen bazı  değişikliklerle bunu daha etkili bir hale getireceğiz,

PowerApps ’in oluşturduğu şablon yandaki fotoğrafta gözüktüğü gibi oluştu. İlk iş olarak bize göstermesini istediğimiz bilgileri göremiyoruz benim görmek isteğim ise bilgiler WBS, aktivite ID, aktivite ismi ve fiziksel tamamlanma yüzdesi, bu yüzden sol taraftaki browsegallery galerisini seçip sağ taraftaki properties özelliğine basıyorum

ve burada layoutu 3 adet bilgiyi gösteren layout ile değiştirip alanları iseyandaki fotoğrafta görüldüğü gibi ayarlıyoruz, eksik olan alanımız WBS i özellikle ayrı bir adım olarak göstereceğim ki, buraya bir alan eklememiz gerektiğinde ne yapılması gerektiğini anlatabileyim

Sol tarafta mevcut galeriyi seçip insert label seçiyoruz, bu WBS olduğu için bunun daha büyük ve en başta gözüken bir alan olmasını istiyorum ve labellerı ona göre organize ediyorum ve advanced alanında data – text kısmını kısmındaki formülü

ThisItem.WBS

Olarak değiştiriyorum uygulamamızın son hali yandaki gibi oldu

Gördüğümüz gibi tüm aktiviteler sıralanıyor , benim istediğim ise uygulamanın sadece kullanıcının , devam eden veya 15 gün içinde başlaması planlan aktivitelerini sıralaması , eğer bunların haricinde bir aktivitenin güncellenmesi gerekiyorsa , mesela veli hasta  ve aktivitelerini sahada ali yapıyor ve aktiviteleri alinin güncellemesi lazım(bu arada herkes aliyi eşek bulmuş sömürüyor, detaylar için üstte linkini verdiğim yazıya bakabilirsiniz),search alanına ilgili aktivitenin id, tanımının veya WBS inin bir kısmını yazarsa altta listelenmesini istiyorum. Ayrıca karışıklık olmaması için bu aktivitelerin WBS ve işin başlama sırasına göre sıralanmasını istiyorum, bunu için galerinin items kısmına bunu tanımlamamız gerekiyor ve bunun içinde items kısmını açıp

SortByColumns(If(

IsBlank(TextSearchBox1.Text),

Filter(

task_update,

user_mail = User().Email,

RESTART_DATE < Today() + 15

),

Search(

task_update,

TextSearchBox1.Text,

"TASK_NAME"

)

),"WBS","RESTART_DATE")

Formülü yazmamız gerekiyor.

Şu an itibariyle listelemem benim istediğim şekle çok yaklaştı son bir adım olarak yüzdenin önünde bir yüzde işareti olmasını istiyorum bunun içinde Body2 alanını seçip

"% "&ThisItem.PHYS_COMPLETE_PCT

Formülünü yazıyorum.

PowerApps otomatik oluşturduğu uygulama önce aktivite detayını verip sonra güncelleme üzerine kurulmuş bana bu zaman kaybı olarak geldiğinden dolayı detail screen ara yüzünü silip aktivite de bulunan ok tıklandığında direkt olarak edit screen e geçmesini istiyorum bu yüzden nextarrow3 objesini seçip Onselect alanına

EditForm(EditForm1);Navigate(EditScreen1, ScreenTransition.None)

Formülünü yazıyorum, artık editscreen ara yüzüne geçebiliriz, bu ara yüz temel olarak bir form ve 2 düğmeden oluşuyor genel görüntüsü

yanda görüldüğü gibi oluşturuldu ve bizim istediğimiz görüntü tam olarak değil, editform1 formunu seçip properties/fields kısmında görmek ve güncellemek istediğimiz alanları ve sıralamasını seçiyoruz. Şimdi bazı özellikleri özelleştirmemiz gerekecek, bu alanların hepsi birere datacard olarak geçiyor sol tarafta formun altında her alan için bir datacard var ve datacardın altında label, text gibi alanlar var ve tüm bu alanları özelleştirebiliyoruz.

 

Mesela WBS datacartının altında 3 adet text ve 1 adet label alanı var ben WBS’i büyük harfle göstermesini istediğim için DataCardKey20 textini seçip DATA/Text alanını “WBS” olarak değiştiriyorum, ayrıca kimseni WBS veya aktivite kodu gibi alanları değiştirilmesini istemediğim için bu alanları sadece görülebilir yapmak istiyorum, WBS için DataCardValue16 alanını seçip Advanced / Design/DisplayMde alanını seçip

DisplayMode.View

Formülünü yazıyorum, bu tür alanlar kitlenmiş olabiliyor değiştirmek için advanced kısmına gelip en üstte gözüken kilit tuşuna basmanınız gerekiyor,

Bu işlemleri data date, edited by, aktivite adı ve id içinde tekrarlıyoruz, data date ve edited by alanlarının için formla beraber otomatik olarak oluşmasını istiyorum bu yüzden bu alanların DATA/ Default özelliklerini sırasıyla

Today()

User().Email

Olarak değiştiriyorum.

Başlangıç ve tahmini bitiş zamanlarında benim istediğim başlangıç için saat 8:00 bitiş içinde 17:00 gösterilmesi, iş programında tüm takvimleri buna göre ayarlayıp başlangıç ve bitiş saatlerini sabitliyoruz, bu yüzden her iki alanda saatleri sabitleyip görünmez yapıyoruz.

Formumuzun son hali yanda gördüğümüz gibi oldu, daha önceki deneyimlerimden insanların bu tip bir formu bile doldururken girebileceği mantıksız dataların haddi hesabı yok , o yüzden toplamda sadece 4 alan doldurulacak olsa da hataları önlemek için bazı önlemler alıyoruz , öncelikle başlangıç tarihi olarak ileri bir günün seçilmesini engellememiz lazım o yüzden bu talihin altındaki error mesajı text ini buluyoruz , burada ErrorMessage1 olarak geçiyor ve text kısmına "Başlangıç tarihi bugünden büyük olamaz" yazıyoruz , visible kısmına da

If(DateValue1.SelectedDate>Today(),true,false)

Formülünü ekliyoruz böylece ileri bir tarih seçilirse uyarı mesajı ortaya çıkacak, aynı mesajları diğer alanlar içinde uyguluyoruz

Eğer formda bir hata varsa gönderme düğmesini görünmez yapmak için

IconAccept1.visible değerini

If(ErrorMessage1.Visible=true Or ErrorMessage5.Visible=true Or ErrorMessage7.Visible=true  ,false,true)

Yapıyoruz

Formumuzun son hali yanda gördüğümüz gibi oldu ve artık hatalı bir bilginin gönderilmesini önlemiş olduk. Gereksiz düğme ve ara yüzleri de sildikten sonra çalışmamızı yayınlayabiliriz, Artık organizasyon içindeki izni olan tüm çalışanlar cep telefonuna PowerApps uygulamasını indirip güncellemeleri yapabilir.

Güncelleme dışında PowerApps uygulamasının inşaat sektöründe benim aklıma gelen kullanımları, çeşitli kontrol ve test formlarının doldurulması (uygunsuzluk formu, kalite kontrol formları vs.), kullanana özel raporların oluşturulması ve bazı taleplerin oluşturulması (malzeme istek formu gibi)

Bu uygulamayı geliştirmeyi düşünüyorum, kafamdaki eklemeler

  • Aktivite bazında eğer yüklenici sorumluluğunda olmayan bir gecikme varsa bunu raporlayabileceğimiz bir ekran
  • Düzgün bir puantaj sistemi için Aktiviteye bağlı çalışanların ve ekipmanları raporlanması için bir ekran
  • Günlük raporun tamamen bu ekran ürerinden tamamlanması
  • Aktivite bazlı Malzeme talebi, beton slump testi gibi tüm verilerin girilebilmesi

 

Tabi önce PowerApps uygulamasını detaylı olarak öğrenmem gerekiyor.

Power view ile detaylı raporlama

Daha önceki yazımızda bir projedeki çalışanların performansını hesaplayıp bunu power view ile raporlamıştık,önceki yazımız ulaşmak için

http://planlamadanismanlik.com/alternatif-bir-spi-analizi/

linkini kullanabilirsiniz, fakat önceki çalışmamızda elimizdeki veriler kısıtlı olduğu için raporumuzda filtreleyebileceğimiz çok fazla değer yoktu ayrıca internetteki power view ile alakalı tüm örneklerde harita üzerinden veri gösterme raporları vardı, bence çok yararsız olsa da bu araştırma ışığında tüm yöneticilerin performansları bir haritada görmek istedikleri sonucuna vardım.

Rapor üzerinde harita gösterimini sağlayabilmek için şöyle bir senaryo oluşturdum, Toplam 3 şehirde 3 ayrı projenin devam ettiği bir şirkette en iyi yüksek performanslı 10 çalışanın sıralandığı, ülkelere göre performansların gösterildiği ve şehirlere göre performansların harita üzerinde gösterildiği bir rapor derleyeceğiz.

Bir önceki örneğimize ek olarak bu örnekte çalışan sayımızı arttırdık ve alttaki tabloyu oluşturduk

isim parent ülke şehir
furkan hasan IRAK Bağdat
ahmet furkan IRAK Bağdat
mehmet furkan IRAK Bağdat
metin furkan IRAK Bağdat
ali metin IRAK Bağdat
veli metin IRAK Bağdat
hasan IRAK
ziya UKRAYNA
hüseyin ziya UKRAYNA Kiev
şamil hüseyin UKRAYNA Kiev
hamdi hüseyin UKRAYNA Kiev
george hüseyin UKRAYNA Kiev
hans george UKRAYNA Kiev
gruber george UKRAYNA Kiev
tosun ziya UKRAYNA Dnipro
şemsi tosun UKRAYNA Dnipro
paşa tosun UKRAYNA Dnipro
remzi tosun UKRAYNA Dnipro”
fatmagül remzi UKRAYNA Dnipro
ayşe remzi UKRAYNA Dnipro

Bir önceki yazımızda bahsettiğimiz performans hesaplama yöntemi ile 3 projeden de verilerin tek bir tablo üzerinde birleştirildiğini farz ediyoruz ve alttaki tabloyu oluşturuyoruz,

 

Bir önceki çalışmadan farklı olarak burada ülke ve şehir alanları girilmiş ve gruplandırma sırasında doğru bir hesaplama yapılabilmesi için performans hesabını PowerPivot içerisinde yapacağız. Tabloya baktığınızda Hasan ve ziya isimli çalışanların bir parent çalışanı yok ve tüm değerleri 0 olarak belirlenmiş, buradan da anlayacağımız üzere bu çalışanlar ülke sorumluları, kendilerine ait  atanan bir proje olmadığı için performans değerlerini altında çalışanların performansından oluşturacağız. Verilere genel olarak baktığımızda Ukrayna’daki erkek çalışanların performansını projeye yansıtamadığını görmekteyiz, buda genel olarak ziyanın performansını düşürmekte.

Bir önceki örnekteki aynı işlemi yapıp verileri PowerPivot’a aktarıyoruz , bir önceki örnekten farklı olarak burada org hiyerarşisine 1 katman daha eklendiği için org4 alanını yaratıyoruz, ayrıca 1 adet measure yaratıyoruz. Bu measure için formülümüz

performans: =sumx(performans,[A]*[r])/sumx(performans,[B])

Önceki örneğe benzer şekilde

Bir pivot tablosu oluşturuyoruz ve performans tablomuza org performans kolonunu ekliyoruz, bu kolonu ekleme nedenimiz ilk 10 çalışanı belirlemek için bu değerden, performansları ülkelere göre hesaplarken “performans” measure hesaplamasında yararlanacağız

 

 

 

 

PowerPivot’ta

sıralama:=RANKX(ALL(performans[isim]),CALCULATE(sum([org performans])))

şeklinde yeni bir measure tanımlıyoruz, bu measure isimleri performansa göre sıralamamıza yarıyor böylece ilk 10 veya ilk 3 gibi görseller hazırlayabiliyoruz.

 

Powerwiew da 3 alan oluşturuyoruz

1 ilk 10 tüm çalışanları “org performans” alanına göre sıralayan bir bar chart

2 ülkelere göre ülke performansını ve ilk 3 çalışanı sıralayan bir matris alanı

3 org2 seviyesinde şehirlerin performansını gösteren bir harita görseli

Bu görselleri oluştururken yapılan adımları teker teker göstermek bir yazı içerisinde çok zor fakat altta linkini verdiğim Excel dosyasını indirdiğinizde her alanın seçtiğinizde bütün ayalarını görebiliyorsunuz.

Görselimizin son hali

 

Fotoğraftaki gibi oluşuyor.

bu yazıda oluşturulan dosyayı indirmek için

https://planlamadanismanlik.sharepoint.com/:f:/s/genel/EnXSxYSDAmRBnULnTdRYQNcBkVfhqZRN06_0F6hfDLj43g?e=fVnIgx

linkini kullanabilirsiniz

 

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.