Dashboard nhân sự bằng Power BI giúp bạn theo dõi số người đang làm việc, tuyển mới và nghỉ việc theo kỳ. Muốn báo cáo đúng, bạn cần tính nhân sự tại một thời điểm từ ngày vào và ngày nghỉ, thay vì đếm tất cả hồ sơ hoặc lọc trạng thái hiện tại.
Bài này hướng dẫn một mô hình nhỏ, có số liệu giả lập để kiểm tra bằng tay. Bạn sẽ đi từ quy ước dữ liệu đến measure DAX và bố cục trang tổng quan, rồi biết khi nào phải mở rộng mô hình.
Dashboard nhân sự cần trả lời câu hỏi nào?
Với trang đầu tiên, bạn nên tập trung vào ba câu hỏi: cuối kỳ còn bao nhiêu người, kỳ này vào và nghỉ bao nhiêu người, biến động tập trung ở phòng ban nào. Các câu hỏi về lương, chấm công hay hiệu quả tuyển dụng cần dữ liệu riêng; thêm biểu đồ khi chưa đủ nguồn chỉ làm báo cáo khó kiểm chứng.
Trong cách gọi thông dụng, “dashboard nhân sự” có thể là một trang báo cáo Power BI có bộ lọc và biểu đồ tương tác. Trong thuật ngữ sản phẩm, report và dashboard là hai đối tượng khác nhau. Bạn có thể đọc phần phân biệt trong bài dashboard là gì để thống nhất cách trao đổi với người sử dụng.
Chuẩn bị dữ liệu và chốt cách hiểu ngày nghỉ
Ví dụ dưới đây dùng bảng NhanSu, mỗi người có đúng một dòng và một giai đoạn làm việc. Mã nhân viên phải duy nhất. Phòng ban không thay đổi trong khoảng phân tích; người nghỉ rồi quay lại chưa nằm trong phạm vi mô hình này.
| MaNV | PhongBan | NgayVao | NgayNghi |
|---|---|---|---|
| NV01 | Kinh doanh | 01/01/2026 | Trống |
| NV02 | Kế toán | 01/02/2026 | 15/10/2026 |
| NV03 | Kinh doanh | 10/10/2026 | Trống |
| NV04 | Kế toán | 20/10/2026 | Trống |
Đây là dữ liệu giả lập. Bạn có thể dùng Enter data để nhập bảng, sau đó đặt hai cột ngày thành kiểu Date. Ô trống phải là giá trị null thực sự, không phải chữ “Trống”. Khi đọc file theo định dạng ngày Việt Nam, kiểm tra locale để tránh đảo ngày và tháng.
Quy ước của bài: NgayNghi là ngày đầu tiên không còn làm việc. NV02 không được tính vào nhân sự cuối ngày 15/10. Nếu phần mềm nhân sự xuất ngày cuối cùng còn làm việc, bạn cần chuẩn hóa sang quy ước này trước khi áp dụng công thức. Đừng đổi dấu so sánh mà không kiểm tra tác động đến cả lượt nghỉ và số người đầu kỳ.
- Loại bỏ khoảng trắng thừa trong mã, nhưng không gộp những mã khác nhau một cách tùy tiện.
- Kiểm tra mã trùng, ngày vào thiếu và ngày nghỉ trước ngày vào.
- Giữ lại hồ sơ đã nghỉ; xóa họ khỏi nguồn sẽ làm sai lịch sử.
- Chốt phạm vi: tính nhân viên chính thức, thử việc hay cả hai, có gồm cộng tác viên không.
Tạo bảng lịch riêng cho khoảng thời gian phân tích
Để người mới dễ theo dõi, ví dụ dùng bảng lịch không có relationship với NhanSu. Các measure sẽ đọc khoảng ngày từ bảng lịch và tự so sánh với ngày vào, ngày nghỉ. Không tạo quan hệ tự động từ lịch đến NgayVao trong mô hình minh họa này.
Lich = CALENDAR ( DATE ( 2026, 1, 1 ), DATE ( 2026, 12, 31 ) )
Tạo bằng New table. Đưa Lich[Date] vào slicer kiểu Between và chọn từ 01/10/2026 đến 31/10/2026. Dùng chính cột ngày này cho trục thời gian; đừng dùng hierarchy tự động từ NgayVao. Ngày đánh giá là ngày cuối trong ngữ cảnh lọc, nên bạn luôn cần hiển thị kỳ đang chọn.
Đây là thiết kế minh họa cho dữ liệu nhỏ, không phải khuyến nghị bỏ quan hệ ngày trong mọi dự án. Với mô hình lớn, bạn cần cân nhắc bảng sự kiện hoặc snapshot và các vai trò ngày riêng. Bài mô hình dữ liệu dạng sao trong Power BI giúp bạn đặt nền tảng trước khi mở rộng.
Viết DAX đếm nhân sự theo đúng kỳ
Số người cuối kỳ và đầu kỳ
Nhân sự cuối kỳ là người đã vào làm không muộn hơn ngày đánh giá, đồng thời chưa nghỉ tại ngày đó. Nhân sự đầu kỳ được lấy tại cuối ngày liền trước ngày đầu được chọn. Bạn tạo từng measure bên dưới bằng New measure; các công thức dùng dấu phẩy phân cách đối số.
Nhan su cuoi ky =
VAR Moc = MAX ( Lich[Date] )
RETURN
COALESCE (
COUNTROWS (
FILTER (
NhanSu,
NOT ISBLANK ( NhanSu[NgayVao] )
&& NhanSu[NgayVao] <= Moc
&& (
ISBLANK ( NhanSu[NgayNghi] )
|| NhanSu[NgayNghi] > Moc
)
)
),
0
)
Nhan su dau ky =
VAR Moc = MIN ( Lich[Date] ) - 1
RETURN
COALESCE (
COUNTROWS (
FILTER (
NhanSu,
NOT ISBLANK ( NhanSu[NgayVao] )
&& NhanSu[NgayVao] <= Moc
&& (
ISBLANK ( NhanSu[NgayNghi] )
|| NhanSu[NgayNghi] > Moc
)
)
),
0
)
FILTER theo tài liệu Microsoft trả về những dòng thỏa điều kiện. Ở đây, FILTER nhận bảng NhanSu trong ngữ cảnh hiện tại, nên bộ lọc PhongBan vẫn có tác dụng. Không thêm ALL(NhanSu) cho tiện: thao tác đó có thể xóa luôn bộ lọc phòng ban bạn muốn giữ.

