DAX trong Power BI (Data Analysis Expressions) là một tập hợp các hàm, toán tử và hằng số, sử dụng trong công thức hoặc biểu thức tính để giải quyết những bài toán từ cơ bản tới phức tạp.
Trong DAX, Iterator Functions (hàm lặp) là các hàm thực thi biểu thức cho mỗi hàng của bảng rồi tổng hợp kết quả. Các hàm lặp kết thúc bằng ký tự X và bao gồm các hàm sau: AVERAGEX, COUNTAX, COUNTX, GEOMEANX, MAXX, MEDIANX, MINX, PRODUCTX, STDEVX.P, STDEVX.S, SUMX, VARX.P, VARX.S.
Tất cả các Iterator Function đều có dạng tổng quát sau:
<function>(<table>, <expression>)
Trong đó, <function> là tên của hàm lặp. Mỗi hàm lặp lấy một bảng làm tham số đầu tiên cũng như biểu thức DAX làm tham số thứ hai. Biểu thức được thực thi cho mỗi hàng của bảng và sau đó hàm tổng hợp sẽ tổng hợp của từng kết quả đó.
Hãy theo dõi tiếp bài viết để cùng tìm hiểu thêm về Iterator Functions và ứng dụng nó để giải quyết một số bài toán kinh điển nhé!
Mục lục
Giới thiệu dataset và bài toán
Bảng dữ liệu được sử dụng trong bài viết này là bảng Sales với các trường như sau:
- Order Quantity: Số lượng hàng bán
- Product Standard Cost: Giá vốn của hàng hóa
- Sale Amount: Giá trị bán ra

Bài toán đặt ra là tính Profit Margin (Biên lợi nhuận) của doanh nghiệp
Công thức tính Profit Margin với công thức như sau:

Cách giải thông thường
Theo công thức ở trên, ta cần tính doanh thu và giá vốn của tất cả đơn hàng. Bản chất của việc tính giá vốn hàng bán là chúng ta sẽ cần tính giá vốn của từng đơn hàng sau đó mới tính tổng của tất cả.
Bước 1: Tính giá vốn của từng đơn hàng
Ta có thể tính giá vốn của từng đơn hàng bằng cách tính thêm 1 cột COGS (Cost of good sold – giá vốn hàng bán) với công thức sau:
Kết quả:

Bước 2: Tính 1 số measure trung gian
- Tính tổng giá vốn hàng bán bằng cách tạo New Measure với công thức:
- Tương tự ta tính tổng doanh thu theo công thức sau:
Bước 3: Tính Profit Margin
Sau khi đã có đủ các measure trung gian ta có thể áp dụng công thức đã đề cập ở trên để tính.
Kết quả tính Profit Margin theo từng sản phẩm

Cách giải với Iterator Functions
Ta tạo 1 measure mới là Total COGS Iterator
Qua mỗi dòng của bảng Sales, hàm SUMX sẽ tính Order Quantity * Product Standard Cost rồi cộng kết quả của tất cả các hàng.
Cách thức thực thi:

Với cách giải thông thường, ta cần qua 3 bước, vừa phải tạo thêm cột, vừa phải tính 2 measure trung gian mới có thể tính Profit Margin. Trong khi đó, Power BI cung cấp cho chúng ta 1 hàm DAX có thể thực thi tất cả các bước trên chỉ bằng 1 dòng lệnh.
Kết quả

Có thể thấy, hai phương pháp này mặc dù các ra cùng một kết quả nhưng việc sử dụng Iterator Function sẽ nhanh gọn hơn và tránh dư thừa dữ liệu.
1 số ví dụ khác đi kèm
Ví dụ 1: Tính Profit Margin trung bình của tất cả các đơn hàng
Ta cần tính Profit Margin của từng sản phẩm sau đó tính trung bình các Profit Margin đó và hàm DAX đáp ứng được yêu cầu này chính là hàm AVERAGEX.
Công thức tính:
Kết quả

Ví dụ 2: Sử dụng Iterator Function với 1 trường
Tính Profit Margin trung bình theo Category.
Tương tự như ví dụ trên, ta cần tính Profit Margin của từng Category rồi tính trung bình của tất cả các Category bằng cách tạo 1 measure mới với công thức như sau:
Kết quả: Profit Margin trung bình tính theo Category bằng 21.79%. Kết quả này khác với con số 11.43% là do ta đang sử dụng 2 công thức tính khác nhau cho từng trường hợp khác nhau. Trên thực tế, ta có thể linh hoạt sử dụng các cách tính toán này sao cho phù hợp với bài toán của doanh nghiệp.

Đọc thêm về cách tính Rolling Average trong Power BI.
Tạm kết
Như vậy, thông qua các ví dụ cụ thể trên, chúng ta có thể hiểu về Iterator functions và cách thức ứng dụng nó từ đơn giản cho đến những trường hợp phức tạp. Ngoài ra, bạn có thể tìm hiểu thêm về các hàm Iterator khác dax.guide, tên của các hàm này thường kết thúc bằng ký hiệu “X” và chúng vẫn thuộc nhóm Aggregration Functions.
Hy vọng phần thực hành trên đã giúp bạn có thêm kiến thức để vận dụng Iterator function để xử lý những bài toán khác một cách linh hoạt, tối ưu hơn. Hãy theo dõi Blog của Datapot để không bỏ lỡ các bài viết tương tự nhé.
Tìm hiểu thêm các khóa học Power BI tại Datapot chuẩn giáo trình của Microsoft và đăng ký học ngay hôm nay!


