Trong quá trình làm việc với Power BI, việc tối ưu hóa mô hình dữ liệu và báo cáo là một bài toán quan trọng đối với các nhà phân tích dữ liệu. Để giảm tải số lượng công thức, tăng tính linh hoạt và giúp báo cáo trở nên gọn gàng, tính năng Calculation Group đã trở thành một giải pháp hiệu quả. Trước đây, việc tạo Calculation Group thường yêu cầu sử dụng các công cụ bổ trợ như Tabular Editor. Tuy nhiên, từ cuối năm 2023, Power BI Desktop đã tích hợp trực tiếp tính năng này, cho phép người dùng tạo và quản lý Calculation Group một cách dễ dàng mà không cần đến công cụ bên ngoài. Sau đây, hãy cùng mình khám phá tính năng mạnh mẽ này nhé!

1. Calculation Group là gì?

Calculation Group là một tính năng trong Power BI giúp định nghĩa các phép tính (logic) chung một lần và áp dụng cho nhiều Measures (chỉ số) khác nhau. Thay vì tạo các công thức DAX riêng lẻ cho từng chỉ số, bạn chỉ cần tạo Calculation Items trong Calculation Group, giúp tiết kiệm thời gian và tối ưu hóa mô hình dữ liệu.

2. Các hàm nổi bật có thể sử dụng trong Calculation Items

  • SELECTEDMEASURE(): Dùng để trả về giá trị của measure hiện tại trong ngữ cảnh của Calculation Item.
  • SELECTEDMEASURENAME(): Trả về tên của measure hiện tại dưới dạng chuỗi. Dùng để áp dụng logic khác nhau dựa trên tên measure.

Ví dụ:

IF(CONTAINSSTRING(SELECTEDMEASURENAME(), “Doanh Thu”), SELECTEDMEASURE() * 1.1, SELECTEDMEASURE())

Hàm trên tăng giá trị của measure lên 1.1 lần nếu như trong tên measure có chứa từ “doanh thu”.

  • CALCULATE(): Thay đổi ngữ cảnh tính toán của biểu thức sử dụng bộ lọc.
  • SWITCH(): Chọn giá trị dựa trên biểu thức hoặc điều kiện.

Ví dụ:

SWITCH(

TRUE(),

SELECTEDMEASURENAME() = “Doanh Thu”, SELECTEDMEASURE() * 1.1,

SELECTEDMEASURENAME() = “Chi Phí”, SELECTEDMEASURE() * 0.9,

SELECTEDMEASURE()

)

  • USERELATIONSHIP(): Kích hoạt một mối quan hệ giữa hai cột trong mô hình dữ liệu. Có thể kết hợp với CALCULATE() để thay đổi ngữ cảnh tính toán khi cần kích hoạt mối quan hệ cụ thể.

Ví dụ: Kích hoạt mối quan hệ giữa bảng Sales và bảng Date khi tính toán Measure.

CALCULATE(SELECTEDMEASURE(), USERELATIONSHIP(‘Sales'[Date], ‘Date'[Date]))

3. Các bước tạo Calculation Group

3.1 Ví dụ 1: Sử dụng với các hàm Time Intelligence

Sau đây, chúng ta sẽ đi vào ví dụ cụ thể về cách tạo và tính toán với Calculation Group.

Bối cảnh dữ liệu:

  • Mô hình dữ liệu: Gồm các bảng chính như Date, Sales, ProductCustomer.
  • Các chỉ số cần phân tích:
    • Doanh thu
    • Chi phí
    • Lợi nhuận
    • Số lượng bán

Tạo và tính toán với Calculation Group:

Bước 1: Khởi tạo Calculation Group

  • Sau khi đã load data thành công vào Power BI Desktop, chúng ta vào tab Model View và chọn Calculation Group ở trên thanh công cụ để khởi tạo.
  • Đặt tên cho Calculation Group. Ở đây, chúng ta sẽ để là “Time Intelligence”.