Tuyển mới và nghỉ việc trong khoảng ngày
Hai chỉ số này là dòng phát sinh trong kỳ, khác số người tại một thời điểm. Mô hình đang giả định mỗi người có một lượt vào và tối đa một lượt nghỉ. Chọn một khoảng ngày liên tục; nếu chọn các tháng rời nhau, MIN và MAX sẽ tính cả khoảng nằm giữa.
Tuyen moi =
VAR TuNgay = MIN ( Lich[Date] )
VAR DenNgay = MAX ( Lich[Date] )
RETURN
COALESCE (
COUNTROWS (
FILTER (
NhanSu,
NOT ISBLANK ( NhanSu[NgayVao] )
&& NhanSu[NgayVao] >= TuNgay
&& NhanSu[NgayVao] <= DenNgay
)
),
0
)
Nghi viec =
VAR TuNgay = MIN ( Lich[Date] )
VAR DenNgay = MAX ( Lich[Date] )
RETURN
COALESCE (
COUNTROWS (
FILTER (
NhanSu,
NOT ISBLANK ( NhanSu[NgayNghi] )
&& NhanSu[NgayNghi] >= TuNgay
&& NhanSu[NgayNghi] <= DenNgay
)
),
0
)
Tỷ lệ nghỉ việc và cách kiểm tra mẫu số
Trong bài, tỷ lệ nghỉ việc được định nghĩa bằng lượt nghỉ trong kỳ chia trung bình số người đầu và cuối kỳ. Đây là quy ước để minh họa; doanh nghiệp có thể dùng bình quân theo ngày hoặc một định nghĩa khác. Bạn cần ghi rõ cách tính ngay trên báo cáo, nhất là khi quy mô biến động mạnh.
Ty le nghi viec =
DIVIDE (
[Nghi viec],
( [Nhan su dau ky] + [Nhan su cuoi ky] ) / 2
)
Định dạng measure thành Percentage. Hàm DIVIDE mặc định trả BLANK khi mẫu số bằng không; giữ kết quả này giúp bạn phân biệt trường hợp không có cơ sở tính với tỷ lệ bằng 0%. Không tự nhân tỷ lệ tháng với 12 để gọi là tỷ lệ năm.
Đối chiếu bằng tay trước khi vẽ biểu đồ
Với khoảng 01–31/10/2026, đầu kỳ có NV01 và NV02: 2 người. Trong kỳ tuyển NV03 và NV04: 2 người; NV02 nghỉ: 1 người. Cuối kỳ còn NV01, NV03, NV04: 3 người. Phép kiểm tra là 2 + 2 − 1 = 3; tỷ lệ nghỉ theo quy ước trên là 1 / 2,5 = 40%.
Con số 40% xuất phát từ mẫu giả lập rất nhỏ, không phải chuẩn ngành hay dấu hiệu đủ để kết luận tình hình doanh nghiệp. Nếu lọc Kế toán, kết quả phải là đầu kỳ 1, vào 1, nghỉ 1, cuối kỳ 1. Nếu lọc ngày 15/10, NV02 không còn trong số người cuối ngày, nhưng vẫn được tính vào lượt nghỉ ngày đó.
Đừng cộng số người cuối tháng để ra số người cả năm. Tổng của measure cuối kỳ sẽ đánh giá tại ngày cuối ngữ cảnh tổng; đó là hành vi cần thiết cho số dư nhân sự. Khi kiểm thử, thêm các ca vào đúng đầu kỳ, nghỉ đúng cuối kỳ, kỳ không phát sinh và phòng ban không có người.
Bố cục trang tổng quan và giới hạn cần biết
Hàng đầu nên có bộ lọc kỳ và phòng ban, sau đó là bốn thẻ: đầu kỳ, tuyển mới, nghỉ việc, cuối kỳ. Đặt xu hướng nhân sự bên trái, so sánh vào–nghỉ bên phải. Bảng theo phòng ban ở dưới giúp người xem kiểm tra số tổng mà không phải mở từng hồ sơ.

Chỉ so sánh đến ngày mà nguồn đã cập nhật đầy đủ. Nếu bảng lịch kéo đến cuối năm nhưng dữ liệu mới cập nhật hết tháng 10, chọn tháng 12 không tạo ra dự báo đáng tin cậy. Nên hiển thị ngày cập nhật và giới hạn kỳ báo cáo trong quy trình vận hành.
Khi có tái tuyển hoặc chuyển phòng, một dòng mỗi người không còn đủ để tái dựng lịch sử. Bạn cần lưu từng giai đoạn hiệu lực hoặc snapshot định kỳ; kiểm tra giai đoạn chồng lấn và phân biệt đếm người với đếm hợp đồng. Công thức của ví dụ không nên áp thẳng lên nguồn nhiều dòng mỗi người.
Với báo cáo dùng chung, chỉ đưa trường cần thiết vào mô hình. Kiểm thử quyền xem theo vai trò bằng tài khoản người nhận, đặc biệt khi bổ sung lương và thông tin cá nhân. Một trang tổng hợp theo phòng ban thường đủ cho quản lý mà không cần công khai chi tiết từng hồ sơ.
Câu hỏi thường gặp
Có thể lấy cột trạng thái đang làm để đếm tháng trước không?
Không đủ. Trạng thái hiện tại không cho biết người đó còn làm tại tháng trước hay chưa vào công ty. Bạn cần ngày hiệu lực hoặc snapshot lịch sử.
Vì sao COUNTROWS đếm nhiều hơn số nhân viên?
Hãy kiểm tra cấp chi tiết. Nếu mỗi nhân viên có nhiều hợp đồng hoặc dòng chấm công, COUNTROWS sẽ đếm các dòng đó. Ví dụ này chỉ đúng khi mỗi người có một dòng.
Có dùng dữ liệu Excel làm nguồn được không?
Có. Bạn cần bảng nguồn có cấu trúc ổn định, mã duy nhất và kiểu ngày đúng. Sau Refresh, đối chiếu lại số người đầu kỳ, phát sinh và cuối kỳ trước khi chia sẻ.
Tỷ lệ nghỉ việc bao nhiêu là cao?
Không có ngưỡng chung trong bài này. Cần so cùng cách tính, cùng phạm vi và kỳ đủ tương đồng; xem thêm lý do nghỉ, quy mô mẫu và đặc điểm công việc trước khi kết luận.
Nếu bạn đã có file nhân sự nhưng cần người dựng mô hình và kiểm tra chỉ số, hãy chuẩn bị cấu trúc cột, quy ước ngày nghỉ và kỳ báo cáo mong muốn. Bạn có thể tham khảo báo giá làm Power BI để mô tả phạm vi cần hỗ trợ.
Sẵn sàng xây dựng dashboard Power BI?
Kết nối với freelancer Power BI phù hợp, xem báo cáo nhúng ngay trên trình duyệt và tải file .pbix về sau khi thanh toán.
Đào Ngọc Tú
Cộng tác viên chuyên gia tại SenData. Chia sẻ kiến thức về phát triển Power BI, trực quan hóa dữ liệu và best practice business intelligence.

