Hướng dẫn sử dụng hàm lặp – Iterator Functions | Power BI DAX

Ngày đăng: 06/03/2024

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é!

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:

hàm lặp- iterator functions (DAX) - minh họa 1

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ả

hàm lặp- iterator functions (DAX) - minh họa 2

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ả

hàm lặp- iterator functions (DAX) - minh họa 3

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.

hàm lặp- iterator functions (DAX) - minh họa 4

Đọ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!

Chia sẻ bài viết này

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *