DAX SUMMARIZE() và việc nhóm dữ liệu
Cách hàm SUMMARIZE() tạo các bảng tóm tắt dựa trên các cột và phép tổng hợp được chỉ định như sau:
SUMMARIZE (<table>, <groupBy_columnName>[, <groupBy_columnName>]…[, <name>, <expression>]…)
Trong cú pháp trên:
-
tablelà bảng nguồn cho dữ liệu của bạn. -
groupBy_columnNamelà (các) cột bạn muốn nhóm theo. -
namelà tên cho cột tính toán mới. -
expressionlà phép tính bạn muốn thực hiện.
Bạn có thể dùng SUMMARIZE() với bất kỳ bảng hay cột nào trong tập dữ liệu, nên nó rất linh hoạt.
Nhóm cơ bản
Hãy xem một ví dụ đơn giản về nhóm cơ bản với SUMMARIZE().
Trước tiên, nhập tập dữ liệu vào Power BI. Để làm vậy, vào thẻ Home > Get Data. Chọn tùy chọn tương ứng với tệp đã lưu của bạn trong menu thả xuống và tải lên. Trong ví dụ này, tôi có tập dữ liệu với các cột Year, Product và SalesAmount. Giờ tôi sẽ nhập dữ liệu này vào Power BI.

Bảng tên sales. Ảnh: Tác giả.
Sau khi nhập dữ liệu, vào thẻ Modeling > New table. Sau đó nhập công thức sau để nhóm theo cột Year và tổng hợp Total Sales.
SummaryTable =
SUMMARIZE(
sales,
sales[Year],
"Total Sales", SUM(sales[SalesAmount])
)

