Loops DAX while循环或命令,用于创建具有6个月前滚动数据的表

Loops DAX while循环或命令,用于创建具有6个月前滚动数据的表,loops,for-loop,dax,Loops,For Loop,Dax,我必须根据他加盟一个月以来达到目标所花费的时间来计算他的表现。现在为了达到目标,我必须将6个月的数据转换成1个数据点。我们从2016年6月开始。我们需要将2016年6月、5月、4月、3月、2月、1月的数据加入到2016年6月。同样,2016年7月,point将携带2016年7月、6月、5月、4月、3月和2月的数据。这是为了在我的图中的任何一点都没有数据中断,我得到了一条平滑的线 组织表 我需要按以下方式安排一张桌子。此表将自动生成,以获取将绘制在x轴上的新月份的值。理想情况下,参加2016年2

我必须根据他加盟一个月以来达到目标所花费的时间来计算他的表现。现在为了达到目标,我必须将6个月的数据转换成1个数据点。我们从2016年6月开始。我们需要将2016年6月、5月、4月、3月、2月、1月的数据加入到2016年6月。同样,2016年7月,point将携带2016年7月、6月、5月、4月、3月和2月的数据。这是为了在我的图中的任何一点都没有数据中断,我得到了一条平滑的线

组织表

我需要按以下方式安排一张桌子。此表将自动生成,以获取将绘制在x轴上的新月份的值。理想情况下,参加2016年2月的人将出现在2016年2月16日,即2016年4月16日;2016年5月16日、2016年6月和2016年7月

+--------+--------------+-------------+----------+
| EmpNO  |  JoinMonth   | MonthsTken  | NewMonth |
+--------+--------------+-------------+----------+
|  M12   |    June'16   |     4       | June'16  |
|  E34   |    June'16   |     3       | June'16  |
|  N56   |    Jan'16    |     2       | June'16  |
|  G89   |    May'16    |     5       | June'16  |
|  N02   |    April'16  |     3       | June'16  |
|  J90   |    March'16  |     2       | June'16  |
|  K89   |    Feb'16    |     1       | June'16  |
|        |              |             |          |
|  N56   |    Jan'16    |     2       | May'16   |
|  G89   |    May'16    |     5       | May'16   |
|  N02   |    April'16  |     3       | May'16   |
|  J90   |    March'16  |     2       | May'16   |
|  K89   |    Feb'16    |     1       | May'16   |
|  H78   |    Dec'15    |     6       | May'16   |
|        |              |             |          |
|  N56   |    Jan'16    |     2       | Apr'16   |
|  N02   |    April'16  |     3       | Apr'16   |
|  J90   |    March'16  |     2       | Apr'16   |
|  K89   |    Feb'16    |     1       | Apr'16   |
|  H78   |    Dec'15    |     6       | Apr'16   |
|  J89   |    Nov'15    |     2       |  Apr'16  |
+--------+--------------+-------------+----------+

首先我必须说我还没有测试过它。这个概念非常简单(但我们需要JoinMonth的日期类型列)。Generate(表1、表2)返回第一个表的交叉连接以及这些结果。将为第一个表中的每一行计算第二个表表达式。在第一个表中,我们获取所有日期,然后为每一行创建一组数据,最后,我们可以过滤结果

NewTable =
VAR BaseCalendar =
    VALUE(Table[JoinMonth])
RETURN
FILTER(
    GENERATE (
        BaseCalendar,
         SUMMARIZE (Table,
            "EmpNO", Table[EmpNO],
            "JoinMonth__", Table[JoinMonth],
            "MonthsTken", Table[MonthsTken]
        )
    )
    , [JoinMonth__] >= [JoinMonth] && DATEADD ([JoinMonth], 6, MONTH) <= [JoinMonth__]
    )
NewTable=
基准日历=
值(表[JoinMonth])
返回
滤器(
产生(
基准日历,
总结(表),
“EmpNO”,表[EmpNO],
“JoinMonth”,表[JoinMonth],
“MonthsTken”,表[MonthsTken]
)
)

,[JoinMonth\\]>=[JoinMonth]&&DATEADD([JoinMonth],6,MONTH)以表格形式显示您的数据以及您的预期结果
NewTable =
VAR BaseCalendar =
    VALUE(Table[JoinMonth])
RETURN
FILTER(
    GENERATE (
        BaseCalendar,
         SUMMARIZE (Table,
            "EmpNO", Table[EmpNO],
            "JoinMonth__", Table[JoinMonth],
            "MonthsTken", Table[MonthsTken]
        )
    )
    , [JoinMonth__] >= [JoinMonth] && DATEADD ([JoinMonth], 6, MONTH) <= [JoinMonth__]
    )