Bước 2: Thêm Calculation Items

Calculation Items là gì?

  • Là cốt lõi của Calculation Group, nơi bạn định nghĩa các phép tính cụ thể.
  • Tạo logic hoặc phép tính áp dụng lên các measures.
  • Được viết dưới dạng công thức DAX.

Trong Model View, nhấp chuột phải vào bảng Time Intelligence vừa tạo, chọn “New Calculation Item”. Lúc này, một cửa sổ DAX Editor sẽ hiện ra để bạn nhập công thức.

Tiếp theo, chúng ta sẽ thêm lần lượt các Calculation Items với các công thức DAX sau:

    • Year-To-Date:

YTD = CALCULATE(SELECTEDMEASURE(), DATESYTD(‘Date'[Date]))

    • Quarter-To-Date:

QTD = CALCULATE(SELECTEDMEASURE(), DATESQTD(‘Date'[Date]))

    • Previous Year:

PY = CALCULATE(SELECTEDMEASURE(), SAMEPERIODLASTYEAR(‘Date'[Date]))

Bước 3: Áp dụng Calculation Group trong báo cáo

Sau khi đã tạo Calculation Group và thêm các Calculation Items như trên, bạn có thể sử dụng chúng trong báo cáo như sau:

    • Tạo các Measures gốc:
    • Chọn New Measure và thêm các công thức:

Doanh thu = SUM(Sales[Sales Amount])

Chi phí = SUMX(sales, Sales[Order Quantity] * Sales[Product Standard Cost])

Lợi nhuận = [Doanh thu] – [Chi phí]

Số lượng bán = SUM(Sales[Order Quantity])

  • Thêm Calculation Group vào báo cáo:
    • Quay lại Report View, ở Visualizations pane, chọn biểu đồ bạn cần sử dụng. Ví dụ, chúng ta sẽ chọn biểu đồ Matrix.

    • Kéo Calculation Group Column Time Intelligence từ bảng Time Intelligence vào Columns.
    • Kéo các Measures gốc (Doanh thu, Chi phí, Lợi nhuân, Số lượng bán) vào Values.

Lúc này, Power BI sẽ tự động tính toán các phép tính YTD, QTD, PY cho từng Measure gốc. Báo cáo sẽ hiển thị như sau:

Bạn cũng có thể tự tùy chỉnh thứ tự hiển thị cho các Calculation Items bằng cách vào Model View, chọn bảng Time Intelligence rồi kéo thả các items trong mục “Calculation item order” để sắp xếp.

Đối với cách làm thông thường, bạn sẽ phải tạo từng measure riêng lẻ cho mỗi chỉ số và mỗi phép tính. Ví dụ như: Sales YTD, Cost YTD, Quantity YTD, Sales QTD, Cost QTD, Quantity QTD, …

Điều này dẫn đến việc tiêu tốn nhiều thời gian cho việc tạo và quản lý các measures cũng như khiến mô hình dữ liệu khó quản lý hơn khi số lượng measures quá nhiều. Đồng thời, khi cần thêm chỉ số mới hoặc thay đổi logic tính toán, bạn cũng sẽ phải chỉnh sửa từng measure một.

Do đó, thay vì cách làm thông thường, chúng ta hoàn toàn có thể áp dụng tính năng Calculation Group để tiết kiệm thời gian, công sức và giúp quản lý, mở rộng các measures một cách dễ dàng hơn.

3.2 Ví dụ 2: Quy đổi đơn vị tiền tệ với Calculation Group

Chúng ta sẽ thực hiện một ví dụ quy đổi đơn vị tiền tệ giữa USD và VND trong Power BI sử dụng Calculation Group. Ví dụ này sẽ khai thác cách sử dụng API tỷ giá để lấy dữ liệu tái hiện tự động, kết hợp với Calculation Group nhằm tạo ra một slicer cho phép người dùng lựa chọn quy đổi giữa các đơn vị tiền tệ.

Bước 1: Lấy API key từ ExchangeRate-API

Truy cập trang https://www.exchangerate-api.com và đăng ký một API key

Bước 2: Kết nối API và lấy dữ liệu

  • Trong Power BI Desktop, chọn Get Data > Web.
  • Nhập URL API vừa được cung cấp sau khi đăng ký từ trang web trên.
  • Import dữ liệu và lựa chọn các trường dữ liệu phù hợp với mục đích. Sau đó, ta sẽ được một bảng dữ liệu về tỉ giá như trên hình:

  • Bạn có thể refresh tỷ giá trong Power BI Desktop bất kỳ khi nào bằng cách nhấn chuột phải vào bảng dữ liệu tỉ giá rồi chọn refresh data để API tự động tải dữ liệu mới nhất.

Bước 3: Tạo Calculation Group

Tương tự như đã làm trong ví dụ trước, chúng ta sẽ tạo Calculation Group mới và tạo 2 Calculation Items như sau:

      • Calculation Item 1: USD

USD =

IF(

CONTAINSSTRING(SELECTEDMEASURENAME(), “%”) ||

CONTAINSSTRING(SELECTEDMEASURENAME(), “text”),

SELECTEDMEASURE(),

DIVIDE(SELECTEDMEASURE(), MAX(USD[conversion_rates.VND]))

)

Chức năng: Quy đổi các Measures trong báo cáo từ VND sang USD, ngoại trừ các Measures trong tên có chữ “text” hoặc ký tự “%”.

Lưu ý: Đặt tên các Measures trong mô hình dữ liệu theo logic thống nhất với logic trong calculation item để tránh xảy ra lỗi khi Calculation Group thực hiện.

      • Calculation Item 2: VND

VND = SELECTEDMEASURE()

Chức năng: Giữ nguyên Measures trong báo cáo (mặc định là VND).

Bước 4: Tạo một slicer, kéo Calculation Group Column vào để tạo nút chuyển đổi giữa 2 đơn vị tiền tệ.

Kết quả:

Giá trị các trường dữ liệu liên quan đến tiền tệ theo USD

Giá trị các trường dữ liệu liên quan đến tiền tệ theo VND

3.3 Ví dụ 3: Thay đổi linh hoạt giá trị cột với Calculation Group

Bước 1: Chuẩn bị các measures cần thiết

Ở đây ta có 2 measures chính đối với dữ liệu kết quả kinh doanh của cửa hàng:

  • % Chênh Lệch Vs. KH: Tỷ lệ % chênh lệch giữa doanh thu thực tế và kế hoạch.
  • % Tăng Trưởng So Với Cùng Kỳ: Tỷ lệ % tăng trưởng so với cùng kỳ năm ngoái.

Bước 2: Tạo Calculation Group

Tạo Calculation Group với tên là Dynamic Analysis, gồm các items như sau để gắn nhãn cho các giá trị khi so với kế hoạch hoặc đánh giá tình trạng tăng trưởng.

      • Calculation Item 1: Đánh giá kế hoạch

Đánh giá kế hoạch =

IF(

SELECTEDMEASURENAME() = “% Chênh Lệch Vs. KH”,

SWITCH(

TRUE(),

[% Chênh Lệch Vs. KH] >= 0, “Đạt kế hoạch”,

[% Chênh Lệch Vs. KH] >= -0.1, “Gần đạt kế hoạch”,

“Không đạt kế hoạch”

),

SELECTEDMEASURE()

)

  • Calculation Item 2: Đánh giá tăng trưởng

Đánh Giá Tăng Trưởng =

IF(

ISINSCOPE(‘Dynamic Analysis'[Calculation group column]) &&

‘Dynamic Analysis'[Calculation group column] = “Tình hình tăng trưởng”,

SWITCH(

TRUE(),

[% Tăng Trưởng So Với Cùng Kỳ] >= 0.3, “Tăng trưởng mạnh”,

[% Tăng Trưởng So Với Cùng Kỳ] > 0, “Tăng trưởng”,

[% Tăng Trưởng So Với Cùng Kỳ] <= -0.3, “Suy giảm mạnh”,

“Suy giảm”

),

SELECTEDMEASURE()

)

Bước 3: Thiết lập slicer hiển thị hai lựa chọn: Đánh giá kế hoạch và Đánh giá tăng trưởng.

Khi chọn nút Đánh giá kế hoạch, bảng sẽ hiển thị trạng thái kế hoạch của từng cửa hàng trong cột “So Với Kế Hoạch” trong bảng.

Khi chọn nút Đánh giá tăng trưởng, bảng sẽ hiển thị trạng thái tăng trưởng (tăng trưởng mạnh, suy giảm, …) so với cùng kỳ trong cột “Tình Hình Tăng Trưởng” trong bảng.

Khi hoàn tất, bạn sẽ có một báo cáo linh hoạt, hiển thị rõ ràng cả trạng thái “Kế hoạch” và “Tăng trưởng” theo lựa chọn từ slicer. Điều này giúp cung cấp thêm thông tin hữu ích, cho phép người dùng nhanh chóng đánh giá hiệu suất từ nhiều góc độ khác nhau chỉ với một bảng báo cáo.

4. Ưu điểm và những điều cần lưu ý của Calculation Group

4.1 Ưu điểm

  • Giảm đáng kể thời gian viết các công thức DAX. Thay vì viết riêng từng Measure cho các phép tính tương tự, bạn chỉ cần định nghĩa 1 lần trong Calculation Group.
  • Giảm số lượng Measures trong mô hình, giúp mô hình dữ liệu trở nên gọn gàng và dễ quản lý hơn.
  • Giúp tăng tính linh hoạt, dễ dàng chỉnh sửa và mở rộng các phép tính mà không cần thay đổi từng Measure, phù hợp để phân tích các mô hình dữ liệu lớn.

4.2 Những điều cần lưu ý

  • Khi sử dụng Calculation Groups, các Calculation Items trong nhóm có thể thay đổi ngữ cảnh của measures. Điều này có thể làm thay đổi hoặc xung đột với các ngữ cảnh đã được định nghĩa trước.
  • Calculation Groups chỉ hoạt động với measures và không áp dụng cho cột tính toán (Calculated Columns).
  • Các biểu đồ do bên thứ ba cung cấp hoặc biểu đồ không phải mặc định của Power BI có thể không tương thích với Calculation Groups. Một số loại visual phức tạp hoặc đặc thù có thể không hiển thị đúng dữ liệu khi dùng Calculation Groups.
  • Calculation Group không thể sử dụng với một số hàm liên quan đến mối quan hệ dữ liệu, như USERELATIONSHIP, RELATED, RELATEDTABLE.
  • Trong các kịch bản phức tạp, cần kiểm tra cẩn thận ngữ cảnh áp dụng để tránh lỗi logic với Calculation Group.

5. Kết luận

Calculation Group trong Power BI là một công cụ mạnh mẽ giúp bạn đơn giản hóa các phép tính phức tạp, đặc biệt khi làm việc với các chỉ số lặp lại hoặc liên quan đến Time Intelligence. Với khả năng định nghĩa một lần và áp dụng trên toàn bộ các Measures, Calculation Group không chỉ giúp tiết kiệm thời gian mà còn làm gọn mô hình dữ liệu, tăng tính linh hoạt và dễ dàng mở rộng trong tương lai.

Mặc dù còn tồn tại một số hạn chế như ảnh hưởng đến hiệu suất trên dataset lớn hoặc chưa hỗ trợ đầy đủ cho tất cả các loại biểu đồ và hàm DAX, những ưu điểm vượt trội của tính năng này vẫn khiến nó trở thành một phần không thể thiếu trong việc xây dựng các báo cáo Power BI chuyên nghiệp.