You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

Power BI中如何标记包含当月1日的周(新增列实现)

实现方法:M语言(Power Query)+ DAX两种方案

没问题,我给你两种实用的实现方式,分别对应Power Query的M语言和模型里的DAX,你可以根据自己的习惯选择:

一、DAX 实现(在数据模型中新增计算列)

这个方法适合直接在Power BI的模型里操作,核心思路就是判断当前日期所在的周是否包含当月第一天

IsFirstWeekOfMonth = 
VAR CurrentMonthStart = EOMONTH([Date], -1) + 1 // 获取当前日期所在月的1号
VAR CurrentWeekStart = [Date] - WEEKDAY([Date], 2) + 1 // 计算当前日期所在周的周一(参数2代表周一为周起始)
VAR CurrentWeekEnd = CurrentWeekStart + 6 // 对应周的周日
RETURN
IF(CurrentMonthStart >= CurrentWeekStart && CurrentMonthStart <= CurrentWeekEnd, "Yes", "No")

小调整提示:

如果你的业务里周是周日作为起始日,只需要把WEEKDAY([Date], 2)里的2改成1就行,这样周起始就会自动切换为周日。

二、M语言 实现(在Power Query中新增列)

如果习惯在数据清洗阶段就完成这个标记,可以用Power Query的M语言来做:

= let
    CurrentDate = [Date],
    MonthFirstDay = Date.StartOfMonth(CurrentDate), // 获取当月第一天
    WeekStartDay = Date.StartOfWeek(CurrentDate, Day.Monday), // 当前日期所在周的周一
    WeekEndDay = Date.AddDays(WeekStartDay, 6) // 当前日期所在周的周日
in
    if MonthFirstDay >= WeekStartDay and MonthFirstDay <= WeekEndDay then "Yes" else "No"

小调整提示:

同样,如果要改成周日作为周起始,把Day.Monday换成Day.Sunday就可以了。

两种方法都能完美实现你要的效果:比如11月1日是周五的话,那这个周的所有日期(周一到周日)都会被标记为Yes,完全匹配你的需求。

内容的提问来源于stack exchange,提问作者Hassi

火山引擎 最新活动