簡體   English   中英

DAX - Rankx 按多個類別問題

[英]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 在矩陣/列中顯示每個日期的連續月份總和。 然后我提出另一種方法來實現結果。 如您所知,對矩陣中的每一行執行計算,並根據矩陣行和列(切片器)中顯示的數據過濾數據模型。 所以,我的想法是——

  1. 從 matrixRow 獲取日期並將其用作表格的最大日期。
  2. 然后使用 FILTER()。 FILTER() 是一個迭代函數,因此它會拋出每一行並檢查過濾條件 - 如果為真,則保留行,如果為假 - 不是。

我使用以下過濾條件:

獲取 dateInMatrix-dateInACurrentTableRow (例如: 202203-202201= 2 months ) 然后檢查表中有多少行min=202201max<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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM