Đánh giá phân nhóm DAX
Trong biện pháp này - tôi đang tạo một bảng tạm thời để nhóm theo ID khách hàng và trả lại năm của ngày_đặt_hàng tối thiểu cho mỗi khách hàng. Sau đó, tôi muốn đếm số lượng khách hàng hiển thị trong một năm nhất định (về cơ bản chỉ là số hàng).
Điều tôi đang đấu tranh để hiểu là - công thức này dường như không nhìn vào SUMMARIZE
bảng bên trong nó. Nếu tôi đặt năm và số đo này trong một ma trận, nó được tính dựa trên bảng thô, không phải phiên bản được nhóm được xây dựng SUMMARIZE
trong công thức. Bất kỳ ý tưởng tại sao nó đánh giá theo cách này?
COUNTROWS(
SUMMARIZE(
Orders,
Orders[Customer ID],
"min_order_date_year",
MIN(Orders[Order Date].[Year])))
Trả lời
Công thức là OK theo logic bạn đã cung cấp cho nó. Bạn phải rõ ràng về cả yêu cầu của bạn và những gì bạn đang viết trong mã của mình. Công thức của bạn đang trả về chính xác những gì bạn đang hướng dẫn.
Nếu tôi hiểu đúng, bạn chỉ cần số lượng Khách hàng cho Năm Tối thiểu. Giả sử nếu bạn có 6 khách hàng duy nhất cho Năm 2019 và 11 khách hàng duy nhất cho Năm 2020, bạn đang tìm kiếm giá trị 6 sẽ trả lại theo số đo của mình.
Bây giờ, bảng tóm tắt của bạn thực sự trả về những gì? nếu bạn chỉ tạo một bảng tùy chỉnh riêng cho mã Tóm tắt như bên dưới, bạn có thể thấy bảng sẽ thực sự chứa tất cả tên / id khách hàng của bạn trong cột đầu tiên và cột thứ hai sẽ lỗ MIN năm khả dụng cho khách hàng đó.
orders_summarize =
SUMMARIZE(
Orders,
Orders[customer id],
"min_order_date_year",MIN(Orders[Order Date].[Year])
)
Vì vậy, về cơ bản bạn có danh sách tất cả khách hàng trong bảng tóm tắt của mình. Và bây giờ bạn đang đếm các hàng trong bảng tóm tắt của mình, bảng này thực sự đang trả về tổng số khách hàng duy nhất.
Cuối cùng, nếu bạn muốn số lượng khách hàng trong một Năm cụ thể (như MIN năm), hãy làm theo các bước sau-
Bước-1: Tạo bảng tóm tắt tùy chỉnh như bên dưới-
store_summarized_table =
SUMMARIZE(
store,
store[Customer ID],
"mindate",MIN(store[Order Date])
)
Bước 2: Tạo một thước đo như-
count_cust_id = COUNT('store_summarized_table'[Customer ID])
Bước 3: Bây giờ định cấu hình hình ảnh Ma trận của bạn như thể hiện trong hình ảnh bên dưới. Bạn cũng có thể lấy đầu ra trong hình ảnh-
Để tránh Bảng vật lý, bạn có thể làm điều này bên dưới-
Bước-1: Tạo một cột tùy chỉnh như bên dưới-
is_min_year =
// -- keep current row's customer id to a variable
VAR current_cust_id = store[Customer ID]
// -- keep current row's YEAR value to a variable
VAR current_year = store[Order Date].[Year]
// -- find the MIN YEAR from order date for the current row customer id
VAR min_year_current_custommer_id =
CALCULATE(
MIN(store[Order Date].[Year]),
FILTER(
store,
store[Customer ID] = current_cust_id
)
)
// -- check the current row's year is the MIN year of order date for the customer as well or not.
RETURN IF(current_year = min_year_current_custommer_id, 1,0)
HOẶC tạo một thước đo như-
is_min_year_measure =
VAR min_order_year_for_current_customer =
CALCULATE(
MIN(store[Order Date].[Year]),
FILTER(
ALL(store),
store[Customer ID] = MIN(store[Customer ID])
)
)
RETURN
IF ( MIN(store[Order Date].[Year]) = min_order_year_for_current_customer, 1,0)
Bước 2: Tạo một thước đo như bên dưới-
Đối với Cột tùy chỉnh đã tạo
count_cust_for_min_year =
CALCULATE(
DISTINCTCOUNT(store[Customer ID]),
FILTER(
store,
store[is_min_year] = 1
)
)
Đối với biện pháp đã tạo
count_cust_for_min_year =
CALCULATE(
DISTINCTCOUNT(store[Customer ID]),
FILTER(
store,
[is_min_year_measure] = 1
)
)
Bây giờ, hãy thêm "Ngày đặt hàng" và đo lường "count_cust_for_min_year" vào Ma trận của bạn. Việc đưa ra sẽ giống như bên dưới-