【问题标题】:DAX while loop or commands to create table with rolling data 6 months backDAX while 循环或使用 6 个月前的滚动数据创建表的命令
【发布时间】:2020-11-10 07:28:44
【问题描述】:

我必须根据他加入的月份达到目标所需的时间来计算绩效。现在要获得目标,我必须将 6 个月的数据放入 1 个数据点。因此,让我们从 2016 年 6 月开始。我们需要将所有从 2016 年 6 月、5 月、4 月、3 月、2 月、1 月加入的人的数据转换为 2016 年 6 月的数据。同样在 2016 年 7 月点将携带来自 2016 年 7 月、6 月、5 月、4 月、3 月、2 月数据的数据。这样一来,在我的图表中的任何点都没有数据中断,并且我得到一条平滑的线。

组织表 enter image description here

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

我需要通过以下方式获得一张桌子。该表将自动生成以获取将绘制在 x 轴上的新月份的值。理想情况下,在 2016 年 2 月加入的人将在 2016 年 2 月、2016 年 3 月、4 月;16 年、16 年 5 月、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  |
+--------+--------------+-------------+----------+

【问题讨论】:

  • 以表格形式显示您的数据以及您的预期结果

标签: loops for-loop dax


【解决方案1】:

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

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__]
    )

这里有更多关于如何使用 GENERATE 的信息: https://youtu.be/AieQMS6rGvM

【讨论】:

    猜你喜欢
    • 2014-05-15
    • 1970-01-01
    • 1970-01-01
    • 2019-10-11
    • 2023-03-23
    • 2021-07-25
    • 1970-01-01
    • 2014-12-21
    • 2020-05-12
    相关资源
    最近更新 更多