Thanh công thức. Ảnh: Tác giả.
Trong công thức này:
-
SummarizedTabletạo một bảng mới. -
SUMMARIZE(bắt đầu nhóm và tóm tắt dữ liệu. -
SalesData,là bảng nguồn. -
SalesData[Year],nhóm theo cột Year. -
"Total Sales", SUM(SalesData[SalesAmount])tạo cột mới tên Total Sales, cộng SalesAmount cho từng năm.

Kết quả tóm tắt. Ảnh: Tác giả.
Ở đây, hàm SUMMARIZE() tạo bảng tóm tắt bằng cách nhóm dữ liệu theo Year và tính Total Sales bằng cách cộng SalesAmount cho từng năm.
Nhóm nhiều mức
SUMMARIZE() cũng xử lý được các nhóm phức tạp hơn. Hãy hiểu qua ví dụ sau. Ở đây, tôi có một tập dữ liệu với các cột Year, Product, Region và SalesAmount.

Bảng tên sales_data. Ảnh: Tác giả.
Ở đây, tôi nhóm theo Year và Region để tính Total Sales cho từng tổ hợp.
SummarizedTable =
SUMMARIZE(
sales_data,
sales_data[Year],
sales_data[Region],
"Total Sales", SUM(sales_data[SalesAmount])
)
Trong công thức này:
-
sales_datalà bảng lưu trữ dữ liệu. -
sales_data[Year]là cột đầu tiên để nhóm theo Year. -
sales_data[Region]là cột thứ hai để nhóm theo Region. -
"Total Sales"là tên cột tùy chỉnh cho tổng doanh số. -
SUM(SalesData[SalesAmount])cộng doanh số cho mỗi nhóm.

Tóm tắt nhiều cột. Ảnh: Tác giả.
Ở đây, việc nhóm nhiều mức giúp chúng ta hình dung xu hướng bán hàng theo cả Region lẫn Year. Khu vực North và East tăng trưởng từ 2021 đến 2023. South có doanh số cao năm 2022, trong khi West chỉ có dữ liệu cho 2022–2023.
Kỹ thuật nâng cao với DAX SUMMARIZE()
Mặc dù SUMMARIZE() hữu ích, bạn có thể kết hợp với các hàm DAX khác để thực hiện phân tích dữ liệu tinh vi hơn. Hãy xem một số ví dụ để thấy các kỹ thuật nâng cao có thể tận dụng SUMMARIZE() cho các phép tổng hợp và tóm tắt phức tạp như thế nào.
Dùng SUMMARIZE() với ROLLUP()
Tính năng ROLLUP() trong SUMMARIZE() thêm các hàng tổng phụ vào bảng tóm tắt để hiển thị tổng ở các cấp độ nhóm khác nhau và cung cấp tóm tắt phân cấp chi tiết hơn. Nếu bạn làm trong lĩnh vực tài chính hoặc vai trò phân tích liên quan, điều này đặc biệt hữu ích cho các phép tổng hợp nhiều cấp.
-
Thêm từ khóa
ROLLUP()sau các cột nhóm trongSUMMARIZE(). -
Chỉ định cột nào sẽ được đưa vào tính toán
ROLLUP().
SUMMARIZE(<table>, <groupBy_columnName>[, <groupBy_columnName>]…[, ROLLUP(<groupBy_columnName>[,< groupBy_columnName>…])][, <name>, <expression>]…)
Ví dụ, tập dữ liệu này hiển thị Sales và Quantity của từng Product trong một Region cụ thể. Giờ tôi cần tìm tóm tắt doanh số theo Region và Product, kèm tổng phụ và tổng cộng.

Bảng tên sales_rollup. Ảnh: Tác giả.
Để làm vậy, tôi dùng công thức sau:
SalesWithRollup =
SUMMARIZE(
sales_rollup,
ROLLUP(sales_rollup[Region], sales_rollup[Product]),
"Total Sales", SUM(sales_rollup[Sales]),
"Total Quantity", SUM(sales_rollup[Quantity])
)

Sử dụng hàm ROLLUP(). Ảnh: Tác giả.
Bạn có thể thấy — ở đây hàm SUMMARIZE() nhóm dữ liệu bán hàng theo Region và Product để tính Total Sales và Total Quantity. ROLLUP() thêm các hàng tổng phụ và tổng cộng để cung cấp tóm tắt phân cấp về hiệu suất bán hàng ở các mức độ chi tiết khác nhau.
Kết hợp SUMMARIZE() với ADDCOLUMNS()
Bạn cũng có thể mở rộng SUMMARIZE() với ADDCOLUMNS() để thêm các cột tính toán tùy chỉnh vào dữ liệu đã nhóm. Điều này hữu ích nếu bạn muốn thêm measure hoặc các phép tính phức tạp vào bảng tóm tắt.
Ví dụ, tôi dùng lại tập dữ liệu này và áp dụng công thức sau để lần này thêm một cột mới:
SalesWithAddColumns =
ADDCOLUMNS(
SUMMARIZE(
sales_rollup,
sales_rollup[Region],
sales_rollup[Product],
"Total Sales", SUM(sales_rollup[Sales]),
"Total Quantity", SUM(sales_rollup[Quantity])
),
"Average Sales per Unit",
DIVIDE(SUM(sales_rollup[Sales]), SUM(sales_rollup[Quantity]), 0)
)

Kết hợp SUMMARIZE() và ADDCOLUMNS(). Ảnh: Tác giả.
Ở đây, hàm SUMMARIZE() nhóm doanh số theo Region và Product để tính Total Sales và Total Quantity. ADDCOLUMNS() sau đó tính Average Sales per Unit bằng cách chia tổng doanh số cho tổng số lượng của từng nhóm.
Các vấn đề DAX thường gặp và cách khắc phục
Khi dùng SUMMARIZE(), bạn có thể gặp một vài vấn đề. Nhưng đừng lo — ai cũng từng gặp — tôi sẽ hướng dẫn bạn qua một số thách thức phổ biến và cách xử lý.
Tránh kết quả mơ hồ
Đôi khi, SUMMARIZE() có thể cho ra kết quả không hợp lý. Thường xảy ra khi mô hình dữ liệu hoặc quan hệ chưa rõ ràng. Cách tránh như sau:
-
Kiểm tra lại mô hình dữ liệu: Đảm bảo tất cả các bảng được liên kết đúng.
-
Dùng tên cột rõ ràng: Tránh trùng tên giữa các bảng khác nhau.
-
Chỉ rõ tên bảng: Khi tham chiếu cột, hãy kèm tên bảng (như
Orders[OrderDate]) để tránh nhầm lẫn.
Lưu ý về hiệu năng
Mặc dù SUMMARIZE() hữu ích, nó có thể tốn tài nguyên và làm chậm khi xử lý tập dữ liệu lớn. Điều này có nghĩa báo cáo của bạn có thể mất nhiều thời gian làm mới hơn, đặc biệt nếu bạn dùng hàm trong các measure phức tạp hoặc với nhiều cột nhóm.
Một vài mẹo để truy vấn nhanh hơn:
-
Cân nhắc dùng cột tính toán: Với các tóm tắt dùng thường xuyên, hãy tạo cột tính toán thay vì gọi
SUMMARIZE()mỗi lần. -
Loại bỏ cột không cần thiết: Bỏ các cột không liên quan đến phân tích, như khóa chính hoặc các cột có thể tính từ cột khác.
-
Dùng bộ lọc: Dùng DAX
SUMMARIZE()cùngFilter()trước khi tóm tắt để giảm lượng dữ liệu cần xử lý.
Các lựa chọn thay thế DAX cho SUMMARIZE()
Mặc dù SUMMARIZE() hữu dụng, đôi khi công cụ khác có thể làm tốt hơn. Hãy xem một vài lựa chọn thay thế và khi nào nên dùng.
SUMMARIZECOLUMNS()
SUMMARIZECOLUMNS() là một hàm DAX khác giúp tạo bảng tóm tắt dễ dàng hơn khi làm việc với dữ liệu lớn hoặc tình huống phức tạp. Nó giống SUMMARIZE() nhưng có vài điểm khác.
-
Bạn có thể thêm bộ lọc trực tiếp vào
SUMMARIZECOLUMNS(), giúp nhanh hơn. -
Với
SUMMARIZECOLUMNS(), bạn có thể đưa measure trực tiếp vào đầu ra. Không cần thêm hàm nhưADDCOLUMNS(). -
SUMMARIZECOLUMNS()tự động xử lý các hàng trống, nên bạn không phải lo.
SUMMARIZECOLUMNS(
<groupBy_columnName> [, <groubBy_columnName>] …, [<filterTable>] … [, <name>, <expression>] …
)
Ví dụ, tôi có một tập dữ liệu và muốn tóm tắt lương nhân viên theo Region và Department đồng thời lọc những nhân viên có tên Raven. Tôi sẽ dùng hàm SUMMARIZECOLUMNS() để tính tổng lương của Raven theo các khu vực và phòng ban khác nhau.

Bảng tên employee_data. Ảnh: Tác giả.
Với yêu cầu này, tôi dùng công thức sau:
SalarySummary =
SUMMARIZECOLUMNS(
employee_data[Name],
employee_data[Region],
employee_data[Department],
FILTER(employee_data, employee_data[Name] = "Raven"),
"Total Salary", SUM(employee_data[Salary])
)
Trong công thức trên:
-
SalarySummarylà tên của bảng tính toán được tạo. -
SUMMARIZECOLUMNS(...)tạo một bảng tóm tắt dựa trên các cột và phép tính được chỉ định. -
employee_data[Name], employee_data[Region], employee_data[Department]là các cột dùng để nhóm dữ liệu. -
FILTER(employee_data, employee_data[Name] = "Raven")giới hạn kết quả chỉ gồm các hàng có Name là Raven. -
"Total Salary", SUM(employee_data[Salary])tạo một cột tính toán trong kết quả. -
SUM(employee_data[Salary])tính tổng tất cả giá trị Salary cho mỗi nhóm.

Dùng SUMMARIZECOLUMNS để tóm tắt kết quả. Ảnh: Tác giả.
Bạn có thể thấy — hàm SUMMARIZECOLUMNS() lọc qua tập dữ liệu và tính tổng lương của Raven theo các địa điểm và phòng ban khác nhau.
GROUPBY()
GROUPBY() là một hàm khác đôi khi có thể thay thế SUMMARIZE() khi bạn chỉ cần nhóm dữ liệu và thực hiện phép tính trên các nhóm đó. Nó có thể hiệu quả hơn SUMMARIZE() cho các thao tác nhóm đơn giản.
Trong khi SUMMARIZE() có thể hoạt động trên các bảng liên quan, GROUPBY() tập trung vào nhóm và tổng hợp trong một bảng đơn, giúp cải thiện hiệu năng trong một số tình huống.
Hãy xem ví dụ. Tôi cần tạo một tập dữ liệu tồn kho để theo dõi mặt hàng, danh mục, số lượng bán và đơn giá, sau đó nhóm dữ liệu theo danh mục để tính tổng doanh thu cho từng danh mục.

Bảng Inventory. Ảnh: Tác giả.
Với yêu cầu này, tôi dùng công thức sau:
SummaryGroupBY =
GROUPBY(
Inventory,
Inventory[Category],
"Total Revenue",
SUMX(
CURRENTGROUP(),
Inventory[Units Sold] * Inventory[Unit Price]
)
)
Trong công thức trên:
-
GROUPBY()nhóm dữ liệu theo Category. -
CURRENTGROUP()tham chiếu tới từng nhóm danh mục (ví dụ: electronics, furniture hoặc appliances). -
SUMX()tính tổng doanh thu cho mỗi nhóm bằng cách nhân Units Sold với Unit Price.

Dùng GROUPBY để nhóm dữ liệu. Ảnh: Tác giả.
Bạn có thể thấy — hàm GROUPBY() dễ dàng tính Total Revenue bằng cách nhân Units Sold với Unit Price cho từng mặt hàng trong danh mục và tóm tắt các doanh thu riêng lẻ này.
Kết luận về DAX SUMMARIZE()
Giờ đây bạn đã biết hàm SUMMARIZE() trong DAX có thể giúp nhóm và phân tích dữ liệu trong Power BI, Excel và các công cụ khác như thế nào. Từ nhóm cơ bản đến kỹ thuật nâng cao như ROLLUP() và ADDCOLUMNS(), SUMMARIZE() giúp tạo các bản tóm tắt nhiều insight.
Vì “trăm hay không bằng tay quen”, hãy thử các kỹ thuật này với dữ liệu của riêng bạn để xem chúng giúp bạn khai phá insight hữu ích ra sao. Nếu muốn trau dồi kỹ năng DAX hơn nữa, hãy đăng ký Giới thiệu về DAX trong Power BI để trở thành một power user thực thụ.
Tôi là một chiến lược gia nội dung, yêu thích việc đơn giản hóa các chủ đề phức tạp. Tôi đã giúp các công ty như Splunk, Hackernoon và Tiiny Host tạo nội dung hấp dẫn và giàu thông tin cho khán giả của họ.
Câu hỏi thường gặp về DAX Summarize()
Hàm SUMMARIZE() có phân biệt chữ hoa/thường không?
DAX nói chung không phân biệt chữ hoa/thường, vì vậy tên cột dùng trong SUMMARIZE() không cần khớp đúng kiểu chữ với dữ liệu gốc.
Những lỗi thường gặp khi dùng SUMMARIZE() là gì?
Lỗi thường gặp gồm lỗi cú pháp, tham chiếu tên cột không tồn tại và vấn đề hiệu năng với tập dữ liệu lớn. Để tránh, hãy luôn kiểm tra kỹ các đối số của hàm và mô hình dữ liệu của bạn.
SUMMARIZE() và SUMMARIZECOLUMNS() khác nhau thế nào về ngữ cảnh?
SUMMARIZE() giữ cả ngữ cảnh hàng và ngữ cảnh bộ lọc cho các phép tổng hợp, trong khi SUMMARIZECOLUMNS() chỉ có ngữ cảnh bộ lọc.

Đừng vật lộn với các bộ dữ liệu lớn. Hãy làm chủ nghệ thuật nhóm và tổng hợp dữ liệu bằng hàm DAX
SUMMARIZE(), cho phép bạn khám phá các mẫu ẩn và đưa ra quyết định tốt hơn. Với DAXSUMMARIZE(), bạn có thể tạo một bản báo cáo thu gọn ngay trong tập dữ liệu lớn của mình, chọn thông tin cần nhóm và những con số cần cộng. Công cụ này cực kỳ, cực kỳ hữu ích.Tiếp tục đọc, tôi sẽ giúp bạn hiểu chi tiết về DAX
SUMMARIZE()để bạn có thể dùng hiệu quả trong rất nhiều tình huống. Nếu bạn mới làm quen với DAX và muốn có thêm tài liệu, hãy xem thêm Hướng dẫn Power BI DAX cho người mới bắt đầu để có cái nhìn tổng quan hơn. Bạn cũng có thể tham gia khóa học Giới thiệu về DAX trong Power BI để được đào tạo thực tế; khóa học bao gồm cả kỹ thuật cơ bản và nâng cao, phù hợp với chuyên gia ở mọi cấp độ.Hàm DAX SUMMARIZE() là gì?
Hàm DAX
SUMMARIZE()lấy dữ liệu của bạn và nhóm theo các cột bạn chọn. Sau đó, nó tính tổng hoặc các phép tóm tắt khác cho từng nhóm.Ví dụ, giả sử bạn có một danh sách lớn dữ liệu bán hàng với thông tin về sản phẩm, khu vực và số tiền bán. Khi đó, bạn có thể dùng
SUMMARIZE()để nhóm tất cả dữ liệu đó theo sản phẩm hoặc khu vực và xem tổng doanh số cho từng nhóm.Bạn sẽ gặp DAX trong một số công cụ của Microsoft, như:
Khi hiểu
SUMMARIZE(), bạn có thể tổ chức dữ liệu hiệu quả hơn bằng cách tạo báo cáo tốt hơn và đào sâu dữ liệu để có những insight giá trị. Lần tới khi làm việc với bộ dữ liệu lớn và cần nắm bắt nhanh, hãy dùng hàmSUMMARIZE().