Xây dựng Hệ thống Quản lý Tồn kho từ A-Z: Dữ liệu giả lập, SharePoint và Power BI

linhmaipham
linhmaipham

6/16/20252 phút đọc

3.5k
1
Xây dựng Hệ thống Quản lý Tồn kho từ A-Z: Dữ liệu giả lập, SharePoint và Power BI

Xây dựng Hệ thống Quản lý Tồn kho từ A-Z: Dữ liệu giả lập, SharePoint và Power BI

Trong blog này, mình sẽ chia sẻ về một dự án mình vừa hoàn thành, kết hợp giữa mô hình dữ liệu, Python, làm việc nhóm trên nền tảng đám mây và dashboard Power BI. Mình bắt đầu bằng việc tạo dữ liệu giả lập, rồi xây dựng hệ thống trực quan giúp theo dõi từ luồng hàng hóa đến hiệu suất nhân viên. Mời bạn cùng tham khảo cách mình thực hiện dự án này.

 

1. Tạo dữ liệu giả lập bằng Python

Thay vì sử dụng dữ liệu mẫu đơn giản, mình muốn dự án này mang tính thực tế nhiều nhất có thể. Vì vậy, mình đã sử dụng Python để tạo ra hàng nghìn dòng dữ liệu, tích hợp các quy tắc nghiệp vụ giống như trong môi trường kinh doanh thật. Ví dụ: nhân viên chỉ được phép thực hiện giao dịch trong thời gian làm việc, sản phẩm ngừng kinh doanh sẽ không xuất hiện trong các phiếu nhập mới, và khách hàng bị ngừng hoạt động sẽ không được giao hàng. Ngoài ra, mình còn sử dụng tên tiếng Việt và địa lý Việt Nam (tỉnh, huyện cho nhà cung cấp và kho) để nội địa hóa dữ liệu.

1.1. Chuẩn bị dữ liệu tham chiếu và logic

Mình tạo các bảng dimension chính như: nhân viên, sản phẩm, nhà cung cấp, khách hàng, kho hàng – với đầy đủ thông tin chi tiết như tên, trạng thái, địa chỉ, ngày bắt đầu/kết thúc hợp đồng, v.v. Ví dụ, địa chỉ kho hàng được ghép từ tên đường, quận/huyện và tỉnh/thành thực tế tại Việt Nam như sau:

PYTHON
import pandas as pd
import random
from unidecode import unidecode
from openpyxl import load_workbook

# Danh sách thành phố và quận/huyện tương ứng
ds_thanh_pho = {
    "Ha Noi": ["Ba Dinh", "Hoan Kiem", "Dong Da", "Cau Giay", "Hai Ba Trung"],
    "TP HCM": ["Quan 1", "Quan 3", "Quan 5", "Phu Nhuan", "Tan Binh"],
    "Da Nang": ["Hai Chau", "Thanh Khe", "Ngu Hanh Son", "Lien Chieu", "Son Tra"]

1.2. Tạo bảng fact theo quy tắc kinh doanh

Sau khi đã có các bảng dimensions, mình tạo bảng giao dịch nhập kho (fact_stockin) và xuất kho (fact_stockout) với các logic thực tế:

  • Chỉ nhân viên đang hoạt động hoặc nghỉ đúng quy trình mới được thao tác.

  • Sản phẩm không được phép đã ngừng kinh doanh tại thời điểm giao dịch.

  • Kho và nhà cung cấp phải còn hoạt động.

  • Mỗi giao dịch rơi vào các ngày hợp lệ trong năm 2024.

Mỗi giao dịch nhập kho gồm nhiều sản phẩm, có điều chỉnh nhẹ giá mua theo thực tế thị trường. Dữ liệu được xuất ra các sheet Excel như Phiếu nhập kho, Phiếu xuất kho, Chi tiết nhập kho, Chi tiết xuất kho để đưa vào Power BI phân tích.

Sau đây là phần code Python cho bảng Phiếu nhập kho Chi tiết nhập kho

PYTHON
import pandas as pd
import numpy as np
from datetime import datetime, timedelta
import random
import os

# Đường dẫn file Excel
file_path = "L:\KPIM\Project - Mobile Inventory Management\Data Mock Up\Mock up data.xlsx"

# Load dữ liệu danh mục

1.3. Kết quả

Bộ dữ liệu giả lập cuối cùng gồm hàng nghìn dòng, mô phỏng đầy đủ hoạt động kinh doanh của một công ty bán lẻ điện thoại tại Việt Nam:

  • Tên và địa chỉ đúng chuẩn tiếng Việt

  • Logic thời gian chính xác cho nhân viên và sản phẩm

  • Kết nối logic giữa các bảng dimension và transaction

Từ đó mình có thể tạo báo cáo Power BI với các dashboard về hiệu suất nhân viên, hoạt động nhà cung cấp, xu hướng tồn kho và phân bổ hàng hóa.

 

2. Thiết kế Mô hình Dữ liệu

Trước khi viết bất kỳ đoạn mã hay tạo biểu đồ nào, mình dành thời gian phác thảo mô hình dữ liệu. Mình sử dụng star schema để tối ưu hóa cho việc phân tích. Các bảng dimension chính gồm: sản phẩm, nhà cung cấp, khách hàng, nhân viên, kho hàng, và bảng ngày. Các bảng fact ghi nhận giao dịch nhập và xuất kho – kèm theo các chi tiết cho từng phiếu.

Điểm mình chú trọng là xây dựng quan hệ giữa các bảng sao cho các công thức DAX trong Power BI có thể thực hiện dễ dàng. Việc có mô hình rõ ràng ngay từ đầu giúp mình tiết kiệm rất nhiều thời gian khi tạo dashboard sau đó.

image-block

 

3. Đẩy dữ liệu lên SharePoint List

Để cộng tác dễ dàng hơn và đồng bộ với Power BI, mình chuyển dữ liệu từ Excel lên SharePoint Lists. Dữ liệu được chia nhỏ thành từng đợt khoảng 10–30 dòng để tránh lỗi hoặc lag khi thao tác trực tiếp trên giao diện web.

Trong quá trình này, mình gặp vài lỗi định dạng – đặc biệt là ngày tháng. Excel dùng định dạng MM/DD/YYYY, còn SharePoint lại đọc theo DD/MM/YYYY, dẫn đến sai lệch dữ liệu. Mình đã chỉnh lại định dạng cột trong Excel và thay đổi regional settings trong cả Excel và SharePoint để khớp nhau.

Khi dữ liệu đã được đưa lên đầy đủ, mình kết nối Power BI với các SharePoint Lists bằng SharePoint Online List connector. Nhờ vậy, báo cáo có thể cập nhật tự động chỉ bằng một nút refresh. Mặc dù mình chưa tự động hóa toàn bộ quy trình, nhưng cấu trúc này vẫn mô phỏng khá sát môi trường làm việc thực tế.

 

4. Các Dashboard trong Power BI

Báo cáo gồm nhiều dashboard mô phỏng đầy đủ hoạt động tồn kho của một công ty bán lẻ điện thoại tại Việt Nam. Tất cả được xây dựng từ dữ liệu giả lập, xử lý trong Excel, và kết nối qua SharePoint – mang đến cái nhìn thực tế và hỗ trợ ra quyết định hiệu quả.

 

📦 Tổng quan tồn kho 2024

Trang đầu của báo cáo là cái nhìn tổng thể về tình trạng tồn kho:

  • Tổng số lượng tồn: 47,533 đơn vị
  • Tổng giá trị: 19 triệu USD
  • Tỷ lệ tồn kho/doanh thu: 3.34
  • Vòng quay hàng tồn: 25.12%

Mình dùng các biểu đồ đường, cột, và KPI cards để theo dõi xu hướng. Một biểu đồ mình thích là so sánh nhập – xuất trong 12 tháng, giúp nhận ra các mô hình theo mùa. 

image-block

 

🔄 Xu hướng cung – cầu 2024

Dashboard này phân tích độ phù hợp giữa cung ứng và nhu cầu:

  • Khách hàng: Giá trị đơn trung bình $58K, tỷ lệ giữ chân 36%, phân khúc B2B, công nghiệp, hàng hải.
  • Nhà cung cấp: Giá trị nhập trung bình theo từng nhà cung cấp, bản đồ phân bố quanh TP.HCM và Hà Nội.

Một insight thú vị là có những nhà cung cấp giao hàng với khối lượng lớn ổn định, trong khi có nhà cung cấp chỉ tăng mạnh vào một vài tháng – giải thích được các đột biến nhập kho.

image-block

 

🏢 Phân tích kho hàng 2024

Dashboard này tập trung vào sự phân bổ tồn kho theo từng kho:

  • Bảng tùy chỉnh hiển thị số lượng nhập, xuất, và tồn theo từng tháng.
  • Ví dụ: Kho 1 tăng 7.11%, Kho 2 giảm nhẹ → cho thấy nơi nào đang tăng nhu cầu hoặc chưa tận dụng tốt không gian.
  • Cũng có biểu đồ phân tích theo thành phố/quận giúp nhận diện xu hướng logistics.
image-block

 

👷 Phân tích nhân viên

Đây là phần mình rất thích vì nó thể hiện “con người đằng sau dữ liệu”:

  • Biểu đồ cột ngang cho biết số lượng sản phẩm xử lý bởi từng nhân viên – có thể phân tích được ai đang làm việc hiệu quả nhất.
  • Timeline cá nhân thể hiện ngày bắt đầu – kết thúc làm việc của từng người, giúp đánh giá năng suất dựa trên thời gian thực tế.
  • Biểu đồ tròn nhỏ nhóm nhân viên theo trạng thái (đang làm việc, đã nghỉ việc) – cung cấp cái nhìn về tình hình nhân sự hiện tại.
image-block

 

5. Mình học được gì

Dự án này giúp mình phát triển toàn diện – từ thiết kế mô hình dữ liệu mở rộng, viết logic thực tế bằng Python, thao tác SharePoint, cho đến xây dựng dashboard Power BI dễ hiểu, trực quan. Mình thấy được giá trị của việc có dữ liệu sạch, mối quan hệ rõ ràng từ đầu – vì nó khiến toàn bộ phần sau dễ hơn rất nhiều.

Muốn xem thử?

Bạn có thể xem bản mẫu của báo cáo tại đây: