DAX计算列优化求助:每月1号需将上月日期标记为Yes
问题分析与解决方案
你的修改代码存在几个关键问题:
day = 01:FORMAT(NOW(), "dd")返回的是字符串类型(如"01"),直接和数字01比较会导致逻辑判断失效last_month变量定义错误:dimension_calendar[actual_date] -1是将日期减1天,并非获取上月的年月格式AND("No", month = last_month)逻辑错误:AND函数需要两个布尔值参数,这里的写法完全不符合DAX语法规范
以下是修正后的可行代码:
date_Month = VAR current_month_year = FORMAT(NOW(), "mmyyyy") VAR current_day = FORMAT(NOW(), "dd") VAR row_month_year = FORMAT(dimension_calendar[full_date], "mmyyyy") VAR last_month_year = FORMAT(DATE(YEAR(NOW()), MONTH(NOW())-1, 1), "mmyyyy") RETURN IF( current_day = "01", IF(row_month_year = current_month_year || row_month_year = last_month_year, "Yes", "No"), IF(row_month_year = current_month_year, "Yes", "No") )
关键修改说明:
- 将所有日期格式统一为字符串类型的
mmyyyy,确保比较逻辑一致 - 正确计算上月的年月格式:通过
DATE(YEAR(NOW()), MONTH(NOW())-1, 1)生成上月1号,再格式化为mmyyyy - 调整判断逻辑:当月1号时,同时匹配当月和上月的日期行,返回"Yes";非1号时仅匹配当月日期行
内容的提问来源于stack exchange,提问作者Hamza
相关产品推荐
相关产品推荐

