[英]DAX - Rankx by multiple Categories Issue
我有 4 個類別(GP、ID、年齡、日期)。 我想按 GP、ID 和年齡以及按日期的排名/計數創建計算列和組,以查看每個成員在過去 24 個月中有多少個月。
我的代碼一直有效,直到我的會員取消了幾個月的會員資格,然后又恢復了會員資格。 我需要從跳過后的第一個月重新開始。 例如 :
GP ID AGE DATE RKING Desired RANK
1 220 35-44 202206 12 6
1 220 35-44 202205 12 5
1 220 35-44 202204 12 4
1 220 35-44 202203 12 3
1 220 35-44 202202 12 2
1 220 35-44 202201 12 1
1 220 35-44 202012 24 24
1 220 35-44 202011 23 23
1 220 35-44 202010 22 22
1 220 35-44 202009 21 21
1 220 35-44 202008 20 20
1 220 35-44 202007 19 19
1 220 35-44 202006 18 18
1 220 35-44 202005 17 17
1 220 35-44 202004 16 16
… … … … … …
1 220 35-44 201901 1 1
這是我嘗試過的,但不適用於跳過日期。
RKING Column=
RANKX (
CALCULATETABLE (
VALUES ('tbl'[Date] ),
ALLEXCEPT ( 'tblW', 'tbl'[GP], 'tbl'[ID] ),
'tbl'[AGE] = 'tbl'[AGE],
'tbl'[date] >= start_date && 'tbl'[date] <= end_date // date slicer
),
[Date] ,
,ASC
)
如果正確理解您的需求,您希望根據 ID/GP/AGE/DATE 在矩陣/列中顯示每個日期的連續月份總和。 然后我提出另一種方法來實現結果。 如您所知,對矩陣中的每一行執行計算,並根據矩陣行和列(切片器)中顯示的數據過濾數據模型。 所以,我的想法是——
我使用以下過濾條件:
獲取 dateInMatrix-dateInACurrentTableRow (例如: 202203-202201= 2 months
) 然后檢查表中有多少行min=202201
和max<202203
如果行數少於日期差,則為 FALSE() 並且該行超出桌子。 3)最后一步是計算過濾表的行數。
Ranking =
VAR matrixDate=MAX('table'[DATE])
VAR filteredTable =
FILTER(
ALL('table')
,DATEDIFF(
DATE(LEFT([DATE],4),RIGHT([DATE],2),1)
,DATE(LEFT(matrixDate,4),RIGHT(matrixDate,2),1)
,MONTH
)
=
VAR dateInRow=[DATE]
RETURN
CALCULATE(
COUNTROWS('table')
,'table'[DATE]>=dateInRow
,'table'[DATE]<matrixDate
)
)
RETURN
COUNTROWS(filteredTable)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.