اذهب إلى المحتوى

السؤال

نشر

انا اعمل على برنامج Power bi 
لدي جدول البصمة يحتوي على عمود رقم الموظف وعمود  تاريخ دخول وخروج الموظف وتوقيت خروج ودخول الموظف 
تكمن المشكله في عدم تمكني في حساب عدد ساعات العمل ان وقت الخروج والدخول في نفس العمود وكل منهما في صف كما في الصورة 
اريد ان احسب عدد ساعات العمل في اليوم وعدد ايام العمل لكل موظف  
لم استطع ان اقوم بفصل التوقيت AM و PM  كل منهما في عمود حتى اقوم بحساب عدد الساعات 
هل يمكن لاحد ان يقدم لي المساعدة؟
 

2.png

Recommended Posts

  • 0
نشر

السلام عليكم أمل ،
لفصل توقيـت الدخول والخروج في عمودين منفصلين لحساب ساعـات العمل لكل موظف، يمكنك استخدام برنامج Power BI واستخدام استعلامات DAX أو Power Query سـوف أوضح لكى كيفيـة القيام بذلك باستخدام Power Query، وهو جزء من Power BI Desktop.

اولا قومى بتحميل البيانات إلى Power BI:

افتحى Power BI Desktopوانقرى على Get Data وحددى نوع البيانات Excel إذا كانت بياناتك في ملف Excel.

وقمى بتحميل الجدول الذي يحتوي على بيانات البصمة.

ومن ثـم افتحى محرر Power Query:

-بعد تحميل البيانات، انقرى على Transform Data لفتح محرر Power Query.

-إضافة عمود مخصص لتحديد نوع الحدث دخول أو خروج.

-اختر الجدول الخاص بك في Power Query.

-اضغطى على Add Column ثم Custom Column

أضفى عمود مخصص لتحديد نوع الحدث دخول أو خروج بناء على الوقت. يمكنك استخدام صيغة لتحديد ما إذا كان الوقت في الصباح (AM) هو دخول وما إذا كان في المساء PM هو خروج:

if Text.End([CHECKTIME], 2) = "AM" then "Entry" else "Exit"

فصل التاريخ والوقت:

استخدمى Split Column لفصل التاريخ والوقت في عمود CHECKTIME إلى تاريخ ووقت ،.واخترى العمود CHECKTIME.

انقر على Home ثم Split Columnواختر By Delimiter واختر Space كالفاصل.

تحويل النص إلى تاريخ/وقت:

حددى العمود الذي يحتوي على التاريخ وحوله إلى نوع البيانات Date.

حددى العمود الذي يحتوي على الوقت وحوله إلى نوع البيانات Time.

ومن ثم نجعل  الجدول Pivot:

-استخدم Pivot Column لجعل القيم في عمود نوع الحدث دخول أو خروج كعناوين أعمدة.

-اخترى العمود الذي يحتوي على نوع الحدث.وانقرى على Transform ثم Pivot Column.

-في نافذة Pivot Column، اختر العمود الذي يحتوي على الوقت كقيم.

ومن ثم نقوم بحساب عدد الساعات:

أضفى عمود مخصص جديد لحساب عدد الساعات بين الدخول والخروج.

اضغطى على Add Column ثم Custom Column.

استخدم صيغة لحساب الفرق بين وقت الدخول ووقت الخروج:

Duration.TotalHours([Exit] - [Entry])

واخيرا انقرى على Close & Apply لتطبيق التغييرات والعودة إلى Power BI
وبعد ذلك قومى بإنشاء التقارير التى تريدين.

  • 0
نشر

لم ينجح عندما قمت بعم

بتاريخ 38 دقائق مضت قال Khaled Osama3:

السلام عليكم أمل ،
لفصل توقيـت الدخول والخروج في عمودين منفصلين لحساب ساعـات العمل لكل موظف، يمكنك استخدام برنامج Power BI واستخدام استعلامات DAX أو Power Query سـوف أوضح لكى كيفيـة القيام بذلك باستخدام Power Query، وهو جزء من Power BI Desktop.

