Khi bắt đầu học DAX trong Power BI, nhiều người thường bị choáng ngợp bởi những công thức dài, rối mắt và khó debug. Nhưng chỉ với một thay đổi nhỏ, sử dụng biến (Variable) cùng cấu trúc VAR – RETURN, bạn có thể viết công thức ngắn gọn, dễ đọc và hiệu quả hơn gấp nhiều lần.
Trong bài viết này, Datapot sẽ giúp bạn hiểu rõ bản chất của VAR – RETURN, từ cú pháp đến ứng dụng thực tế một trong những công cụ nền tảng để nâng cấp tư duy viết DAX “đúng chuẩn dân chuyên”.
Mục lục
Biến (Variable) trong DAX là gì?
Biến trong DAX giống như cách bạn “ghi chú” lại kết quả trung gian, đặt tên cho một giá trị hoặc biểu thức để sử dụng lại nhiều lần trong công thức. Điều này đặc biệt hữu ích khi:
- Biểu thức quá dài hoặc lặp lại nhiều lần.
- Cần kiểm tra từng bước xử lý logic.
- Muốn tối ưu hiệu suất tính toán trong báo cáo Power BI.
Cú pháp cơ bản:
VAR <Tên_biến> = <Giá_trị_hoặc_biểu_thức> RETURN <Biểu_thức_chính_dùng_biến>
Ví dụ đơn giản:
Giả sử bạn muốn tạo measure “Average Revenue” tính tổng doanh thu trung bình mỗi khách hàng:
- Không dùng Variable:
Average Revenue = SUM(Sales[Amount]) / DISTINCTCOUNT(Sales[CustomerID])
- Có dùng Variable:
Average Revenue = VAR TotalSales = SUM(Sales[Amount])
Average Revenue =
VAR TotalSales = SUM(Sales[Amount])
VAR CustomerCount = DISTINCTCOUNT(Sales[CustomerID])
RETURN TotalSales / CustomerCount
Ngoài cú pháp cơ bản, chúng ta còn có thể sử dụng biến theo nhiều cách linh hoạt khác như:
- Dùng nhiều biến VAR liên tiếp:
VAR Quantity = SUM(Sales[Quantity])
VAR UnitPrice = AVERAGE(Sales[Price])
VAR Total = Quantity * UnitPrice
RETURN
Total
- Dùng biến trong biểu thức có hàm lồng nhau (CALCULATE, FILTER, SWITCH…)
Ví dụ dùng biến trong CALCULATE, biến được gọi bên trong điều kiện lọc.
VAR SalesTarget = 1000000
RETURN
CALCULATE([Total Sales],Sales[Amount] > SalesTarget)
- Biến kiểu bảng (table variable)
Biến không chỉ lưu giá trị số, chuỗi, mà còn có thể lưu cả bảng – gọi là table variable.
VAR TopProducts = TOPN(5, ‘Products’, [Sales], DESC)
RETURN SUMX(TopProducts, Products[Sales])
Biến TopProducts ở đây là một bảng tạm, dùng tiếp trong SUMX.
Ưu nhược điểm khi sử dụng VAR trong DAX
Khía cạnh | Ưu điểm | Nhược điểm |
Tính rõ ràng | Đặt tên logic cho từng bước xử lý | Nếu đặt tên thiếu rõ ràng → gây rối |
Tái sử dụng biểu thức | Tránh lặp lại công thức dài | Biến chỉ tồn tại trong một công thức |
Debug dễ dàng | Có thể return từng biến để kiểm tra | Không xem được giá trị biến ngay trong Power BI |
Tối ưu hiệu suất | Biểu thức tính một lần → tiết kiệm tài nguyên | Dễ sai nếu dùng sai context hoặc lạm dụng biến |
Tổ chức logic | Dễ viết công thức nhiều bước | Nếu biến phụ thuộc lẫn nhau quá nhiều → khó đọc |
Ứng dụng thực tế cấu trúc VAR – RETURN
Phân loại khách hàng theo doanh thu
- Không dùng VAR:
Segment User = SWITCH( TRUE(), SUM(‘Internet Sales'[SalesAmount]) > 10000, “VIP”, SUM(‘InternetSales'[SalesAmount]) > 1000, “Standard”, “Basic” )
- Dùng VAR:
VAR SaleAmount = SUM(‘Internet Sales'[SalesAmount])
RETURN SWITCH( TRUE(), SaleAmount > 10000, “VIP”, SaleAmount > 1000, “Standard”, “Basic” )
Không chỉ giúp công thức gọn hơn, bạn còn tránh tính lại nhiều lần biểu thức SUM(…).

Tính doanh thu Top 3 sản phẩm bán chạy nhất
- Không dùng VAR:
SUMX(TOPN(3, ‘Product’, [Revenue], DESC)[Revenue])
Trong đó, [Revenue] là 1 measure đã được định nghĩa sẵn từ trước với công thức là Revenue = SUM(‘Internet Sales'[SalesAmount])
- Dùng VAR:
VAR TopProducts = TOPN(3, ‘Product’, [Revenue], DESC)
RETURN SUMX(TopProducts, [Revenue])
- Kết quả của 2 trường hợp là như nhau:

Trong case study này, việc dùng VAR-RETURN giúp chúng ta tách biệt 2 bước rõ ràng. Bước 1, lấy ra danh sách Top 3 sản phẩm theo Revenue từ trong bảng gốc ban đầu là Product. Lúc này biến TopProducts sẽ giống như 1 bảng tạm lưu danh sách Top 3 sản phẩm. Bước tiếp theo, ta mới dùng hàm SUMX để thực hiện cộng tổng revenue của từng sản phẩm lại và trả ra kết quả. Cách viết theo cấu trúc VAR-RETURN này giúp hàm DAX của chúng ta rõ ràng logic, và nếu cần check lại danh sách top 3 đã đúng chưa, ta có thể tạo Table mới và return biến TopProducts để check.
Vào Model => Chọn “New Table” => Nhập công thức DAX:
Top 3 Product Revenue (Use VAR RETURN) =
VAR TopProducts = TOPN(3, ‘Product’, [Revenue], DESC)
RETURN TopProducts
Ta sẽ có 1 table mới chưa danh sách Top 3 sản phẩm theo revenue để có thể check chi tiết.

Một số lưu ý quan trọng khi dùng VAR – RETURN
- Có thể khai báo nhiều biến liên tiếp và sử dụng biến trước đó trong các phép tính tiếp theo.
- Đặt tên biến ngắn gọn, có ý nghĩa; tránh ký tự đặc biệt hoặc dấu cách.
- Không dùng biến VAR làm tham số đầu tiên trong CALCULATE nếu chưa nắm chắc về context – dễ ra kết quả sai.
Viết DAX “chuyên nghiệp” hơn không cần phức tạp
- Những người viết DAX giỏi không nhất thiết là người nhớ nhiều hàm mà là người tổ chức công thức tốt. Và VAR – RETURN chính là bước đầu để bạn rèn luyện kỹ năng đó.
- Nếu bạn muốn bước ra khỏi vùng an toàn với những phép tính đơn giản, để thực sự hiểu và ứng dụng DAX bài bản, cấu trúc này là thứ bạn cần thành thạo sớm nhất.
Nâng tầm kỹ năng Power BI của bạn cùng Datapot
Trong khóa Power BI Nâng cao tại Datapot, bạn không chỉ học về cấu trúc VAR – RETURN, mà còn:
- Viết DAX chuyên sâu với các hàm tính toán động, rolling window, lọc nâng cao.
- Xây dựng hệ thống báo cáo phức tạp có thể tùy biến theo nhiều cấp quản lý.
- Làm việc với project thực tế, được kèm cặp 1-1 cùng giảng viên kinh nghiệm.
Khóa học dành cho những bạn đã có nền tảng cơ bản và muốn trở thành Data Analyst “biết dùng DAX” chứ không chỉ “vẽ dashboard”.
Tạm kết
Hãy bắt đầu từ những công thức nhỏ, luyện tập viết VAR – RETURN thường xuyên bạn sẽ thấy:
- Công thức của mình gọn, dễ đọc hơn.
- Debug nhanh hơn.
- Và quan trọng nhất: nâng cấp tư duy phân tích như một chuyên gia dữ liệu thực thụ.
Cũng như mọi kỹ năng trong Power BI, muốn làm được bạn phải hiểu đúng ngay từ đầu.
Kết nối thêm với chúng mình
Fanpage
Cộng đồng Data, AI và Tự động hóa 200,000+ thành viên
- Data Analytics and Business Intelligence Vietnam
- Data Science Explorer Community: Cộng đồng khám phá Khoa học dữ liệu – FTU
- Cùng bớt việc với Power BI, Power Automate, Power Apps
- Luyện thi chứng chỉ Microsoft (PL300, DP900, DP080, PL900,…)
- DATAPOT ALUMNI
Youtube
Zalo
- [DATAPOT] Power BI Hub
- [DATAPOT] Power Platform Hub
- Data, AI & Tự động hoá cho Doanh nghiệp bứt phá
- Cộng đồng Data, AI và tự động hóa
- Datapot Internship 2025
- [DATAPOT] Phân tích dữ liệu Performance Ads
Chúc bạn luôn thành công trong công việc và cuộc sống!
