每个工作日的新用户每月平均值

时间:2018-11-02 14:58:56

标签: tableau

我的数据由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

您可以协助调整吗?谢谢!

1 个答案:

答案 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))))