Time Intelligence trong Power BI là công cụ không thể thiếu cho Financial Analysis — giúp bạn tính toán YTD Returns, so sánh Year-over-Year Growth, và phát hiện xu hướng hiệu suất đầu tư theo thời gian. Nếu bạn đang làm việc với dữ liệu tài chính và muốn xây dựng dashboard phân tích chuyên nghiệp, việc nắm vững Time Intelligence Power BI Financial Analysis là bước đi bắt buộc.
Bài viết này sẽ hướng dẫn bạn từng bước ứng dụng Time Intelligence trong Power BI cho financial analysis — từ việc thiết lập Date Table chuẩn, viết các công thức DAX cho YTD Returns, đến cách phát hiện Performance Trends trên dashboard Power BI.
Series “Financial Data Analytics with Power BI” — by MCNA Technology School.
📌 Đây là bài số 8 trong series Power BI Financial Analytics tại MCNA:
- Bài 4: Designing a Financial Data Model in Power BI
- Bài 5: Analyzing Portfolio Performance in Power BI
- Bài 6: Building Asset Allocation Visualizations in Power BI
- Bài 7: DAX Calculate Investment Returns Power BI
- Bài 8: Time Intelligence for Financial Analysis: YTD Returns ← Bạn đang đọc
- Bài 9: Risk Management Dashboard — sắp ra mắt
Mục Lục
- Time Intelligence là gì và tại sao quan trọng trong Financial Analysis?
- Xây dựng Date Table — Nền tảng của Time Intelligence trong Power BI
- Tính YTD Returns với Time Intelligence Power BI cho Financial Analysis
- So sánh hiệu suất cùng kỳ năm trước (YoY Analysis)
- Rolling Returns — Time Intelligence Power BI phân tích xu hướng
- MTD và QTD — Theo dõi hiệu suất ngắn hạn
- Xử lý Fiscal Year
- Debugging — Khi Time Intelligence trả về BLANK
- Dashboard Financial Analysis với Time Intelligence trong Power BI
- Best Practices — Tối ưu Time Intelligence Power BI cho Financial Analysis
1. Time Intelligence là gì và tại sao quan trọng trong Financial Analysis?
Time Intelligence là tập hợp các hàm DAX cho phép bạn thao tác và phân tích dữ liệu dựa trên ngữ cảnh thời gian — so sánh giữa các tháng, quý, năm mà không cần phải viết logic phức tạp thủ công. Khi kết hợp Time Intelligence trong Power BI cho financial analysis, bạn có thể trả lời mọi câu hỏi về hiệu suất đầu tư mà stakeholder đặt ra:
- YTD Returns: Danh mục đầu tư đã sinh lời bao nhiêu phần trăm tính từ đầu năm đến nay?
- YoY Comparison: Lợi nhuận quý này so với cùng kỳ năm ngoái thay đổi như thế nào?
- Rolling Performance: Xu hướng 12 tháng gần nhất có đang tăng trưởng bền vững không?
- MTD / QTD: Portfolio performance trong tháng này hoặc quý hiện tại ra sao?
Nếu không có Time Intelligence, bạn sẽ phải viết hàng chục dòng FILTER lồng nhau — vừa khó đọc, vừa chậm. Với DAX Time Intelligence, chỉ cần 1–2 dòng là đủ.
2. Xây dựng Date Table — Nền tảng của Time Intelligence trong Power BI
Trước khi sử dụng bất kỳ hàm Time Intelligence nào, bạn bắt buộc phải có Date Table chuẩn. Đây là yêu cầu không thể bỏ qua — thiếu Date Table, tất cả hàm TOTALYTD, SAMEPERIODLASTYEAR, DATESYTD đều sẽ trả về kết quả sai hoặc BLANK.
2.1 Tạo Date Table bằng DAX
DateTable =
ADDCOLUMNS(
CALENDAR(DATE(2018, 1, 1), DATE(2026, 12, 31)),
"Year", YEAR([Date]),
"Quarter", "Q" & FORMAT([Date], "Q"),
"MonthNumber", MONTH([Date]),
"MonthName", FORMAT([Date], "MMMM"),
"YearMonth", FORMAT([Date], "YYYY-MM"),
"WeekDay", WEEKDAY([Date], 2),
"IsWeekend", IF(WEEKDAY([Date], 2) > 5, TRUE(), FALSE())
)
2.2 Mark as Date Table
Sau khi tạo xong, bạn cần thực hiện một bước quan trọng: vào Model View → chuột phải vào DateTable → Mark as Date Table → chọn cột Date. Nếu thiếu bước này, Power BI sẽ không kích hoạt đầy đủ các hàm Time Intelligence.
Checklist cho Date Table chuẩn:
- Chứa tất cả ngày liên tục, không có khoảng trống (gaps)
- Bắt đầu từ ngày 1 tháng 1 và kết thúc ngày 31 tháng 12
- Cột Date có kiểu dữ liệu
Datevà chứa giá trị duy nhất (unique) - Đã được “Mark as Date Table” trong Model View
- Có relationship với Fact Table qua cột ngày tương ứng
3. Tính YTD Returns với Time Intelligence Power BI cho Financial Analysis
YTD (Year-to-Date) Returns là chỉ số cho biết tổng lợi nhuận tích lũy của portfolio từ ngày 1 tháng 1 đến thời điểm hiện tại. Đây là ứng dụng quan trọng nhất của Time Intelligence trong Power BI cho financial analysis — metric mà mọi nhà đầu tư và wealth manager đều cần theo dõi hàng ngày.
3.1 Cách 1: TOTALYTD — Đơn giản và trực tiếp
Portfolio Return YTD =
TOTALYTD(
SUM(PortfolioReturns[ReturnAmount]),
DateTable[Date]
)
Cú pháp của TOTALYTD rất ngắn gọn: chỉ cần truyền vào expression cần tính (ở đây là tổng Return Amount) và cột Date. Hàm sẽ tự động filter lấy tất cả ngày từ đầu năm đến ngày cuối cùng trong filter context hiện tại.
3.2 Cách 2: CALCULATE + DATESYTD — Linh hoạt hơn
Portfolio Return YTD v2 =
CALCULATE(
SUM(PortfolioReturns[ReturnAmount]),
DATESYTD(DateTable[Date])
)
Cách này cho phép bạn thêm các filter bổ sung vào CALCULATE — hữu ích khi cần kết hợp thêm điều kiện lọc theo fund type, asset class, hoặc manager.
3.3 Khi nào dùng TOTALYTD, khi nào dùng CALCULATE + DATESYTD?
| Tiêu chí | TOTALYTD | CALCULATE + DATESYTD |
|---|---|---|
| Độ đơn giản | Cú pháp ngắn gọn hơn | Dài hơn nhưng rõ ràng |
| Linh hoạt | Hạn chế khi thêm filter | Dễ kết hợp thêm điều kiện |
| Fiscal Year | Hỗ trợ qua tham số year_end_date | Hỗ trợ tương tự |
| Performance | Nhanh hơn một chút (optimized) | Tương đương |
| Khuyến nghị | Dùng cho calendar year chuẩn | Dùng khi cần logic phức tạp |
3.4 YTD Return Percentage
Để tính phần trăm YTD Return (thay vì giá trị tuyệt đối), bạn cần biết giá trị portfolio đầu năm:
YTD Return % =
VAR _StartValue =
CALCULATE(
SUM(PortfolioReturns[PortfolioValue]),
FILTER(
ALL(DateTable),
DateTable[Date] = DATE(YEAR(MAX(DateTable[Date])), 1, 1)
)
)
VAR _CurrentValue = SUM(PortfolioReturns[PortfolioValue])
RETURN
DIVIDE(_CurrentValue - _StartValue, _StartValue, 0)
Measure này sử dụng VAR để khai báo biến — một best practice giúp công thức dễ đọc và tối ưu hiệu năng hơn so với việc lặp lại biểu thức.
4. So sánh hiệu suất với cùng kỳ năm trước (YoY Analysis)
Ngoài YTD, một câu hỏi thường gặp trong financial analysis là: “So với cùng kỳ năm ngoái, hiệu suất tăng hay giảm?” Đây chính là bài toán Year-over-Year (YoY).
4.1 Portfolio Return cùng kỳ năm trước
Return Same Period Last Year =
CALCULATE(
SUM(PortfolioReturns[ReturnAmount]),
SAMEPERIODLASTYEAR(DateTable[Date])
)
Hàm SAMEPERIODLASTYEAR tự động dịch chuyển filter context lùi đúng 1 năm. Nếu dashboard đang hiển thị tháng 3/2026, measure này sẽ trả về kết quả của tháng 3/2025.
4.2 Tính YoY Growth %
YoY Growth % =
VAR _CurrentReturn = SUM(PortfolioReturns[ReturnAmount])
VAR _LastYearReturn =
CALCULATE(
SUM(PortfolioReturns[ReturnAmount]),
SAMEPERIODLASTYEAR(DateTable[Date])
)
RETURN
DIVIDE(
_CurrentReturn - _LastYearReturn,
ABS(_LastYearReturn),
0
)
Lưu ý sử dụng ABS() ở mẫu số để tránh trường hợp lợi nhuận năm trước là số âm dẫn đến kết quả phần trăm bị đảo ngược.
4.3 YTD so với cùng kỳ YTD năm trước (PYTD)
Prior YTD Return =
CALCULATE(
[Portfolio Return YTD],
SAMEPERIODLASTYEAR(DateTable[Date])
)
Measure này kết hợp YTD và YoY — so sánh tích lũy từ đầu năm nay với tích lũy cùng kỳ năm trước. Rất hữu ích để đánh giá liệu portfolio có đang outperform hay underperform so với benchmark thời gian.
5. Rolling Returns — Time Intelligence Power BI phân tích xu hướng liên tục
Rolling Returns (hay còn gọi là trailing returns) giúp làm mượt biến động ngắn hạn và cho thấy xu hướng thực sự của portfolio.
5.1 Rolling 12-Month Return
Rolling 12M Return =
CALCULATE(
SUM(PortfolioReturns[ReturnAmount]),
DATESINPERIOD(
DateTable[Date],
MAX(DateTable[Date]),
-12,
MONTH
)
)
Hàm DATESINPERIOD tạo ra một khoảng ngày 12 tháng tính ngược từ ngày cuối cùng trong filter context. Đây là cách phổ biến nhất để tính trailing returns trong financial reporting.
5.2 Running Total — Tích lũy liên tục
Cumulative Return =
CALCULATE(
SUM(PortfolioReturns[ReturnAmount]),
FILTER(
ALL(DateTable),
DateTable[Date] <= MAX(DateTable[Date])
)
)
Running Total cho thấy tổng tích lũy từ ngày đầu tiên trong dataset đến thời điểm hiện tại — đặc biệt hữu ích khi vẽ biểu đồ đường (line chart) thể hiện đường cong tăng trưởng của portfolio.
6. MTD và QTD — Theo dõi hiệu suất ngắn hạn
Không chỉ cần nhìn bức tranh cả năm, các financial analyst cũng cần theo dõi hiệu suất trong tháng hiện tại (MTD) và quý hiện tại (QTD).
-- Month-to-Date Return
MTD Return =
TOTALMTD(
SUM(PortfolioReturns[ReturnAmount]),
DateTable[Date]
)
-- Quarter-to-Date Return
QTD Return =
TOTALQTD(
SUM(PortfolioReturns[ReturnAmount]),
DateTable[Date]
)
Khi kết hợp cả MTD, QTD, và YTD trên cùng một dashboard, bạn sẽ có cái nhìn đa chiều từ ngắn hạn đến dài hạn — giúp phát hiện sớm các tín hiệu thay đổi xu hướng.
7. Xử lý Fiscal Year — Khi năm tài chính không bắt đầu từ tháng 1
Nhiều tổ chức tài chính có năm tài chính (Fiscal Year) bắt đầu từ tháng 4 hoặc tháng 7 thay vì tháng 1. Để xử lý tình huống này, bạn chỉ cần thêm tham số year_end_date:
-- Fiscal Year ending June 30
Fiscal YTD Return =
TOTALYTD(
SUM(PortfolioReturns[ReturnAmount]),
DateTable[Date],
"6/30"
)
Tham số "6/30" cho Power BI biết năm tài chính kết thúc vào ngày 30 tháng 6. Khi đó, YTD sẽ tính từ ngày 1 tháng 7 thay vì 1 tháng 1.
Ngoài ra, bạn nên bổ sung các cột FiscalYear, FiscalQuarter, và FiscalMonth vào Date Table để việc filter và visualize trên dashboard chính xác hơn.
8. Debugging — Khi Time Intelligence trả về BLANK hoặc sai kết quả
Đây là phần mà rất nhiều người gặp phải khi mới làm việc với Time Intelligence. Dưới đây là checklist debug:
| Triệu chứng | Nguyên nhân phổ biến | Cách khắc phục |
|---|---|---|
| Measure trả về BLANK | Date Table chưa được Mark as Date Table | Model View → Mark as Date Table |
| Giá trị YTD không đúng | Date Table có khoảng trống (gaps) | Đảm bảo mọi ngày liên tục từ 1/1 đến 31/12 |
| SAMEPERIODLASTYEAR = BLANK | Không có data cho năm trước | Kiểm tra phạm vi dữ liệu Fact Table |
| Kết quả lạ khi có slicer | Filter context xung đột | Dùng ALL() để xóa filter không mong muốn |
| YTD bao gồm ngày tương lai | Data chứa ngày trong tương lai | Thêm filter DateTable[Date] <= TODAY() |
Một tip quan trọng: tránh lồng nhiều hàm Time Intelligence vào nhau (nested). Thay vào đó, tạo từng measure riêng rồi tham chiếu — vừa dễ debug, vừa tối ưu performance.
9. Dashboard Financial Analysis với Time Intelligence trong Power BI
Sau khi đã xây dựng đầy đủ các measures, bước tiếp theo là tổ chức chúng thành một dashboard trực quan. Dưới đây là layout gợi ý cho một Financial Performance Dashboard:
- KPI Cards (hàng trên cùng): YTD Return %, MTD Return, QTD Return, YoY Growth %
- Line Chart: Cumulative Return theo thời gian — trục X là tháng, trục Y là giá trị tích lũy
- Clustered Bar Chart: So sánh Return hiện tại vs cùng kỳ năm trước theo từng tháng
- Matrix Table: Chi tiết theo Asset Class / Fund — các cột: MTD, QTD, YTD, YoY
- Slicer: Year, Quarter, Asset Class, Fund Manager
Đặt tất cả measures vào một Display Folder có tên “Time Intelligence” trong Model View để giữ data model gọn gàng và chuyên nghiệp.
10. Best Practices — Tối ưu Time Intelligence Power BI cho Financial Analysis
Sau khi đã nắm vững kỹ thuật, dưới đây là những best practices giúp bạn viết DAX Time Intelligence sạch, nhanh, và dễ bảo trì:
- Luôn tạo Date Table riêng: Không dùng date column từ Fact Table làm trục thời gian.
- Dùng VAR: Khai báo biến giúp tránh tính toán lặp và tăng readability.
- Tách measure nhỏ: Tạo base measure (ví dụ:
Total Return) rồi build YTD, YoY, Rolling trên nền đó. - Test edge cases: Kiểm tra tại ranh giới năm, quý, tháng — nơi Time Intelligence thường cho kết quả không mong đợi nếu Date Table không hoàn chỉnh.
- Cân nhắc Fiscal vs Calendar year: Nếu tổ chức dùng cả hai, tạo song song hai bộ measures rõ ràng.
- Đặt tên measure có ý nghĩa:
Portfolio Return YTDrõ ràng hơnMeasure1— điều này giúp đồng đội dễ maintain. - Sử dụng DIVIDE() thay cho phép chia “/”: Tránh lỗi chia cho 0 mà không cần viết IF.
Kết luận
Việc thành thạo Time Intelligence Power BI cho financial analysis không chỉ là biết viết một bộ hàm DAX — nó là khả năng kể câu chuyện hiệu suất tài chính theo thời gian. Từ YTD Returns giúp nhà đầu tư biết portfolio đang ở đâu trong năm, đến YoY Growth cho thấy bức tranh tăng trưởng dài hạn, đến Rolling Returns làm mượt biến động ngắn hạn — tất cả đều là công cụ thiết yếu cho bất kỳ Financial Data Analyst nào.
Hãy bắt đầu từ việc xây dựng một Date Table chuẩn, viết từng measure đơn giản, rồi dần dần kết hợp chúng thành dashboard hoàn chỉnh. Khi bạn thành thạo Time Intelligence trong Power BI, bạn sẽ có khả năng biến dữ liệu tài chính thô thành những insight có giá trị cho financial analysis — đúng cách mà thị trường đang cần.
Bài viết tiếp theo trong series: chúng ta sẽ tìm hiểu cách xây dựng Risk-Adjusted Return Measures (Sharpe Ratio, Sortino Ratio) trong Power BI — kết hợp Time Intelligence với statistical analysis.
Tài liệu tham khảo
- 📘 DAX Time Intelligence Function Reference — Microsoft Docs
- 📘 Star Schema Design Guidance — Microsoft Docs
- 📘 Portfolio Performance Evaluation — CFA Institute
- 📘 DAX Studio — Công cụ debug và tối ưu DAX measures
Bài viết liên quan tại MCNA
- 👉 Using DAX to Calculate Investment Returns and Portfolio Metrics
- 👉 Analyzing Portfolio Performance in Power BI
- 👉 Designing a Financial Data Model in Power BI
- 👉 Khóa học Power BI & Business Intelligence tại MCNA
- 👉 Blog Data Analytics MCNA
Về tác giả
Triều Đặng — Middle Data Analyst tại MCNA Technology School. Chuyên về Financial Data Analytics, Power BI và Automated Reporting trong lĩnh vực Wealth Management.
Về MCNA Technology School
MCNA Technology School là đơn vị tiên phong đào tạo AI, Big Data, Business Intelligence tại Việt Nam. Chuyên sâu về Power BI, Python, SQL và Data Analytics — đối tác đào tạo của 300+ doanh nghiệp.
Đối tác đào tạo tiêu biểu: Viettel Global, Masan Group, Techcombank, VPBank, Daikin.
Liên hệ & kết nối:
- 🌐 Website: mcna.vn
- 📘 Facebook: facebook.com/mcnatechnologyschool
- ▶️ YouTube: youtube.com/@mcna.technology.school
- 💼 LinkedIn: linkedin.com/company/mcna-vn
- 📞 Hotline: 0939.866.825 (Mr. Minh Khang)
Cơ sở đào tạo:
- 📍 Hà Nội — CS1: 30 Trung Liệt, Đống Đa, Hà Nội
- 📍 Hà Nội — CS2: Liền kề 44B, TT2, Văn Quán, Hà Đông, Hà Nội
- 📍 TP.HCM: The BIB Space, 50B Phan Tây Hồ, Cầu Kiệu, TPHCM

