HR Analytics Dashboard in Power BI: Workforce Insights

Build a comprehensive HR analytics dashboard in Power BI covering headcount, turnover, diversity, absence, and employee lifecycle — with DAX formulas and KPI definitions.

E
ECOSIRE Research and Development Team
|19 Mart 20269 dk okuma2.0k Kelime|

Power BI'da İK Analitik Kontrol Paneli: Workforce Insights

İnsan analitiği, kurumsal iş zekasının en hızlı büyüyen uygulamasıdır ve bunun iyi bir nedeni vardır. Olgun İK analitiği programlarına sahip kuruluşlar, minimum düzeyde insan verisi kapasitesine sahip şirketlere (Deloitte Human Capital Trends) kıyasla %82 daha yüksek üç yıllık ortalama kâr elde ediyor. Ancak çoğu İK ekibi hâlâ çalışan sayısını Excel e-tablolarında izliyor ve ciroyu Google E-Tablolar'da manuel olarak hesaplıyor.

Power BI, İK liderlerine finans ve satış ekiplerinin yıllardır sahip olduğu analitik derinliğin aynısını sağlar: gerçek zamanlı personel sayısı görünürlüğü, otomatik ciro hesaplamaları, çeşitlilik analitiği ve işe alımdan işten ayrılmaya kadar tüm çalışan yolculuğu boyunca çalışan yaşam döngüsü takibi.

Bu kılavuz, Power BI'da veri modelini, DAX formülüyle her kritik İK KPI'sini ve gerçek iş gücü kararlarını yönlendiren pano sayfalarını kapsayan eksiksiz bir İK analiz platformu oluşturur.

Önemli Çıkarımlar

  • İK analitiği, geçmiş personel sayısı için yavaş yavaş değişen bir boyut (SCD) yaklaşımı gerektirir
  • Devir oranı hesaplaması, gönüllü ve gönülsüz ayrılmaları birbirinden ayırmalıdır
  • Çeşitlilik kontrol panelleri dikkatli bir gizlilik tasarımı gerektirir; toplu, uygunsuz durumlarda asla bireysel düzeyde değil
  • Çalışan yaşam döngüsü analizi işe alım süresini, üretkenlik süresini ve elde tutma eğrilerini izler
  • Devamsızlık analitiği (Bradford Faktörü, devamsızlık sıklığı) bordro verileriyle entegre olur
  • Kişi sayısına ilişkin DAX ölçümleri anlıktır (toplanmaz) — özel hesaplama modelleri gerektirir
  • HRIS sistemlerinin (Workday, SAP SuccessFactors, BambooHR) tümünde Power BI bağlayıcıları bulunur
  • Satır düzeyinde güvenlik, İK verilerini yetkili İK iş ortakları ve yöneticileriyle sınırlamalıdır

İK Analitiği için Veri Modeli

Temel İK Tabloları

Employee_Snapshot (yavaş yavaş değişiyor, çalışan başına ayda bir satır):

SütunAçıklama
KOD0Çalışan tanımlayıcı
KOD0Anlık görüntünün ay sonu tarihi
KOD0Aktif, İzinli, Feshedilmiş
KOD0FK'den Bölüme
KOD0Derece/Bant (L1-L8)
KOD0Mevcut iş unvanı
KOD0FK'dan Çalışana (yönetici)
KOD0FK'dan Konum'a
KOD0Orijinal işe alım tarihi
KOD0Fesih tarihi (etkinse boş)
KOD0Gönüllü, Gönülsüz, Emeklilik vb.
KOD0Aylık baz maaş
KOD0FT için 1,0, PT için 0,5
KOD0M/F/İkili olmayan (küçük gruplar için anonimleştirilmiştir)
KOD0Toplu yaş aralığı (ham yaş değil)
KOD0Kendisinin bildirdiği etnik grup
KOD0Anlık görüntü tarihinde kullanılan aylar

Hiring_Events (işe alma başına bir satır):

  • KOD0, KOD1, KOD2, KOD3, KOD4, KOD5, KOD6, KOD7, KOD8, KOD9

