我的数据由fully_enrolled_at
作为维度和new_users
作为度量组成。因此,这不需要数据集,因为您可以sum()
执行任何日期和度量。
我创建了以下2个计算:
days_in_month = DATEDIFF('day',MIN(DATETRUNC('month',[fully_enrolled_at])),MAX(DATETRUNC('month',DATEADD('month',1,[fully_enrolled_at]))))
days_in_all_months = IF MIN(DATETRUNC('month',today()))=MAX(DATETRUNC('month',[fully_enrolled_at])) THEN 1+DATEDIFF('day',DATETRUNC('month',today()),today()) ELSE [days_in_month] END
然后我绘制:discrete month(fully_enrolled_at) as dimension, and sum([new_users])/[days_in_all_months]
作为度量。
这给了我所需的信息,但是我想说明每个月的工作日,而不是日历月。
如何从days_in_all_months
中删除周末和国定假日(当月应该有#个工作日过去)?
假期列表:https://gist.github.com/jameslin101/cf2860eba52a56281427#file-csv-of-us-stock-market-holidays-through-2020
您可以协助调整吗?谢谢!
答案 0 :(得分:0)
您可以设置当前的天和 WorkingDaysTotal 。然后添加 IF 语句。
如果Day = Saturday或Sunday,则别无选择WorkingDaysTotal = WorkingDaysTotal + 1
从理论上讲,这将为您提供工作量。
您还需要:
如果是每月的第一天,则WorkingDaysTotal = 0
最后,检查一下该月的第一天又是星期六还是星期日。
由于不同的国家,宗教信仰等有不同的假期,因此国定假日将更加棘手。因此,您必须提前设置这些日期。
编辑
这是您想要的工作示例,假期和周末除外。
=AVERAGE(IF(WEEKDAY(C7:I7,2)<6,IF(ISERROR(MATCH(C7:I7,Holidays,FALSE)),C8:I8)))
where C7:I7 has the dates, C8:I8 has the data, and Holidays is a named range of holiday dates. If you further want to exclude 0 values, then use this array formula
=AVERAGE(IF(WEEKDAY(C7:I7,2)<6,IF(ISERROR(MATCH(C7:I7,Holidays,FALSE)),IF(C8:I8>0,C8:I8))))