power bi RANKX为所有行返回1

时间:2019-09-04 08:39:06

标签: powerbi powerbi-desktop

我正在尝试对每日股价明细表中的每一行进行排名,以找出前一天的收盘价:

stock daily prices

我使用的代码是:

rank = 
RANKX(
    FILTER(
        ALL(NSE_DAILY_REPORT),
        NSE_DAILY_REPORT[SYMBOL]="ADLABS"
    ), 
    MAX(NSE_DAILY_REPORT[TDATE]),,
    ASC
)

问题在于,它为所有行返回1的等级。

2 个答案:

答案 0 :(得分:0)

尝试将MAX(NSE_DAILY_REPORT[TDATE])更改为NSE_DAILY_REPORT[SCLOSE]

第二个参数要求一个表达式与过滤后的子集中相同表达式的求值进行比较。使用MAX将使每条记录仅排在一组记录中,因此所有行均排为1。

答案 1 :(得分:0)

因此,如果我正确理解您的目标是获取前一天的收盘价?

在这种情况下,与您作为示例分享的帖子相比,RANKX()是不必要的。在那里,他们首先创建一个排名,然后执行相当低效的计算来获得前一个排名,从而创建普通性。由于您有日期列,因此已经存在普通性。 Power BI已经知道如何解释该比例,因此获取前一天的值不需要额外的排名。

围绕堆栈溢出的大量帖子都在解决这个问题。环顾四周以了解更多信息。对于您的特定问题,解决方案将是一个计算列,其代码类似于:

PreviousDay = 
    CALCULATE (
        SUM ( NSE_DAILY_REPORT[SCLOSE] ),
        FILTER (
            ALLEXCEPT ( NSE_DAILY_REPORT, NSE_DAILY_REPORT[SYMBOL] ),
            NSE_DAILY_REPORT[TDATE] = EARLIER(NSE_DAILY_REPORT[TDATE]) - 1
        )
)

它可以解决问题,但仍然可以通过查看其他示例(例如this

)来提高效率,