【问题标题】:DAX calculate index based on monthDAX 基于月份计算指数
【发布时间】:2017-09-18 20:32:56
【问题描述】:

在电源查询中,我有一个这样的表:

date       | month    |
01/01/2017 | jan 2017 |
02/01/2017 | jan 2017 |
03/01/2017 | jan 2017 |
...        | ...      |
01/02/2017 | feb 2017 |
...
01/02/2017 | mar 2017 |
...
01/01/2018 | jan 2018 |

现在我想添加一个计算行,为我提供基于月份的索引。 因此,对于每个新的月份,索引都需要增加 1。

index | date       | month    |
01    | 01/01/2017 | jan 2017 |
01    | 02/01/2017 | jan 2017 |
01    | 03/01/2017 | jan 2017 |
..    | ...        | ...      |
02    | 01/02/2017 | feb 2017 |
..    | ...        | ...
03    | 01/03/2017 | mar 2017 |
..    | ...        | ... 
13    | 01/01/2018 | jan 2018 |

有人知道吗?

【问题讨论】:

    标签: excel dax powerquery


    【解决方案1】:

    您可以在使用 Power Query 导入数据后使用计算列实现此目的。首先,请添加此排名栏。 Year&month num = YEAR(Sheet1[Date])&"-"&FORMAT(MONTH(Sheet1[Date]),"00")

    那么请添加这个计算列

    Index = COUNTROWS(
                    FILTER(VALUES(Sheet1[Year&month num]),
                           Sheet1[Year&month num]<EARLIER(Sheet1[Year&month num])
    
    ))+1
    

    现在它应该只在新月份添加新索引。

    【讨论】:

    • 不错的解决方案,但如果我尝试它,它只是从 1 开始 caount 并且每天都在增加。知道为什么吗?
    • 它每天增加 1,因为 countrows 设置为计算每个新日期(而不是每个新月)。我已经在上面的答案中调整了公式,所以现在它应该可以工作了。
    【解决方案2】:

    实现此目的的一种方法:

    =Month(date)+12*(Year(date)-2017)

    第二部分向每一年增加 12 个计数,-2017 位假设您的第一次约会是在 2017 年 1 月(第一年留给您 12x(2017-2017) = 12x0 = 0。

    【讨论】:

    • 这给了我 13 个开头,所以我调整了它:=Month(date)+12*(Year(date)-2016)-12 谢谢
    • 啊,你是对的@Bjorn Morrhaye。应该是 -2017 而不是 -2016,我在答案中添加了解释。
    【解决方案3】:

    这是一种基于 Power Query 的方法:

    从这个表作为“Table1”开始:

    点击“月份”列,然后点击“转换”选项卡,然后点击“分组依据”按钮;并像这样完成对话框:

    ...然后点击“确定”。

    您现在将拥有一个如下所示的表格:

    通过单击“添加列”选项卡,然后单击“索引列”按钮来添加索引列。

    您现在将拥有一个如下所示的表格:

    点击“AllData”列右上角的按钮,展开“AllData”列中的表格。

    您现在将拥有一个如下所示的表格:

    拖动列以将它们排列成您想要的顺序:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-02
      • 2019-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多