اولا قومى بتحميل البيانات إلى Power BI:

افتحى Power BI Desktopوانقرى على Get Data وحددى نوع البيانات Excel إذا كانت بياناتك في ملف Excel.

وقمى بتحميل الجدول الذي يحتوي على بيانات البصمة.

ومن ثـم افتحى محرر Power Query:

-بعد تحميل البيانات، انقرى على Transform Data لفتح محرر Power Query.

-إضافة عمود مخصص لتحديد نوع الحدث دخول أو خروج.

-اختر الجدول الخاص بك في Power Query.

-اضغطى على Add Column ثم Custom Column

أضفى عمود مخصص لتحديد نوع الحدث دخول أو خروج بناء على الوقت. يمكنك استخدام صيغة لتحديد ما إذا كان الوقت في الصباح (AM) هو دخول وما إذا كان في المساء PM هو خروج:

if Text.End([CHECKTIME], 2) = "AM" then "Entry" else "Exit"

فصل التاريخ والوقت:

استخدمى Split Column لفصل التاريخ والوقت في عمود CHECKTIME إلى تاريخ ووقت ،.واخترى العمود CHECKTIME.

انقر على Home ثم Split Columnواختر By Delimiter واختر Space كالفاصل.

تحويل النص إلى تاريخ/وقت:

حددى العمود الذي يحتوي على التاريخ وحوله إلى نوع البيانات Date.

حددى العمود الذي يحتوي على الوقت وحوله إلى نوع البيانات Time.

ومن ثم نجعل  الجدول Pivot:

-استخدم Pivot Column لجعل القيم في عمود نوع الحدث دخول أو خروج كعناوين أعمدة.

-اخترى العمود الذي يحتوي على نوع الحدث.وانقرى على Transform ثم Pivot Column.

-في نافذة Pivot Column، اختر العمود الذي يحتوي على الوقت كقيم.

ومن ثم نقوم بحساب عدد الساعات:

أضفى عمود مخصص جديد لحساب عدد الساعات بين الدخول والخروج.

اضغطى على Add Column ثم Custom Column.

استخدم صيغة لحساب الفرق بين وقت الدخول ووقت الخروج:

Duration.TotalHours([Exit] - [Entry])

واخيرا انقرى على Close & Apply لتطبيق التغييرات والعودة إلى Power BI
وبعد ذلك قومى بإنشاء التقارير التى تريدين.

لم ينجح الامر عندما قمت بعمل هاذه الخطوة 
 

if Text.End([CHECKTIME], 2) = "AM" then "Entry" else "Exit"

وبعدها قمت بعمل Pivot column  اصبحت القيم لدي 0 و 1 
مما جعل هذه الخطوة 

Duration.TotalHours([Exit] - [Entry])

لا تعمل وتعطي نتائج  1 و -1

 

  • 0
نشر

لحساب عدد ساعات العمل وعدد أيام العمل لكل موظف في Power BI باستخدام البيانات الموجودة في الصورة، يمكنك اتباع الخطوات التالية:

 

1. **استيراد البيانات**:

   - تأكد من استيراد الجدول في Power BI.

 

2. **إضافة أعمدة جديدة**:

   - أضف عمودين جديدين، أحدهما لتسجيل التوقيت (وقت الدخول والخروج) والآخر لتسجيل نوع الحركة (دخول أو خروج).

 

3. **تحديد وقت الدخول والخروج**:

   - قم بإنشاء عمود مخصص لتحديد نوع الحركة بناءً على ترتيب السجلات (دخول أو خروج).

 

4. **إنشاء جدول جديد يحتوي على الساعات**:

   - قم بإنشاء جدول جديد يحتوي على الأعمدة التالية: رقم الموظف، التاريخ، وقت الدخول، وقت الخروج.

 

### التعليمات بالتفصيل:

 

**1. استيراد البيانات:**

