powerbi - 日期间隔中的剩余工作日
问题描述
假设我有一个表,我想在其中创建一个列,在其中计算相对于当前日期的日期间隔中的剩余工作日。这样的示例可能如下所示:
Id Date Start End Remaining
+---+------------+------------+------------+-----+
| 1 | 01-01-2020 | 01-01-2020 | 31-12-2020 | 262 |
+---+------------+------------+------------+-----+
| 1 | 02-01-2020 | 01-01-2020 | 31-12-2020 | 261 |
+---+------------+------------+------------+-----+
| 1 | 03-01-2020 | 01-01-2020 | 31-12-2020 | 260 |
+---+------------+------------+------------+-----+
| 1 | 04-01-2020 | 01-01-2020 | 31-12-2020 | 260 | <--- Weekend
+---+------------+------------+------------+-----+
| 1 | 05-01-2020 | 01-01-2020 | 31-12-2020 | 260 | <--- Weekend
+---+------------+------------+------------+-----+
| 1 | 06-01-2020 | 01-01-2020 | 31-12-2020 | 259 |
+---+------------+------------+------------+-----+
| 1 | 07-01-2020 | 01-01-2020 | 31-12-2020 | 258 |
+---+------------+------------+------------+-----+
在这里,我有一个日期列和相应的开始/结束日期。正如你所看到的,我希望每当我遇到周末时,倒计时停止,类似于上面的例子。
此外,我想以某种方式做到这一点,以便我尊重个人身份......也就是说,我有不同的身份,开始和结束日期不同,在表格的更下方。
目前,我很难弄清楚如何让倒计时停止。到目前为止,我已经尝试了以下 DAX 公式:
Sum_without_weekends = CALCULATE(COUNTROWS('Table'),
FILTER('Table'(SWITCH(WEEKDAY([Date]),1,0,7,0,1) <> 0) && ('Table'[Id]=EARLIER('Table'[Id]))))
+ IF((SWITCH(WEEKDAY('Table'[Date]),1,0,7,0,1) <> 0),DATEDIFF('Table'[Date],'Table'[Start].[Date],DAY), 0)
然而,这确实产生了一些类似的东西,这是错误的:
Id Date StartDate EndDate Remaining
+---+------------+------------+------------+-----+
| 1 | 01-01-2020 | 01-01-2020 | 31-12-2020 | 262 |
+---+------------+------------+------------+-----+
| 1 | 02-01-2020 | 01-01-2020 | 31-12-2020 | 261 |
+---+------------+------------+------------+-----+
| 1 | 03-01-2020 | 01-01-2020 | 31-12-2020 | 260 |
+---+------------+------------+------------+-----+
| 1 | 04-01-2020 | 01-01-2020 | 31-12-2020 | 262 | <--- Weekend
+---+------------+------------+------------+-----+
| 1 | 05-01-2020 | 01-01-2020 | 31-12-2020 | 262 | <--- Weekend
+---+------------+------------+------------+-----+
| 1 | 06-01-2020 | 01-01-2020 | 31-12-2020 | 257 |
+---+------------+------------+------------+-----+
| 1 | 07-01-2020 | 01-01-2020 | 31-12-2020 | 256 |
+---+------------+------------+------------+-----+
因此,我需要帮助完成 DAX 公式,以便在我遇到周末时停止倒计时,类似于第一个表格中的可视化。
解决方案
也许是这样的:
Remaining Working Days =
VAR ID1 = Table1[ID]
VAR Date1 = Table1[Date]
VAR Work_Days = CALCULATE(COUNTROWS(Table1),FILTER(Table1,Table1[ID]=ID1),FILTER(Table1,WEEKDAY(Table1[Date]) in {2,3,4,5,6}),FILTER(Table1,Table1[Date]>=Date1))
RETURN Work_Days
上述计算仅使用“日期”变量来获得所需的结果。这个想法是计算当前日期之后的所有工作日,并为 ID 应用过滤器。希望这可以帮助。
推荐阅读
- java - Apache SSHD 客户端获取服务器公钥
- java - Jersey:无法注入 HttpServletRequest,出现 hk2 错误
- function - Lua函数需要赋值给变量
- .net - xpdf 可以接受变量作为 Powershell 中的路径参数吗?
- c# - 如何展平 JArray 的 JArray?
- dpkg - dpkg-deb 中缺少 lzma_stream_encoder_mt_memusage
- python - Convert 3 dim image array to 2 dim
- vba - 输入框编译错误
- c# - 如何在 C# 中以编程方式选择 datagridview 行
- ionic3 - 应用浏览器 IONIC 3 中的模板解析错误