Bỏ qua để đến nội dung

Hàm tổng hợp & iterators

DAX có hai họ hàm tổng hợp: hàm đơn (SUM, AVERAGE…) và hàm iterator (SUMX, AVERAGEX… — đuôi X). Hiểu khác biệt giúp viết measure đúng khi cần tính theo từng hàng.

  • Tổng hợp một cột đã có sẵn giá trị.
Total Amount = SUM ( Sales[Amount] )
  • Duyệt từng hàng của một bảng, tính một biểu thức cho mỗi hàng, rồi tổng hợp.
  • Tạo row context → biểu thức tham chiếu được nhiều cột.
-- Tính thành tiền từng dòng rồi cộng — không cần calculated column
Total Sales = SUMX (
Sales,
Sales[Quantity] * Sales[Unit Price]
)

SUMX duyệt từng hàng Sales, nhân Quantity * Unit Price, rồi cộng tất cả.

Tình huốngDùng
Cộng một cột có sẵnSUM
Cần tính theo từng hàng rồi tổng hợp (nhân, điều kiện)SUMX
Trung bình theo hàngAVERAGEX
Đếm có điều kiện theo hàngCOUNTX/SUMX với IF
-- Doanh thu trung bình mỗi khách hàng
Avg Sales per Customer =
AVERAGEX (
VALUES ( Customer[CustomerKey] ),
[Total Sales]
)

AVERAGEX duyệt từng khách, gọi measure [Total Sales] (có context transition ngầm → tính đúng cho từng khách), rồi trung bình.

Chia sẻ: