Hãy cùng tìm hiểu DAX là gì và khám phá các cú pháp cùng hàm DAX cơ bản bạn cần để nâng tầm kỹ năng Power BI của mình lên một tầm cao mới.

DAX là gì?
DAX (Data Analysis Expressions) là xương sống của mọi phép tính bạn có thể thực hiện trong Power BI. Các công thức DAX rất linh hoạt, năng động và cực kỳ mạnh mẽ – chúng cho phép bạn tạo ra các trường (field) và bảng mới trong mô hình dữ liệu của mình. DAX là một ngôn ngữ công thức được sử dụng trong Power BI, Power Pivot và các mô hình SSAS Tabular.
Các công thức DAX được tạo thành từ 3 thành phần cốt lõi, và hướng dẫn này sẽ đề cập đến từng thành phần:
- Cú pháp (Syntax): Cú pháp DAX đúng bao gồm nhiều yếu tố khác nhau, một số trong đó là phổ biến đối với tất cả các công thức.
- Hàm (Functions): Các hàm DAX là những công thức được định nghĩa sẵn, nhận vào một số tham số và thực hiện một phép tính cụ thể.
- Ngữ cảnh (Context): DAX sử dụng ngữ cảnh để xác định những hàng nào nên được sử dụng để thực hiện một phép tính.
Tại sao DAX lại quan trọng trong Power BI?
Các công thức DAX cho phép bạn khai thác tối đa dữ liệu và Power BI để giải quyết các vấn đề kinh doanh một cách hiệu quả.
Bạn có thể thực hiện các phép tính đơn giản (như tổng hoặc trung bình đơn thuần) và tạo hầu hết các biểu đồ mà không cần dùng đến DAX. Ví dụ, nếu bạn muốn tạo một biểu đồ đơn giản hiển thị tổng lợi nhuận, bạn có thể kéo trường "lợi nhuận" vào phần Giá trị (Values) của biểu đồ, và nó sẽ tự động tính tổng các hàng trong trường đó. Tuy nhiên, có hai trường hợp mà việc tạo công thức DAX sẽ tốt hơn:
- Nếu bạn muốn tái sử dụng một công thức ở nhiều nơi, chẳng hạn như trong nhiều biểu đồ hoặc làm một biểu thức trong các công thức DAX khác. Trong trường hợp này, việc sử dụng một công thức DAX sẽ làm cho báo cáo của bạn hiệu quả hơn và dễ thay đổi hơn trong tương lai, vì bạn sẽ chỉ cần thay đổi một công thức duy nhất thay vì phải thay đổi nhiều công thức riêng lẻ ở từng nơi chúng được sử dụng.
- Nếu bạn muốn tạo các công thức phức tạp hoặc tùy chỉnh mà chỉ một phép SUM (tổng) hoặc AVERAGE (trung bình) đơn giản sẽ không đủ để giải quyết vấn đề kinh doanh bạn đang cố gắng.
Công thức DAX được sử dụng ở đâu trong Power BI?
Có ba cách bạn có thể sử dụng các công thức DAX trong Power BI:
- Bảng tính toán (Calculated Tables): Các phép tính này sẽ thêm một bảng mới vào báo cáo dựa trên một công thức.
- Cột tính toán (Calculated Columns): Các phép tính này sẽ thêm một cột mới vào một bảng dựa trên một công thức. Các cột này được xử lý như bất kỳ trường nào khác trong bảng.
- Đo lường (Measures): Các phép tính này sẽ thêm một giá trị tổng hợp hoặc tổng hợp (aggregated) vào một bảng dựa trên một công thức.
Sự khác biệt chính giữa ba loại phép tính này là ngữ cảnh (context) của chúng (chúng ta sẽ tìm hiểu thêm về điều này sau) và kết quả mà chúng tạo ra.
Để thêm bất kỳ loại phép tính nào vào một mô hình, hãy điều hướng đến tab Modeling trên thanh ribbon. Tại đây, bạn sẽ tìm thấy ba lựa chọn để thêm một Measure, Calculated Column hoặc Calculated Table mới. Ngoài ra, bạn có thể nhấp chuột phải vào một bảng trong ngăn Fields và chọn tùy chọn để thêm một Measure hoặc Calculated Column mới trong menu thả xuống.

Công thức DAX được sử dụng ở đâu trong Power BI?
Các công thức DAX rất trực quan và dễ đọc. Điều này giúp bạn dễ dàng nắm bắt các kiến thức cơ bản về DAX để có thể bắt đầu tự viết công thức khá nhanh chóng. Hãy cùng xem xét các khối xây dựng của cú pháp DAX đúng chuẩn.

Một công thức DAX cơ bản bao gồm các thành phần sau:
- [1]: Tên của Measure hoặc Calculated Column
- [2]: Toán tử bằng ("="): Chỉ ra điểm bắt đầu của công thức.
- [3]: Một hàm DAX
- [4]: Dấu ngoặc đơn mở (và đóng) ("()")
- [5]: Tham chiếu đến cột và/hoặc bảng
Lưu ý rằng mỗi tham số tiếp theo trong một hàm được phân tách bằng dấu phẩy (",").
Các hàm DAX cũng có thể được lồng vào nhau để thực hiện nhiều phép toán một cách hiệu quả. Điều này có thể tiết kiệm rất nhiều thời gian khi viết công thức DAX. Ví dụ, việc có nhiều câu lệnh IF lồng nhau thường rất hữu ích, hoặc sử dụng hàm IFERROR để bao bọc một hàm khác nhằm đảm bảo mọi lỗi trong công thức được thể hiện bằng giá trị bạn chỉ định.
Một số hàm DAX phổ biến nhất được sử dụng trong báo cáo là:
- Các phép tính đơn giản: COUNT, DISTINCTCOUNT, SUM, AVERAGE, MIN, MAX.
- SUMMARIZE: Trả về một bảng thường được sử dụng để tiếp tục áp dụng các phép tổng hợp trên các nhóm khác nhau.
- CALCULATE: Thực hiện một phép tổng hợp cùng với một hoặc nhiều bộ lọc. Khi bạn chỉ định nhiều hơn một bộ lọc, hàm sẽ thực hiện phép tính khi tất cả các bộ lọc đều TRUE (đúng).
- IF, SWITCH: Dựa trên một điều kiện logic, nó sẽ trả về một giá trị khác nếu điều kiện đó TRUE hoặc FALSE. Điều này tương tự như phép toán CASE WHEN trong SQL.
- IFERROR: Tìm kiếm bất kỳ lỗi nào cho một hàm bên trong và trả về một kết quả được chỉ định.
- ISBLANK: Hàm này kiểm tra xem các hàng trong một cột có trống hay không và trả về TRUE hoặc FALSE. Nó hữu ích khi kết hợp với các hàm khác như IF.
- EOMONTH: Trả về ngày cuối cùng của tháng của một ngày đã cho (tham chiếu cột ở định dạng ngày) cho số tháng tương ứng trong quá khứ hoặc tương lai.
- DATEDIFF: Trả về sự khác biệt giữa hai ngày (cả hai đều là tham chiếu cột ở định dạng ngày) theo số ngày, tháng, quý, năm, v.v.
THÔNG TIN CHI TIẾT POWER BI BOOTCAMP
- Thời gian: 8:30 - 17:30 ngày 12/07/2025 (Thứ 7) và 8:30 - 17:30 ngày 19/07/2025 (Thứ 7)
- Hình thức tham gia: Bạn có thể lựa chọn 2 hình thức dưới đây:
- + Trực tiếp: tại ERX Việt Nam - 46/4 Nguyễn Cửu Vân, P.17, Q. Bình Thạnh, TP Hồ Chí Minh
- + Trực tuyến: qua Google Meet (Link tham gia sẽ được gửi qua email)
- Lệ phí tham gia: 2.000.000 VND / người
(Giảm ngay 200.000 VND khi đăng ký trước ngày 30/06/2025) - Đối tượng tham dự: Chương trình dành cho các bạn đang làm việc trong lĩnh vực phân tích dữ liệu, tài chính, kiểm soát nội bộ, vận hành, sales hoặc quản lý – những người muốn trang bị kỹ năng sử dụng Power BI để tự xây dựng báo cáo phân tích, trực quan hóa dữ liệu và ra quyết định nhanh hơn.
Workshop phù hợp với cả người mới bắt đầu và những ai đã có kiến thức cơ bản, đang tìm kiếm phương pháp làm báo cáo tối ưu, hiện đại và có thể ứng dụng ngay vào công việc. - Tặng mã giảm giá 50% cho 3 khoá học dưới đây:
- Fast Track To Power BI: Fast Track To Power BI
- Master Power Query: Master Power Query
- Finance BI Mastery: Finance BI Mastery
Để nhận mã bạn vui lòng liên hệ với Admin ERX thông qua Messenger ở ngay phía dưới góc phải màn hình.
Tìm hiểu Ngữ cảnh (Context) trong Công thức DAX
Các công thức DAX trong Power BI rất linh hoạt và thay đổi tùy theo ngữ cảnh mà chúng được tạo ra. Việc hiểu cách thức hoạt động của ngữ cảnh trong DAX là rất quan trọng, vì nó có thể giúp bạn tránh được nhiều rắc rối khi gặp phải những lỗi khó hiểu trong công thức của mình.
Có hai loại ngữ cảnh chính trong DAX: ngữ cảnh hàng (row context) và ngữ cảnh bộ lọc (filter context).
Ngữ cảnh hàng (Row context)
Đây là ngữ cảnh đề cập đến "hàng hiện tại" trên tất cả các cột của một bảng và mở rộng sang tất cả các cột trong các bảng có liên quan. Loại ngữ cảnh này cho phép công thức DAX biết được những hàng nào cần sử dụng cho một công thức cụ thể.
Dưới đây là một ví dụ về công thức cho một Calculated Column có ngữ cảnh hàng:

Trong ví dụ này, Cost Price Per Unit được tính toán theo từng hàng. Điều này có nghĩa là DAX cần biết hàng hiện tại khi nó duyệt qua tập dữ liệu, thực hiện phép tính và điền kết quả vào cột mới.
Ngữ cảnh hàng (row context) là ngầm định trong Calculated Columns. Bởi vì các phép tính được thực hiện trong Calculated Columns được thực hiện theo từng hàng; do đó, ngữ cảnh hàng được định nghĩa mặc định. Tuy nhiên, điều này không đúng trong Measures vì các phép tổng hợp được áp dụng cho tất cả các hàng trong một bảng. Các phép tính này không cần biết về một hàng hiện tại vì tất cả các hàng được tổng hợp lại với nhau.
Ví dụ, hãy xem xét công thức DAX sau cho một Measure:
Trong trường hợp này, toàn bộ cột Profit được tổng hợp để tạo ra một số duy nhất, và số này được chia cho tổng của toàn bộ cột Sales. DAX không cần biết hàng hiện tại vì nó thực hiện một phép tổng hợp. Do đó, Measure này không có ngữ cảnh hàng.
Sử dụng hàm Iterator để định nghĩa ngữ cảnh hàng tường minh
Để định nghĩa ngữ cảnh hàng một cách tường minh trong một Measure, bạn cần sử dụng một hàm đặc biệt được gọi là iterator (hàm lặp). Ví dụ về các hàm iterator là SUMX, AVERAGEX và COUNTX. Các hàm này sẽ thực hiện một phép tính theo từng hàng trước, sau đó thực hiện phép tổng hợp cuối cùng trên kết quả (tức là tổng, trung bình, đếm, v.v.). Bằng cách này, ngữ cảnh hàng được định nghĩa một cách tường minh bằng cách sử dụng các hàm iterator này.
Hãy cùng xem một ví dụ về hàm iterator đang hoạt động:
Ví dụ này thực hiện hai phép tính: đầu tiên, biểu thức được đánh giá theo từng hàng, sau đó kết quả được áp dụng cho hàm AVERAGE. Một cách thay thế để đạt được cùng kết quả này là trước tiên tạo Calculated Column Cost Price Per Unit như chúng ta đã làm ở trên, sau đó tạo một Measure AVERAGE riêng cho cột đó. Tuy nhiên, biết khi nào nên sử dụng các hàm iterator này có thể làm cho báo cáo của bạn hiệu quả hơn và sử dụng ít bộ nhớ hơn, vì bạn có thể thực hiện hiệu quả hai phép tính chỉ bằng một công thức duy nhất.
Ngữ cảnh bộ lọc (Filter context)
Ngữ cảnh bộ lọc được áp dụng trên ngữ cảnh hàng (row context) và đề cập đến một tập hợp con các hàng hoặc cột được chỉ định làm bộ lọc trong báo cáo. Các bộ lọc có thể được áp dụng theo một vài cách:
- Trực tiếp trong công thức DAX
- Sử dụng ngăn bộ lọc (filters pane)
- Sử dụng công cụ trực quan Slicer
- Thông qua các trường tạo nên một công cụ trực quan (chẳng hạn như các hàng và cột trong một ma trận)
Một ví dụ điển hình về việc thêm ngữ cảnh bộ lọc vào công thức DAX là sử dụng hàm CALCULATE, cho phép bạn thêm một hoặc nhiều tham số bộ lọc vào Measure. Trong ví dụ dưới đây, chúng ta tạo một Measure tính lợi nhuận biên được lọc chỉ cho Hoa Kỳ:
Những Thách thức thường gặp và Lỗi sơ đẳng của Người mới bắt đầu khi học DAX
Khi học DAX, người mới bắt đầu thường gặp phải những cạm bẫy phổ biến có thể khiến việc hiểu và gỡ lỗi công thức trở nên khó khăn hơn. Dưới đây là một số vấn đề và mẹo để khắc phục chúng:
1. Nhầm lẫn giữa ngữ cảnh hàng (row context) và ngữ cảnh bộ lọc (filter context): Nhiều người mới bắt đầu gặp khó khăn trong việc phân biệt giữa ngữ cảnh hàng và ngữ cảnh bộ lọc. Hãy nhớ rằng ngữ cảnh hàng đề cập đến các phép toán được thực hiện theo từng hàng (ví dụ: Calculated Columns). Ngược lại, ngữ cảnh bộ lọc áp dụng các bộ lọc bổ sung cho các phép tính (ví dụ: slicers hoặc bộ lọc trong báo cáo). Mẹo: Sử dụng các hàm iterator như SUMX hoặc AVERAGEX để xác định ngữ cảnh hàng một cách tường minh trong Measures.
2. Lạm dụng Calculated Columns: Mặc dù Calculated Columns hữu ích, nhưng chúng thường có thể được thay thế bằng Measures, vốn hiệu quả hơn về bộ nhớ và linh hoạt hơn. Việc tạo ra các Calculated Columns không cần thiết có thể làm phình to mô hình dữ liệu của bạn. Mẹo: Sử dụng Measures bất cứ khi nào có thể, vì chúng được tính toán ngay lập tức và không làm tăng vĩnh viễn kích thước mô hình dữ liệu của bạn.
3. Bỏ qua quy ước đặt tên phù hợp: Các Measures hoặc Calculated Columns được đặt tên kém có thể nhanh chóng trở nên khó hiểu trong các báo cáo phức tạp. Mẹo: Áp dụng các quy ước đặt tên nhất quán và mô tả để tổ chức các công thức DAX của bạn.
4. Bỏ qua việc tối ưu hóa hiệu suất: Các công thức DAX có thể trở nên chậm với các bộ dữ liệu lớn nếu không được tối ưu hóa. Các công thức quá phức tạp hoặc sử dụng quá nhiều hàm lồng nhau có thể dẫn đến các vấn đề về hiệu suất. Mẹo: Sử dụng các công cụ như DAX Studio để phân tích và tối ưu hóa công thức của bạn, đồng thời xem xét đơn giản hóa các phép tính nếu có thể.
Các Thực hành Tốt nhất để Tối ưu hóa Công thức DAX
Để cải thiện hiệu suất của các công thức DAX, đặc biệt là trên các tập dữ liệu lớn, hãy tuân theo các thực hành tốt nhất sau:
Cách thực hành tốt nhất | Mô tả |
---|---|
Sử dụng Measures thay cho Calculated Columns | Measures là động và được tính toán theo yêu cầu, tiêu thụ ít bộ nhớ hơn so với Calculated Columns. |
Tránh các vòng lặp lồng nhau | Hạn chế tối đa việc sử dụng các hàm lồng nhau phức tạp (ví dụ: SUMX, AVERAGEX) để ngăn chặn các nút thắt cổ chai về hiệu suất. |
Lọc sớm | Áp dụng bộ lọc ngay tại nguồn dữ liệu hoặc trong các công thức DAX để giảm số lượng hàng được xử lý. |
Tận dụng biến (VAR) | Sử dụng VAR để lưu trữ các kết quả trung gian và tránh các phép tính dư thừa trong một công thức. |
Đơn giản hóa mối quan hệ | Đảm bảo mô hình dữ liệu có các mối quan hệ rõ ràng và các bảng được lập chỉ mục phù hợp để xử lý nhanh hơn. |
Tối ưu hóa số lượng giá trị duy nhất (cardinality) | Giảm số lượng giá trị duy nhất trong các cột được sử dụng để lọc hoặc nối để tăng cường hiệu suất. |
Kết luận
Giờ đây, bạn đã có trong tay một số công cụ DAX cơ bản để thử nghiệm, và chúng chỉ là phần nổi của tảng băng chìm về tất cả những gì DAX có thể làm được. Với hơn 250 hàm, con đường trở thành bậc thầy DAX đầy thách thức nhưng cũng rất đáng giá.
THÔNG TIN CHI TIẾT POWER BI BOOTCAMP
- Thời gian: 8:30 - 17:30 ngày 12/07/2025 (Thứ 7) và 8:30 - 17:30 ngày 19/07/2025 (Thứ 7)
- Hình thức tham gia: Bạn có thể lựa chọn 2 hình thức dưới đây:
- + Trực tiếp: tại ERX Việt Nam - 46/4 Nguyễn Cửu Vân, P.17, Q. Bình Thạnh, TP Hồ Chí Minh
- + Trực tuyến: qua Google Meet (Link tham gia sẽ được gửi qua email)
- Lệ phí tham gia: 2.000.000 VND / người
(Giảm ngay 200.000 VND khi đăng ký trước ngày 30/06/2025) - Đối tượng tham dự: Chương trình dành cho các bạn đang làm việc trong lĩnh vực phân tích dữ liệu, tài chính, kiểm soát nội bộ, vận hành, sales hoặc quản lý – những người muốn trang bị kỹ năng sử dụng Power BI để tự xây dựng báo cáo phân tích, trực quan hóa dữ liệu và ra quyết định nhanh hơn.
Workshop phù hợp với cả người mới bắt đầu và những ai đã có kiến thức cơ bản, đang tìm kiếm phương pháp làm báo cáo tối ưu, hiện đại và có thể ứng dụng ngay vào công việc. - Tặng mã giảm giá 50% cho 3 khoá học dưới đây:
- Fast Track To Power BI: Fast Track To Power BI
- Master Power Query: Master Power Query
- Finance BI Mastery: Finance BI Mastery
Để nhận mã bạn vui lòng liên hệ với Admin ERX thông qua Messenger ở ngay phía dưới góc phải màn hình.

please authorize