استورد جدول البصمة إلى Power BI.

 

**2. إضافة أعمدة جديدة:**

في Power BI Desktop، انتقل إلى "Transform Data" لإضافة أعمدة جديدة.

 

**3. تحديد وقت الدخول والخروج:**

قم بإنشاء عمود مخصص لتحديد نوع الحركة 

= if Time.Hour([CHECKTIME]) < 12 then "In" else "Out"

 

**4. تنظيم البيانات:**

يمكنك استخدام DAX لإنشاء جدول منظم للساعات. يمكن أن يكون الكود كالتالي:

 

WorkHours = 

    ADDCOLUMNS(

        SUMMARIZE(

            Table,

            Table[EmployeeID],

            Table[Date],

            "InTime", CALCULATE(MIN(Table[CHECKTIME]), Table[MovementType] = "In"),

            "OutTime", CALCULATE(MAX(Table[CHECKTIME]), Table[MovementType] = "Out")

        ),

        "WorkHours", DATEDIFF([InTime], [OutTime], HO

UR)

    )

 

**5. حساب عدد ساعات العمل وعدد أيام العمل:**

استخدم دالات DAX لحساب الساعات والأيام لكل موظف.

 

لحساب عدد ساعات العمل لكل يوم:

DailyHours = 

SUMMARIZE(

    WorkHours,

    WorkHours[EmployeeID],

    WorkHours[Date],

    "TotalHours", SUM(WorkHours[WorkHour

s])

)

 

لحساب عدد أيام العمل لكل موظف:

DaysWorked = 

SUMMARIZE(

    WorkHours,

    WorkHours[EmployeeID],

    "TotalDays", COUNTROWS(DISTINCT(WorkHours[Date]

))

)

 

### ملاحظات:

- تأكد من ضبط تنسيقات التواريخ والأوقات بشكل صحيح في Power BI.

- يمكن أن تحتاج إلى إجراء بعض التعديلات على البيانات الأصلية لضمان الدقة.

 

باتباع هذه الخطوات، يمكنك حساب عدد ساعات العمل وعدد أيام العمل لكل موظف بنجاح.

  • 0
نشر
بتاريخ 18 ساعة قال امل هاني2:

لم ينجح عندما قمت بعم

لم ينجح الامر عندما قمت بعمل هاذه الخطوة 

if Text.End([CHECKTIME], 2) = "AM" then "Entry" else "Exit"
وبعدها قمت بعمل Pivot column  اصبحت القيم لدي 0 و 1 
مما جعل هذه الخطوة 

Duration.TotalHours([Exit] - [Entry])
لا تعمل وتعطي نتائج  1 و -1

حل مشكلة القيم التي أصبحت 0 و 1 بعد تطبيق خطوة Pivot Column، يجب التأكد من أن التوقيت في عمود CHECKTIME يبقى نصا قبل محاولة تقسيمه. وسنقوم بهذه الخطوات باستخدام Power Query في Power BI:

تأكدى من أن العمود CHECKTIME هو نص إذا لم يكن كذلك، حددى العمود وانقرى على Data Type في الشريط العلوي واخترى"Text".
وقومى بتحويل النص إلى تاريخ/وقت:

-حددى العمود الذي يحتوي على التاريخ وحوله إلى نوع البيانات "Date".

-حددى العمود الذي يحتوي على الوقت وحوله إلى نوع البيانات "Time".
وقومى باضافة عمود جديد مخصص لحساب عدد الساعات بين الدخول والخروج:

اضغطي على Add Column ثم Custom Column.

واستخدمى الصيغة التالية:

Duration.TotalHours(Time.From([Exit]) - Time.From([Entry]))
  • 0
نشر
بتاريخ On 28‏/5‏/2024 at 15:53 قال محمد الحبيب الزين:

لحساب عدد ساعات العمل وعدد أيام العمل لكل موظف في Power BI باستخدام البيانات الموجودة في الصورة، يمكنك اتباع الخطوات التالية:

 

