Chuyển đến nội dung chính

Cách sử dụng các hàm SUMX trong Power BI

Khám phá hàm SUMX trong Power BI, cú pháp, cách hoạt động và các thực hành tốt nhất cần ghi nhớ.
· 8 phút đọc

Khám phá cùng AI

Nếu bạn vừa bắt đầu học Power BI với lộ trình nghề nghiệp Data Analyst in Power BI của chúng tôi, có thể bạn đã biết hàm SUM cơ bản từ khóa học giới thiệu về DAX (nếu chưa, hãy xem nhanh hướng dẫn DAX này). Khi đó, bạn cũng có thể tự hỏi hàm SUMX là gì, cách nó hoạt động và cách bạn có thể sử dụng nó trong các phân tích.

Hướng dẫn này sẽ khám phá hàm SUMX, trả lời tất cả những câu hỏi này và hướng dẫn bạn triển khai nó trong Power BI.

Khi bạn theo dõi hướng dẫn này và các hướng dẫn Power BI khác, hãy nhớ rằng dù bạn có thể không bắt buộc phải học lập trình với tư cách là chuyên viên business intelligence hay nhà phát triển Power BI, nhưng đó có thể là một lợi thế lớn cho sự nghiệp của bạn. Xem bài viết của chúng tôi về việc liệu bạn có nên học viết mã với tư cách là một BI analyst để biết lý do.

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

Hàm SUMX trong Power BI là một hàm DAX mạnh mẽ dùng để tính tổng của một biểu thức được tính cho từng hàng trong một bảng. Hàm này quan trọng vì nó cho phép thực hiện các phép tính phức tạp hơn so với phép cộng đơn giản.

Hãy giữ cheat sheet DAX của chúng tôi bên cạnh để nhanh chóng tra cứu nhiều hàm DAX hữu ích mà bạn sẽ gặp.

image2.png

Cú pháp của hàm SUMX là

SUMX(Table, Expression)

  • Table: Bảng hoặc biểu thức bảng mà hàm sẽ lặp qua.
  • Expression: Biểu thức được đánh giá cho mỗi hàng của bảng. Biểu thức này thường liên quan đến dữ liệu từ các cột trong bảng.

SUMX đặc biệt hữu ích khi bạn cần thực hiện các phép tính phụ thuộc vào giá trị từng hàng trước khi cộng gộp kết quả. Ví dụ, tính tổng doanh số bằng cách nhân số lượng và giá cho mỗi giao dịch hoặc áp dụng các mức chiết khấu khác nhau theo sản phẩm trước khi cộng tổng doanh số sau chiết khấu. Nó mang lại sự linh hoạt và độ chính xác cho phép tính của bạn, khiến đây là một hàm khá quan trọng cần tìm hiểu.

Cách SUMX hoạt động trong Power BI

Dưới đây là phần phân tích cách hàm SUMX hoạt động bên trong:

  • Khi gọi SUMX, hàm sẽ lặp qua các hàng của bảng đã chỉ định từng hàng một. Với mỗi hàng, nó tạm thời thiết lập một ngữ cảnh hàng, tức một môi trường nơi các giá trị của hàng hiện tại có thể truy cập trực tiếp.
  • Trong ngữ cảnh hàng này, hàm đánh giá biểu thức được cung cấp ở đối số thứ hai. Biểu thức thường liên quan đến một hoặc nhiều giá trị cột khác từ hàng hiện tại. Khi hàm lặp qua bảng, nó tính lại biểu thức này cho từng hàng dựa trên dữ liệu của hàng đó.
  • Khi SUMX xử lý từng hàng, nó tổng hợp kết quả, duy trì một tổng tích lũy. Power BI sử dụng engine phân tích trong bộ nhớ của DAX (VertiPaq), vốn được tối ưu cho các phép tính như thế này.
  • Sau khi lặp qua tất cả các hàng, SUMX chốt tổng đã tổng hợp, tức tổng của các kết quả riêng lẻ được tính cho mỗi hàng. Giá trị cuối cùng này sẽ được trả về làm đầu ra của hàm.

Hiểu về các ngữ cảnh

Trong Power BI, ngữ cảnh là yếu tố then chốt để hiểu cách các hàm DAX như SUMX vận hành. Ngữ cảnh quyết định cách các giá trị trong mô hình dữ liệu được tính toán và hiển thị. Xem khóa học giới thiệu về DAX của chúng tôi, nơi chúng tôi bàn sâu hơn về các ngữ cảnh. Với hàm SUMX, có hai loại ngữ cảnh chính cần xem xét: ngữ cảnh hàng và ngữ cảnh lọc.

Ngữ cảnh hàng

Ngữ cảnh hàng đề cập đến môi trường nơi các công thức DAX đánh giá từng hàng của một bảng. Khi ở trong ngữ cảnh hàng, bạn có thể tham chiếu trực tiếp các cột của bảng, và công thức DAX sẽ sử dụng giá trị từ hàng hiện tại trong phép tính.

Khi bạn sử dụng SUMX, nó tạo và tận dụng ngữ cảnh hàng để vận hành. Với mỗi hàng trong bảng đã chỉ định, SUMX đánh giá biểu thức đã cho trong ngữ cảnh của chính hàng đó.

Ngữ cảnh lọc

Ngữ cảnh lọc là tập hợp các bộ lọc được áp dụng cho dữ liệu trong báo cáo Power BI, chẳng hạn các bộ lọc từ biểu đồ, slicer và bộ lọc cấp báo cáo. Ngữ cảnh này quyết định những điểm dữ liệu nào được tính đến trong phép tính.

Mặc dù SUMX hoạt động trong ngữ cảnh hàng cho các phép tính từng hàng, các phép tính này vẫn chịu ảnh hưởng của ngữ cảnh lọc tổng thể của báo cáo hoặc biểu đồ. Điều này có nghĩa các hàng mà SUMX lặp qua là những hàng đáp ứng tiêu chí do ngữ cảnh lọc hiện tại xác định.

Sự tương tác giữa các ngữ cảnh trong SUMX

Khi sử dụng SUMX, hàm tôn trọng cả ngữ cảnh hàng và ngữ cảnh lọc. Bảng mà SUMX lặp qua được định hình bởi ngữ cảnh lọc, trong khi phép tính cho từng hàng được thực hiện trong ngữ cảnh hàng.

Bạn có thể sử dụng một measure bên trong SUMX. Trong trường hợp này sẽ xảy ra chuyển đổi ngữ cảnh (context transition), khi ngữ cảnh hàng tạm thời được biến đổi thành một ngữ cảnh lọc tương đương để đánh giá measure cho từng hàng.

Thực hành tốt nhất với SUMX

Khi dùng hàm SUMX trong Power BI, hãy cân nhắc một vài thực hành tốt nhất sau:

  • Đảm bảo mô hình dữ liệu của bạn được cấu trúc tốt trước khi áp dụng SUMX. Các mối quan hệ và sơ đồ mô hình được định nghĩa chuẩn xác là yếu tố then chốt cho các báo cáo Power BI chính xác và tối ưu.
  • SUMX không được hỗ trợ ở chế độ DirectQuery khi dùng trong cột tính toán hoặc quy tắc bảo mật ở cấp hàng.
  • Giữ cho các biểu thức dùng trong SUMX đơn giản và hiệu quả nhất có thể. Tránh các phép tính quá phức tạp làm chậm hiệu năng, đặc biệt với tập dữ liệu lớn.
  • Lưu ý chuyển đổi ngữ cảnh và cách nó có thể ảnh hưởng đến kết quả của hàm.
  • SUMX chỉ xét số. Giá trị trống, giá trị logic và văn bản sẽ bị bỏ qua.

SUMX so với các hàm khác

Một số hàm tương tự SUMX, và việc biết nên dùng hàm nào và khi nào có thể hơi gây nhầm lẫn. Hãy phân tích hai hàm thường gây bối rối nhất.

SUMX và SUM

SUM được dùng để tính tổng của một cột trong bảng và có cú pháp sau:

SUM(Column)

SUMX lặp qua từng hàng để đánh giá một biểu thức, trong khi SUM tổng hợp trực tiếp các giá trị từ một cột đơn. Điều này có nghĩa SUMX có thể xử lý các phép tính phức tạp hơn liên quan đến nhiều cột.

Tuy nhiên, tính chất lặp của SUMX khiến nó tốn tài nguyên hơn, đặc biệt với tập dữ liệu lớn, so với SUM. Hãy ghi nhớ điều này nếu bạn đang làm việc với mô hình dữ liệu lớn và dùng SUM cho các phép cộng đơn giản.

SUMX và CALCULATE

CALCULATE điều chỉnh ngữ cảnh lọc cho một phép tính và là một trong những hàm mạnh mẽ nhất trong DAX. Đây là cú pháp của hàm CALCULATE:

CALCULATE(Expression, Filter1, Filter2,...)

CALCULATE lý tưởng cho các kịch bản mà bạn phải thực hiện phép tính dưới những điều kiện lọc khác với điều kiện hiện đang được áp dụng cho báo cáo hoặc mô hình. Trong khi đó, SUMX dùng cho các phép tính ở cấp hàng rồi mới tổng hợp.

Trong các kịch bản phức tạp, chúng ta có thể dùng CALCULATE cùng các hàm khác, như SUMX. Ví dụ, bạn có thể dùng CALCULATE để xác định một ngữ cảnh lọc cụ thể mà trong đó SUMX thực hiện các phép tính cấp hàng và tổng hợp.

Triển khai SUMX trong Power BI: Hướng dẫn từng bước

Sử dụng dữ liệu mẫu của Power BI (có sẵn khi bạn cài Power BI Desktop), chúng tôi sẽ minh họa cách sử dụng hàm SUMX và cách kết hợp SUMX với một số hàm DAX hữu ích khác.

Dưới đây là ảnh chụp dữ liệu của chúng tôi hiển thị doanh số theo tháng cho các sản phẩm khác nhau trên nhiều phân khúc và quốc gia.

image4.png

Bước 1: Tạo measure bằng SUMX

Đây là một ví dụ kinh điển về sức mạnh của SUMX. Chúng ta muốn sử dụng số đơn vị đã bán, giá mỗi đơn vị và giá trị của bất kỳ khoản chiết khấu nào để tính tổng giá trị doanh số.

SUMX(Sales, (Sales[Units Sold] * Sales[Sale Price])-Sales[Discounts])

Dưới đây là một bảng hiển thị kết quả của hàm SUMX. Như bạn thấy, tổng doanh số cũng có thể được áp dụng ngữ cảnh lọc — trong trường hợp này, chúng ta lọc theo Năm và Sản phẩm.

image1.png

Bước 2: Áp dụng bộ lọc cho SUMX

Chúng ta có thể dùng bộ lọc với hàm SUMX theo hai cách: với FILTER hoặc CALCULATE.

FILTER được dùng để áp dụng các bộ lọc cụ thể cho một bảng hoặc biểu thức bên trong SUMX. Nó cho phép kiểm soát chi tiết hơn các hàng mà SUMX sẽ lặp qua.

SUMX(FILTER(Sales, Sales[Discount Band] = "High"), Sales[Units Sold])

CALCULATE điều chỉnh ngữ cảnh lọc cho hàm SUMX, cho phép các phép tổng hợp điều kiện phức tạp.

SUMX(Sales, CALCULATE(SUM(Sales[Units Sold]), Sales[Year] = 2020))

Bước 3: Kết hợp SUMX với các hàm khác

ALL và ALLEXCEPT

Các hàm này được dùng để loại bỏ bộ lọc khỏi một bảng hoặc khỏi tất cả các bảng ngoại trừ những bảng được chỉ định. Chúng thường được dùng trong CALCULATE và kết hợp với SUMX để thực hiện phép tính trên tập dữ liệu không bị lọc.

SUMX(ALL(Sales), Sales[Sale Price] * Sales[Units Sold])

VALUES

VALUES trả về một bảng một cột gồm các giá trị duy nhất từ một cột. Bạn có thể kết hợp với SUMX cho các phép tính cần lặp qua các giá trị duy nhất.

SUMX(VALUES(Sales[Country]), [Total Sales])

AVERAGEX, MINX và MAXX

Đây là các hàm lặp khác tương tự SUMX nhưng lần lượt dùng để tính trung bình, giá trị nhỏ nhất hoặc lớn nhất. Chúng có thể được lồng nhau hoặc dùng song song với SUMX.

AVERAGEX(Customers, SUMX(RELATEDTABLE(Sales), Sales[Units Sold]))

IF và SWITCH

Các hàm logic như IF và SWITCH có thể dùng trong SUMX để thực hiện các phép tính có điều kiện.

SUMX(Sales, IF(Sales[Country] = "Mexico", Sales[Units Sold], 0))

USERELATIONSHIP

USERELATIONSHIP chỉ định một mối quan hệ cụ thể được dùng trong phép tính. Nó đặc biệt hữu ích khi tồn tại nhiều mối quan hệ giữa các bảng.

SUMX(CALCULATETABLE(Sales, USERELATIONSHIP(Date[Date], Sales[Date])), Sales[Units Sold])

Kết luận

Trong hướng dẫn này, chúng tôi đã đi sâu vào chi tiết của hàm SUMX trong Power BI và chỉ bạn cách tự triển khai. Đây không chỉ là một hàm DAX linh hoạt và mạnh mẽ mà còn cho thấy tầm quan trọng của việc hiểu các ngữ cảnh trong DAX. Để tìm hiểu thêm, hãy xem lộ trình kỹ năng Power BI fundamentals của chúng tôi.

Joleen Bothma

Tác giả

Joleen Bothma

Chủ đề