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 مارس 20269 دقائق قراءة2.1k كلمات|

لوحة معلومات تحليلات الموارد البشرية في Power BI: Workforce Insights

تعد تحليلات الأشخاص التطبيق الأسرع نموًا لذكاء الأعمال في المؤسسة - وذلك لسبب وجيه. تتمتع المؤسسات التي لديها برامج ناضجة لتحليلات الموارد البشرية بمتوسط ​​ربح أعلى بنسبة 82% على مدار ثلاث سنوات مقارنة بالشركات التي لديها الحد الأدنى من قدرات البيانات المتعلقة بالأشخاص (اتجاهات Deloitte Human Capital). ومع ذلك، لا تزال معظم فرق الموارد البشرية تتتبع عدد الموظفين في جداول بيانات Excel وتحسب معدل الدوران يدويًا في جداول بيانات Google.

يمنح Power BI قادة الموارد البشرية نفس العمق التحليلي الذي تتمتع به فرق التمويل والمبيعات لسنوات - رؤية عدد الموظفين في الوقت الفعلي، وحسابات معدل دوران الموظفين الآلية، وتحليلات التنوع، وتتبع دورة حياة الموظف عبر رحلة الموظف الكاملة بدءًا من التوظيف وحتى رحيل الموظفين.

ينشئ هذا الدليل نظامًا أساسيًا كاملاً لتحليلات الموارد البشرية في Power BI، ويغطي نموذج البيانات، وكل مؤشرات الأداء الرئيسية المهمة للموارد البشرية مع صيغة DAX الخاصة بها، وصفحات لوحة المعلومات التي تقود قرارات القوى العاملة الحقيقية.

الوجبات الرئيسية

  • تتطلب تحليلات الموارد البشرية اتباع نهج البعد المتغير ببطء (SCD) لعدد الموظفين التاريخي
  • حساب معدل الدوران يجب أن يميز بين حالات الانفصال الطوعي وغير الطوعي
  • تتطلب لوحات معلومات التنوع تصميمًا دقيقًا للخصوصية - بشكل إجمالي، وليس على المستوى الفردي أبدًا عندما يكون ذلك غير مناسب
  • يتتبع تحليل دورة حياة الموظف منحنيات وقت التوظيف ووقت الإنتاجية والاحتفاظ
  • تتكامل تحليلات الغياب (معامل برادفورد، تكرار الغياب) مع بيانات الرواتب
  • تعتبر مقاييس DAX لعدد الموظفين لحظية (غير مجمعة) — تتطلب أنماط حسابية خاصة
  • تحتوي أنظمة HRIS (Workday، وSAP SuccessFactors، وBambooHR) على موصلات Power BI
  • يجب أن يقتصر الأمان على مستوى الصف على شركاء الأعمال ومديري الموارد البشرية المعتمدين

نموذج البيانات لتحليلات الموارد البشرية

جداول الموارد البشرية الأساسية

Employee_Snapshot (تتغير ببطء، صف واحد لكل موظف شهريًا):

العمودالوصف
EmployeeIDمعرف الموظف
SnapshotDateتاريخ نهاية الشهر لللقطة
Statusنشط، في إجازة، منتهٍ
DepartmentIDFK إلى القسم
JobLevelالصف/النطاق (L1-L8)
JobTitleالمسمى الوظيفي الحالي
ManagerIDFK للموظف (المدير)
LocationIDFK إلى الموقع
HireDateتاريخ الاستئجار الأصلي
TerminationDateتاريخ الإنهاء (خالي إذا كان نشطًا)
TerminationReasonطوعي، غير طوعي، تقاعد، الخ.
BaseSalaryالراتب الأساسي الشهري
FullTimeEquivalent1.0 للقدم، 0.5 للـ PT
GenderM/F/غير ثنائي (مجهول للمجموعات الصغيرة)
AgeGroupالنطاق العمري المجمع (وليس العمر الأولي)
Ethnicityالمجموعة العرقية المبلغ عنها ذاتيا
TenureMonthsالأشهر المستخدمة في تاريخ اللقطة

Hiring_Events (صف واحد لكل استئجار):

  • HireID، EmployeeID، ApplicationDate، OfferDate، AcceptDate، StartDate، DepartmentID، SourceChannel، HiringManagerID، JobRequisitionID

Absence_Records (صف واحد لكل حدث غياب):

  • AbsenceID، EmployeeID، StartDate، EndDate، DaysAbsent، AbsenceType، Reason، ApprovalStatus

مراجعات_الأداء (صف واحد لكل مراجعة):

  • ReviewID، EmployeeID، ReviewDate، PerformanceRating، ManagerID

إكمالات_التدريب (صف واحد لكل تدريب):

  • TrainingID، EmployeeID، CompletionDate، ProgramName، HoursCompleted

تحليلات عدد الموظفين

حساب عدد الموظفين في الوقت المحدد

عدد الموظفين هو مقياس لقطة (عدد الموظفين الموجودين في وقت ما)، وليس مجموعًا. يتطلب هذا معالجة DAX خاصة:

// 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])
)

تحليلات معدل الدوران

معدل الدوران هو مقياس الموارد البشرية الأكثر تتبعًا والأكثر خطأً في الحساب. تستخدم الصيغة الصحيحة متوسط ​​عدد الموظفين كمقام (ليس بداية أو نهاية عدد الموظفين).

مؤشرات الأداء الرئيسية للدوران

// 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
)

مقاييس التنوع والإنصاف والشمول

تحليلات DEI المدركة للخصوصية

يجب تنفيذ تحليلات DEI باستخدام حواجز حماية الخصوصية - لا تعرض أبدًا البيانات على المستوى الفردي حسب السمات الحساسة، وتمنع البيانات للمجموعات الأصغر من الحد الأدنى القابل للتكوين (عادةً 5-10 موظفين).

// 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

مؤشرات الأداء الرئيسيةصيغةالهدف
التوازن بين الجنسينالإناث % من إجمالي عدد الموظفين50% ± 5%
فجوة الأجور بين الجنسينمتوسط ​​راتب الإناث / متوسط ​​راتب الذكور> 97%
التنوع القياديالمجموعات الممثلة تمثيلا ناقصا في الأدوار العليا> 30%
معدل توظيف متنوعتوظيفات متنوعة / إجمالي التعيينات> 40%
تعزيز الأسهممعدل الترقية حسب الجنس/العرق± 2% بين المجموعات

تحليل دورة حياة الموظف

وقت الاستئجار

// 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
)

توزيع الحيازة

// 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]
)

تحليلات الغياب

غياب مؤشرات الأداء الرئيسية

// 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 صفحات

الصفحة 1: نظرة عامة على القوى العاملة

  • بطاقة KPI لعدد الموظفين (الحالية مقابل العام السابق)
  • عدد الموظفين FTE (الفعلي مقابل الهدف)
  • عدد الموظفين حسب القسم (مخطط شريطي)
  • اتجاه عدد الموظفين 12 شهرًا (مخطط خطي)
  • التعيينات الجديدة مقابل إنهاء الخدمة (مخطط شريطي الفراشة/المقارنة)
  • خريطة عدد الموظفين الجغرافية

الصفحة 2: تحليل دوران

  • معدل الدوران السنوي (المقياس مقابل معيار الصناعة)
  • طوعي مقابل غير طوعي (مخطط دائري)
  • معدل الدوران حسب القسم (مخطط شريطي مصنف، الأعلى أولاً)
  • معدل الدوران حسب نطاق الحيازة (الرسم البياني)
  • اتجاه دوران 24 شهرا (الرسم البياني الخطي)
  • تفصيل سبب الخروج (الخريطة الهيكلية)

الصفحة 3: اكتساب المواهب

  • اتجاه وقت التوظيف (مخطط خطي حسب الشهر)
  • معدل قبول العرض (بطاقة KPI)
  • التعيينات حسب قناة المصدر (مخطط شريطي)
  • الطلبات المفتوحة حسب القسم (الجدول)
  • مسار التوظيف (من التطبيقات إلى البداية)
  • تكلفة الاستئجار حسب القسم

الصفحة 4: التنوع والشمول

  • التوازن بين الجنسين حسب المستوى (مخطط شريطي مكدس)
  • فجوة الأجور بين الجنسين حسب الإدارة (مخطط شريطي)
  • اتجاه معدل التوظيف المتنوع (مخطط خطي)
  • معدل الترويج حسب الجنس (شريط مجمع)
  • مؤشر تنوع الفريق من قبل المدير

الصفحة 5: الغياب والرفاهية

  • معدل الغياب حسب القسم (الخريطة الحرارية)
  • توزيع معامل برادفورد
  • الغياب بسبب (مخطط دائري)
  • اتجاه الغياب (مخطط خطي مدته 12 شهرًا)
  • مخطط مبعثر لعلاقات الغياب مقابل الأداء

الأسئلة المتداولة

كيف يمكنني توصيل Power BI بـ Workday أو SAP SuccessFactors؟

يوفر Workday وحدة Prism Analytics وREST API التي يمكن لـ Power BI الاتصال بها عبر موصل الويب باستخدام مصادقة OAuth. يكشف SAP SuccessFactors عن واجهات برمجة تطبيقات OData لبيانات الموظفين. بالنسبة لكلا النظامين، فإن البنية الموصى بها للمؤسسات الكبيرة هي: HRIS → خط أنابيب Fivetran أو Talend → Snowflake/Azure Synapse → Power BI. يؤدي هذا إلى فصل الطبقة التحليلية عن نظام معلومات الموارد البشرية (HRIS) وتجنب مشكلات حدود معدل واجهة برمجة التطبيقات (API).

كيف يمكنني حماية بيانات الموظفين الحساسة في Power BI؟

تطبيق طبقات متعددة من الحماية: يعمل الأمان على مستوى الصف على تقييد بيانات الموظفين التي يراها كل عارض (على سبيل المثال، يرى المديرون تقاريرهم المباشرة فقط، ويرى HRBP وحدات الأعمال المخصصة لهم). قم بتطبيق تسميات حساسية حماية المعلومات لـ Microsoft على مجموعات البيانات التي تحتوي على بيانات شخصية. لا تعرض أبدًا بيانات الرواتب على مستوى الموظف الفردي في لوحات المعلومات المشتركة. بالنسبة لتحليلات التنوع، قم بمنع المقاييس للمجموعات الأصغر من 10 موظفين. تأكد من أن سياسة خصوصية البيانات في مؤسستك تسمح صراحةً باستخدام People Analytics.

ما الفرق بين عدد الموظفين وFTE؟

يحسب عدد الموظفين الموظفين بغض النظر عن ساعات عملهم (يتم حساب الموظف بدوام جزئي على أنه 1). يتم أوزان FTE (ما يعادل الدوام الكامل) حسب ساعات العمل - يتم احتساب الموظف بدوام جزئي بنسبة 50٪ على أنه 0.5 FTE. استخدم عدد الموظفين للأعداد المطلقة للموظفين (على سبيل المثال، "لدينا 500 موظف"). استخدم FTE لتخطيط السعة ونمذجة التكلفة (على سبيل المثال، "لدينا سعة تبلغ 430 FTE"). كلا الإجراءين مهمان ويخدمان أغراضًا مختلفة.

كيف أحسب معدل الدوران بشكل صحيح؟

معدل الدوران = (عدد فترات انتهاء الخدمة / متوسط ​​عدد الموظفين) × 100. المفتاح هو المقام - استخدم متوسط ​​عدد بداية ونهاية عدد الموظفين للفترة، وليس فقط عدد الموظفين في النهاية. بالنسبة إلى معدل دوران الموظفين لمدة 12 شهرًا، قم بجمع آخر 12 شهرًا من فترات انتهاء الخدمة وتقسيمها على متوسط ​​عدد الموظفين لمدة 12 شهرًا. تستخدم العديد من المؤسسات بشكل غير صحيح عدد الموظفين النهائي، مما يؤدي إلى تضخيم معدل الدوران في المؤسسات المتنامية.

هل يمكن لـ Power BI إظهار مخاطر الاستنزاف التنبؤية للموظفين الأفراد؟

مع تكامل Azure Machine Learning، نعم. أنشئ نموذجًا للتنبؤ بالتناقص في Azure ML باستخدام الميزات التاريخية (المدة، وتقييم الأداء، ونقاط المشاركة، وتاريخ الترقية الأخير، والراتب مقابل السوق، وتقييم المدير) وإخراج درجة احتمالية التناقص لكل موظف حالي. قم بتوصيل هذه النتيجة بـ Power BI واعرضها في لوحة معلومات المدير التي توضح مخاطر رحلة الفريق - مما يسمح بمحادثات الاحتفاظ الاستباقية قبل استقالة الموظفين.


الخطوات التالية

توفر تحليلات الموارد البشرية في Power BI للقادة نفس عملية اتخاذ القرار المستندة إلى البيانات والتي كانت لدى فرق التمويل والمبيعات لسنوات. إن فهم من سيغادر، ولماذا، ومن أي فريق، وفي أي مدة يمنح الموارد البشرية رؤية للتدخل مبكرًا والاحتفاظ بالمواهب الأكثر أهمية.

يقوم فريق Power BI التابع لـ ECOSIRE ببناء منصات كاملة لتحليلات الموارد البشرية - بدءًا من تصميم خطوط بيانات HRIS إلى لوحات معلومات People Analytics التفاعلية مع عناصر التحكم المناسبة في الخصوصية والوصول المستند إلى الأدوار.

استكشف خدمات تطوير لوحة معلومات Power BI لفهم نهج تحليلات الموارد البشرية لدينا، أو اتصل بفريقنا لمناقشة متطلبات تحليلات القوى العاملة ومصادر البيانات لديك.

E

بقلم

ECOSIRE Research and Development Team

بناء منتجات رقمية بمستوى المؤسسات في ECOSIRE. مشاركة رؤى حول تكاملات Odoo وأتمتة التجارة الإلكترونية وحلول الأعمال المدعومة بالذكاء الاصطناعي.

الدردشة على الواتساب