1. **استيراد البيانات**:

   - تأكد من استيراد الجدول في Power BI.

 

2. **إضافة أعمدة جديدة**:

   - أضف عمودين جديدين، أحدهما لتسجيل التوقيت (وقت الدخول والخروج) والآخر لتسجيل نوع الحركة (دخول أو خروج).

 

3. **تحديد وقت الدخول والخروج**:

   - قم بإنشاء عمود مخصص لتحديد نوع الحركة بناءً على ترتيب السجلات (دخول أو خروج).

 

4. **إنشاء جدول جديد يحتوي على الساعات**:

   - قم بإنشاء جدول جديد يحتوي على الأعمدة التالية: رقم الموظف، التاريخ، وقت الدخول، وقت الخروج.

 

### التعليمات بالتفصيل:

 

**1. استيراد البيانات:**

استورد جدول البصمة إلى Power BI.

 

**2. إضافة أعمدة جديدة:**

في Power BI Desktop، انتقل إلى "Transform Data" لإضافة أعمدة جديدة.

 

**3. تحديد وقت الدخول والخروج:**

قم بإنشاء عمود مخصص لتحديد نوع الحركة 

= if Time.Hour([CHECKTIME]) < 12 then "In" else "Out"

 

**4. تنظيم البيانات:**

يمكنك استخدام DAX لإنشاء جدول منظم للساعات. يمكن أن يكون الكود كالتالي:

 

WorkHours = 

    ADDCOLUMNS(

        SUMMARIZE(

            Table,

            Table[EmployeeID],

            Table[Date],

            "InTime", CALCULATE(MIN(Table[CHECKTIME]), Table[MovementType] = "In"),

            "OutTime", CALCULATE(MAX(Table[CHECKTIME]), Table[MovementType] = "Out")

        ),

        "WorkHours", DATEDIFF([InTime], [OutTime], HO

UR)

    )

 

**5. حساب عدد ساعات العمل وعدد أيام العمل:**

استخدم دالات DAX لحساب الساعات والأيام لكل موظف.

 

لحساب عدد ساعات العمل لكل يوم:

DailyHours = 

SUMMARIZE(

    WorkHours,

    WorkHours[EmployeeID],

    WorkHours[Date],

    "TotalHours", SUM(WorkHours[WorkHour

s])

)

 

لحساب عدد أيام العمل لكل موظف:

DaysWorked = 

SUMMARIZE(

    WorkHours,

    WorkHours[EmployeeID],

    "TotalDays", COUNTROWS(DISTINCT(WorkHours[Date]

))

)

 

### ملاحظات:

- تأكد من ضبط تنسيقات التواريخ والأوقات بشكل صحيح في Power BI.

- يمكن أن تحتاج إلى إجراء بعض التعديلات على البيانات الأصلية لضمان الدقة.

 

باتباع هذه الخطوات، يمكنك حساب عدد ساعات العمل وعدد أيام العمل لكل موظف بنجاح.

سلمت 
واذا اردت ان احسب عدد ايام الغياب للموظف  دون ان اقوم بحساب ايام الاجازة الرسمية الجمعه والسبت مع العلم هناك شهور يكون عدد ايام العمل فيها 22 يوم وهناك 21 يوم 

  • 0
نشر

لحساب عدد أيام الغياب للموظف دون احتساب أيام الإجازات الرسمية مثل الجمعة والسبت، مع مراعاة أن عدد أيام العمل يمكن أن يختلف من شهر لآخر، يمكنك اتباع الخطوات التالية في Power BI:

 

1. إنشاء جدول بالأيام العادية (التقويم) لكل شهر:

قم بإنشاء جدول في Power BI يحتوي على جميع الأيام في السنة، مع تحديد ما إذا كان كل يوم هو يوم عمل أم يوم عطلة (جمعة أو سبت).

يمكنك استخدام DAX لإنشاء جدول التقويم كما يلي:

Calendar = 

ADDCOLUMNS(

    CALENDAR(DATE(2024, 1, 1), DATE(2024, 12, 31)),

    "DayOfWeek", WEEKDAY([Date], 2), // 2 تجعل الاثنين هو اليوم الأول من الأسبوع

    "IsWorkDay", IF(WEEKDAY([Date], 2) < 6, TRUE(), FALSE()) // تعتبر من الاثنين إلى الجمعة أيام عمل

 

)

. حساب عدد أيام العمل لكل شهر:

أضف عمودًا في جدول التقويم لحساب عدد أيام العمل لكل شهر:

WorkDaysPerMonth = 

SUMMARIZE(

    Calendar,

    Calendar[Year],

    Calendar[Month],

    "WorkDays", CALCULATE(COUNTROWS(Calendar), Calendar[IsWorkDay] = TRUE

())

)

 

. حساب أيام الحضور لكل موظف:

أنشئ جدولًا يحتوي على أيام الحضور لكل موظف:

EmployeeAttendance = 

SUMMARIZE(

    Table,

    Table[EmployeeID],

    Table[Date],

    "IsPresent"

, 1

)

 

حساب أيام الغياب لكل موظف:

قم بإنشاء جدول يحتوي على جميع الأيام الممكنة لكل موظف:

EmployeeCalendar = 

CROSSJOIN(

    DISTINCT(SELECTCOLUMNS(Table, "EmployeeID", Table[EmployeeID])),

    CALENDAR(DATE(2024, 1, 1), DATE(2024, 12, 31)

)

)

 

أضف عمودًا لتحديد ما إذا كان اليوم هو يوم عمل أم لا:

EmployeeCalendar = 

ADDCOLUMNS(

    EmployeeCalendar,

    "DayOfWeek", WEEKDAY([Date], 2),

    "IsWorkDay", IF(WEEKDAY([Date], 2) < 6, TRUE(), FALSE(

))

)

 

احسب أيام الغياب لكل موظف من خلال المقارنة بين جدول الحضور وجدول الأيام الممكنة:

 

AbsentDays = 

SUMX(

    FILTER(

        EmployeeCalendar,

        EmployeeCalendar[IsWorkDay] = TRUE() &&

        NOT(CONTAINS(EmployeeAttendance, EmployeeAttendance[EmployeeID], EmployeeCalendar[EmployeeID], EmployeeAttendance[Date], EmployeeCalendar[Date]))

    ),

 

    1

)

5. دمج النتائج:

اجمع النتائج مع عدد أيام العمل لكل شهر لحساب أيام الغياب بدقة

EmployeeAbsentDays = 

SUMMARIZE(

    EmployeeCalendar,

    EmployeeCalendar[EmployeeID],

    "AbsentDays", [AbsentDay

s]

)

 

تأكيد الحساب:

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

باتباع هذه الخطوات، ستتمكن من حساب أيام الغياب لكل موظف دون احتساب أيام الإجازات الرسمية مثل الجمعة والسبت، مع مراعاة اختلاف عدد أيام العمل من شهر لآخر

  • 0
نشر
بتاريخ منذ ساعة مضت قال محمد الحبيب الزين:

 

WorkDaysPerMonth = 

SUMMARIZE(

    Calendar,

    Calendar[Year],

    Calendar[Month],

    "WorkDays", CALCULATE(COUNTROWS(Calendar), Calendar[IsWorkDay] = TRUE

())

)

 

 

بتاريخ منذ ساعة مضت قال محمد الحبيب الزين:

 

EmployeeCalendar = 

ADDCOLUMNS(

    EmployeeCalendar,

    "DayOfWeek", WEEKDAY([Date], 2),

    "IsWorkDay", IF(WEEKDAY([Date], 2) < 6, TRUE(), FALSE(

))

)

 

لماذا عند قيامي بوضع هذا الكود كل منهم على حدا تظهر لي رساله الخطأ هذه 
The expression refers to multiple columns. Multiple columns cannot be converted to a scalar value.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...