DAX - 如何计算 4 个步骤,仅需要一个 DAX 公式中的 4 列/生成一列

问题描述 投票:0回答:1

我在Power BI中使用DAX进行计算有以下4个步骤: 假设我有以下格式的 ISO 周数:名称为 [Version] 的列中的 YYYY-WW, 我用这 4 个步骤计算每周的第一天,需要 4 个中间列:

步骤1:

FirstSeventhDayOfYear = 
VAR semaineNb = RIGHT([Version], 2) //get the week number
VAR yearNb = LEFT([Version], 4) // get the year
VAR FirstSeventhDayOfYear_ = DATE(yearNb, 1, 7) //get the Jan 7th of this year
Return FirstSeventhDayOfYear_

新专栏中的步骤 2:

FirstThursdayOfYear = 
VAR yearNb = LEFT([Version], 4)
VAR FirstThursdayOfYear_ = IF( WEEKDAY( DATE( yearNb, 1, 1 ), 2)>=5, DATEADD( 'Table'[FirstSeventhDayOfYear].[Date] , -(WEEKDAY( DATE( yearNb, 1, 1 ), 2)-4), DAY ), DATEADD( 'Table'[FirstSeventhDayOfYear].[Date] , -(WEEKDAY( DATE( yearNb, 1, 1 ), 2)+3) , DAY))
Return FirstThursdayOfYear_

另一新专栏中的步骤 3 :

ThursdayForSemaine = 
VAR semaineNb = RIGHT([Version], 2)
VAR yearNb = LEFT([Version], 4)
VAR ThursdayForSemaine_ = DATEADD('Table'[FirstThursdayOfYear].[Date], 7*(semaineNb-1), DAY)
Return ThursdayForSemaine_

第4步,最后一步:

FirstDayOfVersionWeek = 
DATEADD( 'Table'[ThursdayForSemaine].[Date] , -2, DAY) 

我希望仅在一个 DAX 公式和一列(没有中间列)中完成所有这一切, 但我无法管理它,因为 DATEADD 函数抱怨(当我将中间计算的结果存储在一个变量中时)该变量不是表。将结果封装在 {} 中以获取列表也不起作用...该消息是 DATEADD 函数无法处理使用 ADDCOLUMNS 或 SUMMARIZE 创建的列

这个问题有解决办法吗?

谢谢,

variables powerbi dax dateadd
1个回答
0
投票

不要使用

DATEADD(x, y, DAY)
,只需使用添加/减去日期的天数即可,例如:
DATE(2023, 1, 1) - 1
将为您提供
DATE(2022, 12, 31)

所以你的最终公式可能看起来像(未经测试):

FirstDayOfVersionWeek = 
VAR semaineNb = VALUE( RIGHT([Version], 2) ) //get the week number
VAR yearNb = VALUE( LEFT([Version], 4) ) // get the year
VAR FirstSeventhDayOfYear = DATE(yearNb, 1, 7) //get the Jan 7th of this year
VAR FirstThursdayOfYear = 
  IF(
    WEEKDAY( DATE( yearNb, 1, 1 ), 2) >=5,
    FirstSeventhDayOfYear - (WEEKDAY( DATE( yearNb, 1, 1 ), 2) - 4),
    FirstSeventhDayOfYear - (WEEKDAY( DATE( yearNb, 1, 1 ), 2) + 3)
  )
VAR ThursdayForSemaine = FirstThursdayOfYear + 7*(semaineNb - 1)
VAR FirstDayOfVersionWeek_ = ThursdayForSemaine - 2

RETURN FirstDayOfVersionWeek_
© www.soinside.com 2019 - 2024. All rights reserved.