dax - 从现有日期列创建一个日期列作为一天减去现有日期列
问题描述
我有一个名为的日期列Eff_Date
和一个列名cmg
,如下所示,
Eff_Date cmg
-------------------
15-12-2017 F1
18-12-2018 F1
1-2-2019 F2
我想创建一个新的日期列,它比列中下一行中的日期早一天, eff_date
如下所示cmg
。
Eff_Date NewDateColumn
-------------------------------
15-12-2017 17-12-2018
18-12-2018 18-12-2018
1-2-2019 1-2-2019
将NewDateColumn
有 (17-12-2018 , 因为下一行Eff_date
有 18-12-2018) for cmg
= F1
最后一行将与eff_date
特定的相同cmg
请帮助
解决方案
我在您的表中添加了几行来测试对关系的处理:
Eff_Date cmg
12/15/2017 F1
12/18/2018 F1
1/15/2019 F1
1/20/2019 F1
1/22/2019 F1
6/7/2017 F2
8/9/2018 F2
10/10/2018 F2
1/2/2019 F2
1/2/2019 F2
虽然有很多计算方法,但我认为最重要的是您需要对日期进行排名以便确定下一个日期。
我通过定义一些变量来做到这一点:
=
VAR thisDateRank =
RANKX (
FILTER ( Table1, Table1[cmg] = EARLIER ( Table1[cmg] ) ),
Table1[Eff_Date],
,
ASC
)
VAR maxDateRank =
MAXX (
FILTER ( Table1, Table1[cmg] = EARLIER ( Table1[cmg] ) ),
Table1[Eff_Date]
)
VAR nextDate =
CALCULATE (
MAX ( Table1[Eff_Date] ),
FILTER (
ALL ( Table1 ),
Table1[cmg] = EARLIER ( Table1[cmg] )
&& RANKX (
FILTER ( Table1, Table1[cmg] = EARLIER ( Table1[cmg] ) ),
Table1[Eff_Date],
,
ASC
) = thisDateRank + 1
)
)
RETURN
IF ( Table1[Eff_Date] = maxDateRank, maxDateRank, nextDate - 1 )
结果看起来像这样
Eff_Date cmg NewDateColumn
12/15/2017 F1 12/17/2018
12/18/2018 F1 1/14/2019
1/15/2019 F1 1/19/2019
1/20/2019 F1 1/21/2019
1/22/2019 F1 1/22/2019
6/7/2017 F2 8/8/2018
8/9/2018 F2 10/9/2018
10/10/2018 F2 1/1/2019
1/2/2019 F2 1/2/2019
1/2/2019 F2 1/2/2019
推荐阅读
- c# - 尝试在自己的 using 语句中访问 MemoryStream 时抛出 ObjectDisposedException
- java - 如何找出可以在 PDF 中以给定字体呈现的字符?
- javascript - TypeError:无法读取未定义的属性“孩子”
- java - 我无法将 th:object 传递给控制器并使用 @ModelAttribute 映射到 pojo
- css - 如何在 div 的样式属性中引用背景图像?
- android - 如何根据按钮调整图像大小,使其适合按钮?
- laravel - Laravel 中并排的静态路由和通配符路由
- c++ - 在 2D 指针和重新生长中从文件输入字符时出现异常错误
- python - 从 Pandas 字典中选择多个 DataFrame
- json - VBA - 正则表达式 - 单词中的字符串