Absence_Records (yokluk olayı başına bir satır):

  • KOD0, KOD1, KOD2, KOD3, KOD4, KOD5, KOD6, KOD7

Performance_Reviews (inceleme başına bir satır):

  • KOD0, KOD1, KOD2, KOD3, KOD4

Training_Completions (eğitim başına bir satır):

  • KOD0, KOD1, KOD2, KOD3, KOD4

Çalışan Sayısı Analizi

Zaman İçinde Çalışan Sayısı Hesaplaması

Çalışan sayısı, bir toplam değil, anlık bir ölçümdür (belirli bir zamanda kaç çalışanın mevcut olduğu). Bu, özel DAX işleme gerektirir:

// Headcount at any selected date
Headcount =
CALCULATE(
    COUNTROWS(Employee_Snapshot),
    Employee_Snapshot[Status] = "Active",
    // Use the latest available snapshot for the selected period
    Employee_Snapshot[SnapshotDate] = MAX(Employee_Snapshot[SnapshotDate])
)

// FTE-adjusted Headcount
FTE Headcount =
CALCULATE(
    SUMX(
        FILTER(Employee_Snapshot, Employee_Snapshot[Status] = "Active"),
        Employee_Snapshot[FullTimeEquivalent]
    ),
    Employee_Snapshot[SnapshotDate] = MAX(Employee_Snapshot[SnapshotDate])
)

// Headcount by Department (for matrix/bar chart)
Dept Headcount =
CALCULATE(
    [Headcount],
    ALLEXCEPT(Employee_Snapshot, Employee_Snapshot[DepartmentID])
)

// Headcount growth (vs prior month)
Headcount MoM Change =
[Headcount] -
CALCULATE(
    [Headcount],
    DATEADD(Date[Date], -1, MONTH)
)

// Headcount trend (for sparkline or line chart)
Headcount Trend =
CALCULATE(
    [Headcount],
    REMOVEFILTERS(Date[Month])
)

Devir Oranı Analizi

Ciro, en çok izlenen İK ölçümüdür ve en sık yanlış hesaplanandır. Doğru formül, payda olarak ortalama çalışan sayısını kullanır (başlangıç ​​veya bitiş kişi sayısı değil).

Ciro KPI'ları

// Total Terminations in Period
Terminations =
CALCULATE(
    COUNTROWS(Employee_Snapshot),
    Employee_Snapshot[Status] = "Terminated",
    Employee_Snapshot[TerminationDate] >= MIN(Date[Date]),
    Employee_Snapshot[TerminationDate] <= MAX(Date[Date])
)

// Voluntary Terminations (resigned)
Voluntary Terminations =
CALCULATE(
    [Terminations],
    Employee_Snapshot[TerminationReason] = "Voluntary"
)

// Involuntary Terminations (laid off, fired)
Involuntary Terminations =
CALCULATE(
    [Terminations],
    Employee_Snapshot[TerminationReason] = "Involuntary"
)

// Average Headcount (for turnover denominator)
Avg Headcount =
AVERAGEX(
    VALUES(Date[Month]),
    [Headcount]
)

// Annualized Turnover Rate
Turnover Rate =
DIVIDE(
    [Terminations],
    [Avg Headcount],
    0
) * 12  -- Annualize if showing monthly data

// Voluntary Turnover Rate
Voluntary Turnover Rate =
DIVIDE([Voluntary Terminations], [Avg Headcount], 0) * 12

// Regrettable Turnover (voluntary + high performers)
Regrettable Turnover =
CALCULATE(
    [Voluntary Terminations],
    RELATED(Performance_Reviews[PerformanceRating]) >= 4  -- High performers
)

// Retention Rate
Retention Rate = 1 - [Turnover Rate]

// New Hire Survival Rate (% of new hires still employed after 90 days)
90 Day Survival Rate =
DIVIDE(
    CALCULATE(
        COUNTROWS(Hiring_Events),
        DATEDIFF(Hiring_Events[StartDate], TODAY(), DAY) >= 90,
        RELATED(Employee_Snapshot[Status]) = "Active"
    ),
    CALCULATE(
        COUNTROWS(Hiring_Events),
        DATEDIFF(Hiring_Events[StartDate], TODAY(), DAY) >= 90
    ),
    0
)

