[DAX Tutorial] Cách sử dụng hàm RANKX trong Power BI

Trong phân tích dữ liệu với Power BI, việc xếp hạng là một trong những nhu cầu phổ biến nhất. Dù bạn cần tìm ra top 10 sản phẩm bán chạy nhất, xếp hạng nhân viên có doanh số cao nhất, hay đánh giá danh mục mang lại lợi nhuận tối ưu, hàm RANKX trong Power BI luôn là công cụ hàng đầu được các kỹ sư dữ liệu và Business Analyst (BA) lựa chọn. Bài viết này sẽ giúp bạn làm chủ hàm hàm RANKX trong Power BI từ định nghĩa, cú pháp chi tiết, đến các ví dụ thực hành trực quan dựa trên dự án thực tế.

Hàm RANKX trong Power BI là gì?

RANKX là một hàm DAX mạnh mẽ được sử dụng để trả về thứ hạng của một giá trị cụ thể trong một danh sách các giá trị từ một bảng biểu dữ liệu.Về bản chất, hàm RANKX sẽ duyệt qua từng dòng của một bảng, tính toán giá trị dựa trên một biểu thức (thường là một Measure như Doanh thu, Lợi nhuận, …) và so sánh kết quả đó với toàn bộ tập hợp để gán cho nó một số thứ tự xếp hạng.

Cú pháp chi tiết của hàm RANKX
RANKX(<table>, <expression>[, <value>[, <order>[, <ties>]]]

Giải thích các tham số (Parameters)

  • <table> (Bắt buộc): Bảng chứa dữ liệu mà bạn muốn thực hiện xếp hạng trên đó. Đối với Measure xếp hạng động, tham số này thường đi kèm với hàm lọc như ALL, ALLSELECTED hoặc VALUES để loại bỏ hoặc giữ lại các bộ lọc ngữ cảnh.
  • <expression> (Bắt buộc): Biểu thức DAX trả về một giá trị đơn (Scalar Value) để tính điểm xếp hạng. Ví dụ: [Total Sales], [Total Profit].
  • <value> (Tùy chọn): Giá trị cụ thể mà bạn muốn tìm thứ hạng của nó trong tập hợp. Thông thường, tham số này được bỏ qua (để trống bằng dấu phẩy kép) để Power BI tự động lấy giá trị của dòng hiện tại làm căn cứ xếp hạng.
  • <order> (Tùy chọn): Cách thức sắp xếp thứ hạng:
    • DESC (Mặc định): Xếp hạng từ lớn đến nhỏ (giá trị cao nhất xếp hạng 1).
    • ASC: Xếp hạng từ nhỏ đến lớn (giá trị thấp nhất xếp hạng 1).
  • <ties> (Tùy chọn): Cách xử lý khi xảy ra tình trạng đồng hạng (bằng điểm nhau):
    • Skip (Mặc định): Nếu có hai giá trị đồng hạng 2, thứ hạng tiếp theo sẽ nhảy lên hạng 4 (bỏ qua hạng 3).
    • Dense: Nếu có hai giá trị đồng hạng 2, thứ hạng tiếp theo sẽ vẫn là hạng 3.

Hướng dẫn chi tiết các tham số trong hàm RANKX

Để hiểu rõ hơn cách hàm RANKX trong Power BI xử lý các trường hợp phức tạp, chúng ta cần đi sâu vào hai tùy chọn Order và Ties.

Phân biệt Order (ASC so với DESC)

  • Sử dụng DESC khi bạn muốn tìm những chỉ số “tốt nhất” hoặc “nhiều nhất”. Ví dụ: Xếp hạng doanh số bán hàng, xếp hạng điểm số.
  • Sử dụng ASC khi bạn quan tâm đến những chỉ số “ít nhất” hoặc “thấp nhất”. Ví dụ: Xếp hạng chi phí vận hành (ai chi tiêu ít nhất đứng đầu), xếp hạng thời gian giao hàng (giao hàng nhanh nhất xếp hạng 1).

Phân biệt Ties (Skip so với Dense)

Hãy cùng theo dõi bảng so sánh trực quan dưới đây khi xếp hạng Doanh thu bằng hai phương thức này:

Tên đối tácDoanh thuXếp hạng với Skip (Mặc định)Xếp hạng với Dense
Công ty A100,00011
Công ty B80,00022
Công ty C80,00022
Công ty D50,0004 (Nhảy cóc số 3)3 (Liền mạch)

Sự lựa chọn tùy thuộc vào quy chuẩn báo cáo của doanh nghiệp bạn. Thông thường, Dense được ưa chuộng hơn trong các báo cáo dashboard vì nó không tạo ra các khoảng trống thứ hạng gây bối rối cho người đọc.

Ví dụ cụ thể về sử dụng hàm RANKX trong Power BI

Để minh họa sống động, chúng ta sẽ thực hành xếp hạng dựa trên một mô hình dữ liệu thực tế gồm bảng sản phẩm Product (chứa cột Category và Subcategory) và các Measure cốt lõi: [Total Sales] (Tổng doanh thu) và [Total Profit] (Tổng lợi nhuận).

Ví dụ 1: Xếp hạng danh mục sản phẩm theo doanh thu

Trong ví dụ đầu tiên, chúng ta muốn xếp hạng các danh mục sản phẩm lớn để biết đâu là nhóm ngành hàng đem lại nhiều doanh thu nhất.Công thức DAX được thiết lập như sau:

Rank_Category_byRev = RANKX(ALL('Product'[Category]), [Total Sales])

hàm RANKX trong Power BI

  • Giải thích chi tiết:
    • Chúng ta sử dụng ALL(‘Product'[Category]) làm tham số bảng. Điều này cực kỳ quan trọng vì nếu không có ALL, Power BI sẽ tính toán thứ hạng dựa trên bộ lọc ngữ cảnh của từng dòng riêng biệt, khiến mọi dòng đều tự so sánh với chính nó và trả về kết quả xếp hạng là 1.
    • Biểu thức so sánh là [Total Sales]. Doanh mục nào có doanh số lớn nhất sẽ tự động được xếp hạng 1 (vì tham số Order mặc định là DESC).

Ví dụ 2: Xếp hạng danh mục sản phẩm theo lợi nhuận

Doanh thu lớn chưa chắc lợi nhuận đã cao. Chúng ta viết thêm một Measure để xếp hạng các danh mục tương tự nhưng dựa trên chỉ số Lợi nhuận ([Total Profit]):

Rank_Cate_byProfit = RANKX(ALL('Product'[Category]), [Total Profit])

hàm RANKX trong Power BI

Ví dụ 3: Xếp hạng nhóm sản phẩm phụ theo doanh thu và lợi nhuận

Để đi sâu hơn vào chi tiết sản phẩm, chúng ta cần xếp hạng ở cấp độ nhỏ hơn là các nhóm sản phẩm phụ (Subcategory).

Chúng ta xây dựng hai Measure xếp hạng tương ứng cho Subcategory:

  • Xếp hạng Subcategory theo Doanh thu:

Rank_SubCate_byRev = RANKX(ALL('Product'[Subcategory]), [Total Sales])

hàm RANKX trong Power BI

  • Xếp hạng Subcategory theo Lợi nhuận:

Rank_SubCate_byProfit = RANKX(ALL('Product'[Subcategory]), [Total Profit])

hàm RANKX trong Power BI

Kết quả hiển thị trực quan trên báo cáo (Report View)

Khi chúng ta đưa các Measure vừa tạo vào các bảng dữ liệu (Table Visual), Power BI sẽ tự động tính toán thứ hạng một cách trực quan và chính xác:

hàm RANKX trong Power BI

  • Phân tích từ bảng kết quả hiển thị:
    • Ở bảng trên (Cấp độ Category): Ngành hàng Grocery đang giữ ngôi vương về cả doanh thu và lợi nhuận khi đều xếp hạng 1. Ngành hàng Toys dù xếp hạng 3 về doanh thu nhưng lại tụt xuống hạng 4 về lợi nhuận, cho thấy chi phí vận hành hoặc giá vốn của Toys đang cao hơn so với Sports (hạng 4 doanh thu nhưng hạng 3 lợi nhuận).
    • Ở bảng dưới (Cấp độ Subcategory): Chúng ta có thể thấy rõ chi tiết xếp hạng của từng mặt hàng cụ thể như Boots (Xếp hạng 1 về doanh thu nhưng xếp hạng 5 về lợi nhuận) hay Board Games (Xếp hạng 23 doanh thu, hạng 22 lợi nhuận). Việc phân tích hai chỉ số xếp hạng song song giúp nhà quản trị đưa ra quyết định tối ưu hóa danh mục sản phẩm chính xác hơn.

Khi nào nên dùng hàm RANKX trong Power BI?

Hàm RANKX cực kỳ đa năng, bạn nên ưu tiên sử dụng nó trong các trường hợp sau:

  • Tạo báo cáo Top N động: Thay vì sử dụng bộ lọc cứng của Power BI, bạn có thể kết hợp RANKX với các thanh trượt (Slicers) để cho phép người dùng cuối chủ động chọn xem Top 5, Top 10 hay Top 20 doanh nghiệp/sản phẩm có kết quả xuất sắc nhất.
  • So sánh chéo hiệu năng: Giúp hiển thị nhanh chóng vị thế của một đại lý/nhân viên so với toàn bộ hệ thống ngay trên dòng báo cáo của họ.
  • Xây dựng biểu đồ Pareto (Phân tích 80/20): Để tính toán tỷ lệ lũy kế nhằm phân loại nhóm khách hàng/sản phẩm cốt lõi, việc xác định đúng thứ tự xếp hạng bằng RANKX là bước bắt buộc đầu tiên.
  • Lập kế hoạch phân bổ nguồn lực: Giúp các phòng ban nhanh chóng định vị các danh mục yếu kém (xếp hạng thấp nhất) để tối ưu chi phí hoặc phân bổ thêm ngân sách marketing cho các nhóm dẫn đầu.

Những sai lầm phổ biến và lưu ý khi dùng hàm RANKX

Dù là hàm xếp hạng tiêu chuẩn, RANKX thường gây ra nhiều bối rối cho những người mới bắt đầu học DAX. Dưới đây là những lưu ý đắt giá giúp bạn tránh các lỗi thường gặp:

Lỗi tất cả các dòng đều xếp hạng 1

Đây là lỗi phổ biến nhất. Nguyên nhân do bạn đưa trực tiếp cột của bảng vào mà không bọc trong hàm ALL hoặc ALLSELECTED.Giải pháp: Luôn đảm bảo tham số đầu tiên của RANKX là một danh sách đã được giải phóng các bộ lọc, ví dụ: ALL(‘Tên_Bảng'[Tên_Cột]).

Sự khác biệt giữa ALL và ALLSELECTED

  • Sử dụng ALL: Thứ hạng của sản phẩm sẽ được cố định dựa trên toàn bộ dữ liệu hiện có trong Database, bất kể người dùng có lọc trang báo cáo hay không.
  • Sử dụng ALLSELECTED: Thứ hạng sẽ thay đổi linh hoạt theo các bộ lọc mà người dùng lựa chọn trên Slicer (Ví dụ: Chỉ xếp hạng các sản phẩm thuộc khu vực miền Bắc).

Xếp hạng bị lỗi ở dòng Total

Trên visual dạng Table, dòng Total thường sẽ trả về kết quả xếp hạng là 1 hoặc một con số không mong muốn. Để xử lý tính thẩm mỹ này, bạn nên kết hợp RANKX với hàm kiểm tra điều kiện dòng HASONEVALUE hoặc ISINSCOPE.

Tổng kết

Hàm RANKX trong Power BI là một trong những giải pháp tối ưu giúp nâng tầm các báo cáo phân tích dữ liệu từ dạng tĩnh sang dạng động có tính tương tác cao. Việc nắm rõ bản chất vận hành của RANKX và cách kết hợp với các hàm lọc như ALL, ALLSELECTED sẽ giúp bạn xây dựng được những báo cáo xếp hạng chính xác và mượt mà.

Hy vọng qua các ví dụ thực tế trên, bạn đã có thể tự tin áp dụng hàm RANKX để tối ưu hóa công việc phân tích dữ liệu của mình. Hãy bắt tay vào viết những dòng mã DAX đầu tiên để trực quan hóa hiệu suất doanh nghiệp một cách chuyên nghiệp.

RANKX chỉ là một trong nhiều hàm DAX quan trọng được sử dụng trong các dự án phân tích dữ liệu thực tế. Để xây dựng Dashboard chuyên nghiệp, bạn cần kết hợp thêm các kỹ năng về Data Modeling, Power Query, DAX, Time Intelligence và thiết kế báo cáo tương tác.

👉 Tham khảo Khóa học Power BI cấp tốc tại Starttrain để được hướng dẫn từ cơ bản đến nâng cao thông qua các dự án doanh nghiệp thực tế.

Để lại một bình luận

Form - đọc sách
Form - Single Report Template

Vui lòng liên hệ qua những thông tin bên dưới. Starttrain sẽ phản hồi bạn trong thời gian sớm nhất.

Form Dashboard service