DAX 中的 IsoWeekYear

Posted

技术标签:

【中文标题】DAX 中的 IsoWeekYear【英文标题】:IsoWeekYear within DAX 【发布时间】:2021-05-19 18:14:05 【问题描述】:

是否有办法在 DAX 中创建 IsoWeekYear?

我在 excel 中使用以下内容进行创建,但是我很难在 PowerBI 中使用它

=YEAR(DATE(YEAR(TODAY()-WEEKDAY(TODAY()-1)+4),1,1)-MOD((DATE(YEAR(TODAY()-WEEKDAY(TODAY()-1) +4),1,1)-2),7)+(7*IF(MOD((DATE(YEAR(TODAY()-WEEKDAY(TODAY()-1)+4),1,1)-2) ,7)>3,1,0))+7)

【问题讨论】:

【参考方案1】:

您需要使用 DAX WEEKNUM 函数。它具有 ISO 8601 周的可选参数。选项 21 将返回 ISO 周

ISO Week Number = WEEKNUM([DateColumn], 21)

要获得 ISO 年,您还需要一个日历周和年列。

Calendar Week = WEEKNUM([DateColumn])
Year = YEAR([DateColumn])

Year Week = IF([ISO Week Number]<5 && [Calendar Week] > 50,
     [Year]+1,
     IF([ISO Week Number] >50 && [Calendar Week]<5,
          [Year]-1,
          [Year]))

您可以在一个列中完成所有这些操作,而不是在本示例中将它们分开,然后将年份和周数连接为 202101,或者将它们分开,以您需要的任何类型。

【讨论】:

感谢您的支持。我不确定这就是我的意思。例如 2019 年 12 月 31 日,需要报告为 2020 年。正常的 =YEAR() 公式没有 ISO 功能。根据 ISO 标准,一周也属于哪一年。 *感谢编辑! 更新了,我还没写完不小心保存了答案 我正在使用添加列方法添加一个表,无论如何我可以重写它以在其中工作吗? ADDCOLUMNS ( 日历 (DATE(2017,1,1), DATE(2021,12,31)), "DateAsInteger", FORMAT ([Date], "YYYYMMDD"), "Year", YEAR ([Date]), " Monthnumber", FORMAT ( [Date], "MM" )) 更新:创建表时,我设法让它在 ADDCOLUMNS 函数中工作。 "IsoWeekYear", IF(WEEKNUM([Date], 21) 50, YEAR ([Date])+1, IF(WEEKNUM([Date], 21) >50 && WEEKNUM( [日期]) @tg00222 不错!

以上是关于DAX 中的 IsoWeekYear的主要内容,如果未能解决你的问题,请参考以下文章

DAX:有选择地合并两个表(基于一行中的值)

DAX 中的多个 IF 语句

SQL/DAX 中的多父层次结构传播

如何计算 DAX 中的累计总计和百分比?

DAX函数大全

在 power BI 中提供电源查询技术/DAX 查询以填充列中的值