Çeşitlilik, Eşitlik ve Katılım Metrikleri

Gizliliğe Duyarlı DEI Analitiği

DEI analitiği gizlilik korumalarıyla uygulanmalıdır; bireysel düzeydeki verileri asla hassas niteliklere göre görüntülemeyin ve yapılandırılabilir minimum değerden daha küçük gruplara (genellikle 5-10 çalışan) ait verileri bastırmayın.

// Gender ratio (with suppression for small groups)
Gender Ratio Female =
VAR FemaleCount = CALCULATE([Headcount], Employee_Snapshot[Gender] = "Female")
VAR TotalCount = [Headcount]
RETURN
IF(TotalCount >= 10, DIVIDE(FemaleCount, TotalCount, 0), BLANK())

// Pay equity ratio (female to male)
Gender Pay Ratio =
VAR FemalePay = CALCULATE(
    AVERAGE(Employee_Snapshot[BaseSalary]),
    Employee_Snapshot[Gender] = "Female"
)
VAR MalePay = CALCULATE(
    AVERAGE(Employee_Snapshot[BaseSalary]),
    Employee_Snapshot[Gender] = "Male"
)
RETURN DIVIDE(FemalePay, MalePay, 0)

// Leadership diversity (% of senior roles filled by underrepresented groups)
Leadership Diversity % =
DIVIDE(
    CALCULATE(
        [Headcount],
        Employee_Snapshot[JobLevel] IN {"L6","L7","L8"},
        Employee_Snapshot[Gender] = "Female"
    ),
    CALCULATE(
        [Headcount],
        Employee_Snapshot[JobLevel] IN {"L6","L7","L8"}
    ),
    0
)

DEI Kontrol Paneli KPI'ları

KPIFormülHedef
Cinsiyet DengesiToplam çalışan sayısının kadın yüzdesi%50 ± %5
Cinsiyet Ücret FarkıKadınların ortalama maaşı / Erkeklerin ortalama maaşı> %97
Liderlik ÇeşitliliğiÜst düzey rollerde yeterince temsil edilmeyen gruplar> %30
Çeşitli İşe Alma OranıÇeşitli işe alımlar / toplam işe alımlar> %40
Promosyon SermayesiCinsiyete/etnik kökene göre terfi oranıgruplar arasında ±%2

Çalışan Yaşam Döngüsü Analizi

İşe Alma Süresi

// Average days from job posting to offer acceptance
Avg Time to Hire =
AVERAGEX(
    Hiring_Events,
    DATEDIFF(
        Hiring_Events[ApplicationDate],
        Hiring_Events[AcceptDate],
        DAY
    )
)

// Offer Acceptance Rate
Offer Acceptance Rate =
DIVIDE(
    CALCULATE(COUNTROWS(Hiring_Events), Hiring_Events[AcceptDate] <> BLANK()),
    CALCULATE(COUNTROWS(Hiring_Events), Hiring_Events[OfferDate] <> BLANK()),
    0
)

// Source Channel Effectiveness (hired employees by source)
Source Hire Rate =
DIVIDE(
    COUNTROWS(Hiring_Events),
    CALCULATE(
        COUNTROWS(Hiring_Events),
        REMOVEFILTERS(Hiring_Events[SourceChannel])
    ),
    0
)

Görev Süresi Dağılımı

// Tenure bucket (for histogram)
Tenure Bucket =
SWITCH(TRUE(),
    Employee_Snapshot[TenureMonths] < 3, "0-3 months",
    Employee_Snapshot[TenureMonths] < 12, "3-12 months",
    Employee_Snapshot[TenureMonths] < 24, "1-2 years",
    Employee_Snapshot[TenureMonths] < 60, "2-5 years",
    Employee_Snapshot[TenureMonths] < 120, "5-10 years",
    "10+ years"
)

// Average Tenure at Separation
Avg Tenure at Separation =
AVERAGEX(
    FILTER(Employee_Snapshot, Employee_Snapshot[Status] = "Terminated"),
    Employee_Snapshot[TenureMonths]
)

Devamsızlık Analizi

Devamsızlık KPI'ları

// Absence Rate (% of working days lost)
Absence Rate =
DIVIDE(
    SUM(Absence_Records[DaysAbsent]),
    [Headcount] * NETWORKDAYS(MIN(Date[Date]), MAX(Date[Date])),
    0
)

// Bradford Factor (frequency-weighted absence score)
// B = S² × D (S = absence episodes, D = total days)
Bradford Factor =
VAR Spells = COUNTROWS(Absence_Records)
VAR Days = SUM(Absence_Records[DaysAbsent])
RETURN Spells * Spells * Days

// Average Absence Days per Employee
Avg Absence Days =
DIVIDE(SUM(Absence_Records[DaysAbsent]), [Headcount], 0)

// Absence by Type (breakdown)
Medical Absence Days =
CALCULATE(
    SUM(Absence_Records[DaysAbsent]),
    Absence_Records[AbsenceType] = "Medical"
)

5 Sayfalık İK Kontrol Paneli Mimarisi

Sayfa 1: İşgücüne Genel Bakış

  • Çalışan sayısı KPI kartı (mevcut ve önceki yıl karşılaştırması)
  • FTE Çalışan Sayısı (gerçek ve hedef)
  • Departmana göre personel sayısı (çubuk grafik)
  • 12 aylık çalışan sayısı eğilimi (çizgi grafik)
  • Yeni İşe Alınanlar ve İşten Çıkarılanlar (kelebek/karşılaştırma çubuk grafiği)
  • Coğrafi kişi sayısı haritası

Sayfa 2: Ciro Analizi

  • Yıllık Ciro Oranı (gösterge ve sektör karşılaştırması)
  • Gönüllü ve Gönülsüz (halka şeması)
  • Departmana göre Ciro (sıralanmış çubuk grafik, en yüksek önce)
  • Görev Süresi Bandına Göre Ciro (histogram)
  • 24 aylık ciro eğilimi (çizgi grafik)
  • Çıkış nedeni dökümü (ağaç haritası)

Sayfa 3: Yetenek Kazanımı

  • İşe Alma Süresi trendi (ay bazında çizgi grafik)
  • Teklif Kabul Oranı (KPI kartı)
  • Kaynak Kanala göre işe alımlar (çubuk grafik)
  • Departmanlara Göre Açık Talepler (tablo)
  • İşe alma hunisi (başvurulardan başlangıçlara kadar)
  • Departmana göre İşe Alma Maliyeti

Sayfa 4: Çeşitlilik ve Katılım

  • Düzeylere göre cinsiyet dengesi (yığılmış çubuk grafik)
  • Departmana göre cinsiyete dayalı ücret farkı (çubuk grafik)
  • Çeşitlilik işe alım oranı eğilimi (çizgi grafik)
  • Cinsiyete göre terfi oranı (gruplandırılmış çubuk)
  • Yöneticiye göre takım çeşitliliği endeksi

Sayfa 5: Devamsızlık ve Refah

  • Bölüme göre devamsızlık oranı (ısı haritası)
  • Bradford Faktör dağılımı
  • Sebebe göre devamsızlık (pasta grafiği)
  • Devamsızlık eğilimi (12 aylık çizgi grafik)
  • Devamsızlık ve performans korelasyon dağılım grafiği

Sıkça Sorulan Sorular

How do I connect Power BI to Workday or SAP SuccessFactors?

Workday, Power BI'ın OAuth kimlik doğrulamasını kullanarak Web bağlayıcısı aracılığıyla bağlanabileceği bir Prism Analytics modülü ve REST API sağlar. SAP SuccessFactors, çalışan verileri için OData API'lerini kullanıma sunuyor. Her iki sistem için de büyük kuruluşlara yönelik önerilen mimari şu şekildedir: HRIS → Fivetran veya Talend işlem hattı → Snowflake/Azure Synapse → Power BI. Bu, analitik katmanı HRIS'ten ayırır ve API hız sınırı sorunlarını önler.

Power BI'da hassas çalışan verilerini nasıl korurum?

Birden fazla koruma katmanı uygulayın: Satır düzeyinde güvenlik, her görüntüleyen kişinin hangi çalışan verilerini göreceğini kısıtlar (örneğin, yöneticiler yalnızca doğrudan raporlarını görür, HRBP ise kendilerine atanmış iş birimlerini görür). Kişisel verileri içeren veri kümelerine Microsoft Bilgi Koruması duyarlılık etiketlerini uygulayın. Maaş verilerini hiçbir zaman paylaşılan kontrol panellerinde bireysel çalışan düzeyinde göstermeyin. Çeşitlilik analitiği için 10 çalışandan küçük gruplara yönelik ölçümleri bastırın. Kuruluşunuzun veri gizliliği politikasının, Kişi Analizi kullanımına açıkça izin verdiğinden emin olun.

Çalışan sayısı ile FTE arasındaki fark nedir?

Çalışan sayısı, çalışanları çalışma saatlerine bakılmaksızın sayar (yarı zamanlı çalışan 1 olarak sayılır). FTE (Tam Zamanlı Eşdeğer) çalışma saatlerine göre ağırlıklandırılır — %50 yarı zamanlı çalışan 0,5 FTE olarak sayılır. Mutlak çalışan sayıları için personel sayısını kullanın (örneğin, "500 çalışanımız var"). Kapasite planlama ve maliyet modelleme için FTE'yi kullanın (örneğin, "430 FTE değerinde kapasitemiz var"). Her iki önlem de önemlidir ve farklı amaçlara hizmet eder.

Devir oranını doğru şekilde nasıl hesaplarım?

Devir oranı = (Ayrılma sayısı / Ortalama personel sayısı) × 100. Önemli olan paydadır; yalnızca dönem sonu personel sayısını değil, dönemin başlangıç ​​ve bitiş personel sayısının ortalamasını kullanın. 12 aylık ciro için, son 12 aylık ayrılıkları toplayın ve 12 aylık ortalama personel sayısına bölün. Pek çok kuruluş, büyüyen kuruluşlarda ciroyu artıran, biten personel sayısını yanlış kullanıyor.

Power BI bireysel çalışanlar için tahmini yıpranma riskini gösterebilir mi?

Azure Machine Learning entegrasyonuyla evet. Geçmiş özellikleri (görev süresi, performans puanı, katılım puanı, son terfi tarihi, maaş ve pazar, yönetici puanı) kullanarak Azure ML'de bir yıpranma tahmin modeli oluşturun ve mevcut her çalışan için bir yıpranma olasılık puanı çıktısı alın. Bu puanı Power BI'a bağlayın ve ekibinin kaçma riskini gösteren bir yönetici kontrol panelinde görüntüleyin; böylece çalışanlar istifa etmeden önce proaktif elde tutma görüşmelerine olanak tanıyın.


Sonraki Adımlar

Power BI'daki İK analitiği, liderlere finans ve satış ekiplerinin yıllardır sahip olduğu aynı veriye dayalı karar alma olanağını sağlar. Kimin, neden, hangi takımlardan ve hangi görev süresiyle ayrıldığını anlamak, İK'ya daha erken müdahale etme ve en önemli yetenekleri elde tutma içgörüsü sağlar.

ECOSIRE'ın Power BI ekibi, HRIS veri hattı tasarımından uygun gizlilik denetimleri ve rol tabanlı erişime sahip etkileşimli Kişi Analizi panolarına kadar eksiksiz İK analiz platformları oluşturur.

İK analitiği yaklaşımımızı anlamak için Power BI kontrol paneli geliştirme hizmetlerimizi keşfedin veya iş gücü analitiği gereksinimlerinizi ve veri kaynaklarınızı tartışmak için ekibimizle iletişime geçin.

E

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.

WhatsApp'ta Sohbet Et