Time Intelligence Trong DAX Là Gì? Hướng Dẫn Phân Tích Dữ Liệu Theo Thời Gian Trong Power BI

52dd1cf1-70d6-4e3d-93dc-064311dcbe6c

Trong phân tích dữ liệu kinh doanh, các con số đơn lẻ như “Doanh thu tháng này đạt 1 tỷ” thường không mang lại nhiều giá trị nếu thiếu bối cảnh thời gian. Nhà quản trị luôn đặt ra những câu hỏi so sánh: Doanh thu tăng hay giảm so với tháng trước (MoM)? So với cùng kỳ năm ngoái (YoY) thì sao? Tích lũy từ đầu năm đến nay (YTD) đã đạt bao nhiêu % kế hoạch?

Để trả lời những câu hỏi này một cách tự động và chính xác, bạn bắt buộc phải làm chủ Time Intelligence trong DAX. Hãy cùng MCNA Technology School tìm hiểu chi tiết từ lý thuyết đến ứng dụng thực tế qua bài viết dưới đây!

1. Time Intelligence Trong DAX Là Gì?

Time Intelligence (Trí tuệ Thời gian) trong DAX là tập hợp các hàm và kỹ thuật cho phép bạn biến đổi bối cảnh thời gian (Filter Context) để thực hiện các phép tính toán, so sánh và phân tích chỉ số kinh doanh qua các khoảng thời gian khác nhau (Ngày, Tần, Tháng, Quý, Năm).

Dữ liệu Giao dịch ➔ [Time Intelligence DAX] ➔ So sánh YoY, MoM, YTD tự động

Thay vì phải tạo các bảng phụ phức tạp như trên Excel, DAX cung cấp sẵn hơn 40 hàm Time Intelligence giúp bạn dễ dàng “du hành thời gian” trong dữ liệu để lấy ra các con số của quá khứ hoặc tích lũy theo chu kỳ.

2. Điều Kiện Bắt Buộc Để Dùng ĐƯỢC Time Intelligence (Bảng Date Table)

Rất nhiều người mới học Power BI viết hàm Time Intelligence nhưng bị trả về kết quả BLANK hoặc sai số. Lý do là vì họ quên tạo một Bảng Thời Gian Chuẩn (Date Table / Calendar Table).

Yêu cầu bắt buộc của một Date Table chuẩn:

  1. Liên tục (No Gaps): Cột Ngày (Date) phải chứa các ngày liên tục, không được ngắt quãng (kể cả ngày lễ, cuối tuần không có phát sinh giao dịch).

  2. Duy nhất (Unique): Mỗi ngày chỉ xuất hiện đúng 1 lần trong cột Date (Primary Key).

  3. Đủ dải thời gian: Phải bao phủ toàn bộ khoảng thời gian từ ngày bắt đầu đến ngày kết thúc của dữ liệu bán hàng.

  4. Mark as Date Table: Phải đánh dấu bảng này là Bảng Thời Gian chính thức trong Power BI (Right click vào bảng ➔ Mark as Date Table).

Đoạn mã

// Code DAX tạo Bảng Date Table đơn giản chuẩn quốc tế
Date = 
ADDCOLUMNS (
    CALENDAR(DATE(2023, 1, 1), DATE(2026, 12, 31)),
    "Year", YEAR([Date]),
    "MonthNo", MONTH([Date]),
    "MonthName", FORMAT([Date], "MMM"),
    "Quarter", "Q" & FORMAT([Date], "Q"),
    "YearMonth", FORMAT([Date], "YYYY-MM")
)

3. Các Nhóm Hàm Time Intelligence Cốt Lõi Trong DAX

A. Nhóm hàm Tính Tích Lũy (Accumulative / Year-to-Date)

Dùng để cộng dồn chỉ số từ đầu chu kỳ (Đầu năm, đầu quý, đầu tháng) đến thời điểm hiện tại:

  • TOTALYTD / DATESYTD: Tính tích lũy từ đầu năm đến nay.

  • TOTALQTD / DATESQTD: Tính tích lũy từ đầu quý đến nay.

  • TOTALMTD / DATESMTD: Tính tích lũy từ đầu tháng đến nay.

Đoạn mã

// Tính tổng doanh thu tích lũy từ đầu năm đến ngày hiện tại
Doanh Thu YTD = TOTALYTD([TongDoanhThu], 'Date'[Date])

B. Nhóm hàm So Sánh Cùng Kỳ (Shift Context / Comparison)

Dùng để dịch chuyển bối cảnh thời gian về quá khứ để so sánh:

  • SAMEPERIODLASTYEAR: Lấy tập hợp các ngày tương ứng của năm trước.

  • DATEADD: Hàm dịch chuyển thời gian linh hoạt (tiến hoặc lùi N ngày/tháng/quý/năm).

  • PARALLELPERIOD: Dịch chuyển nguyên một chu kỳ hoàn chỉnh (Tháng/Quý/Năm).

Đoạn mã

// 1. Tính Doanh thu cùng kỳ năm ngoái (YoY)
Doanh Thu Nam Ngoai = 
CALCULATE(
    [TongDoanhThu], 
    SAMEPERIODLASTYEAR('Date'[Date])
)

// 2. Tính Doanh thu tháng trước (MoM)
Doanh Thu Thang Truoc = 
CALCULATE(
    [TongDoanhThu], 
    DATEADD('Date'[Date], -1, MONTH)
)

C. Tính Tỷ Lệ Tăng Trưởng (% Growth)

Sau khi có con số kỳ này và kỳ trước, bạn kết hợp với hàm DIVIDE để tính % tăng trưởng an toàn (tránh lỗi chia cho số 0):

Đoạn mã

// Tính % Tăng trưởng so với cùng kỳ năm ngoái (% YoY Growth)
% Tang Truong YoY = 
VAR DoanhThuKyNay = [TongDoanhThu]
VAR DoanhThuNamNgoai = [Doanh Thu Nam Ngoai]
RETURN
    DIVIDE(DoanhThuKyNay - DoanhThuNamNgoai, DoanhThuNamNgoai, 0)

4. Xử Lý Bài Toán Thực Tế: Trường Hợp Năm Tài Chính (Fiscal Year)

Nhiều doanh nghiệp không dùng năm dương lịch (bắt đầu từ 01/01) mà dùng Năm Tài Chính (ví dụ: bắt đầu từ 01/04 hoặc 01/07).

Trong DAX, hàm TOTALYTD cho phép bạn truyền thêm tham số thứ 3 để xử lý bài toán này cực kỳ đơn giản:

Đoạn mã

// Tính Doanh thu YTD cho doanh nghiệp có năm tài chính kết thúc vào ngày 31/03
Doanh Thu Fiscal YTD = TOTALYTD([TongDoanhThu], 'Date'[Date], "03-31")

5. Vì Sao Nên Học Time Intelligence Bài Bản Tại MCNA Technology School?

Viết hàm Time Intelligence không khó về cú pháp, nhưng khó ở tư duy bối cảnh (Filter Context) khi kết hợp với các bộ lọc phức tạp trên Dashboard.

Tiêu chí Khóa học tại MCNA Technology School Tự học / Kiến thức căn bản
Xây dựng Date Table Thiết kế Date Table chuẩn bằng cả Power Query và DAX, tối ưu nén dữ liệu Dùng tính năng Auto Date/Time mặc định làm nặng file
Xử lý ngày lộn xộn Học kỹ thuật tạo Role-playing Dimensions (1 bảng Date nối với OrderDate, ShipDate, DueDate) Lúng túng khi 1 đơn hàng có nhiều mốc thời gian
Bài toán thực tế Giải quyết bài toán so sánh tuần (4-4-5 Calendar), Ngày làm việc (Working Days Only) Chỉ dừng lại ở so sánh Tháng/Năm cơ bản

Học viên MCNA đạt được gì sau khóa học?

  1. Làm chủ 100% các hàm Time Intelligence từ cơ bản đến nâng cao.

  2. Xây dựng hệ thống chỉ số KPI thời gian (YoY, MoM, QoQ, YTD, MTD) hoàn toàn tự động.

  3. Thiết kế các biểu đồ xu hướng (Trendline) chuyên nghiệp, đáp ứng nhu cầu ra quyết định của Lãnh đạo.

 

Tác giả: Lương Hữu Duy – Data Analyst tại MCNA Technology School
📞 Hotline: 0939.866.825 (Mr. Minh Khang)
🌐 Website: mcna.vn
📍 Hà Nội: 30 Trung Liệt, Đống Đa | Liền kề 44B TT2 Văn Quán, Hà Đông
📍TP.HCM: 50B Phan Tây Hồ, Cầu Kiệu
Chỉ mục