代码之家  ›  专栏  ›  技术社区  ›  Miko

根据实际年份在幂bi中创建自定义列时的动态年份值

  •  1
  • Miko  · 技术社区  · 2 年前

    我想把三个时间段加成一个。目前,我创建了一个自定义列,如下所示:

    timebucketNEW = IF([timebucket] IN {"YtD", "BoY", "2023"}, "2024", [timebucket])
    

    这在今年已经很有效了。但到2025年,IF条款应该是这样的:

    timebucketNEW = IF([timebucket] IN {"YtD", "BoY", "2024"}, "2025", [timebucket])
    

    现在,我不想在新的一年里改变这个IF声明。我如何自动或动态地做到这一点,就像System_Year()-1给我最后一年,System_Years()给我实际年份一样。

    编辑: timebucket 每过一年,该栏都会再扩展一年。以前的其他年份仍包含在列或数据集中。

    2 回复  |  直到 2 年前
        1
  •  1
  •   Sam Nseir    2 年前

    有两种选择。

    类似于@davidebacci的答案,尝试(格式化为文本可以解决问题):

    timebucketNEW =
      IF(
        [timebucket] IN {"YtD", "BoY", FORMAT(YEAR(TODAY())-1, "0")}, 
        FORMAT(TODAY(), "yyyy"),
        [timebucket]
      )
    

    或者,您可能需要一个专用的表格来进行此操作。
    使用以下内容创建新的计算表:

    Dim Year = 
      ADDCOLUMNS(
        DISTINCT('YourTable'[timebucket]),
        "Year",
          IF(
            [timebucket] IN {"YtD", "BoY", FORMAT(YEAR(TODAY())-1, "0") }, 
            FORMAT(TODAY(), "YYYY"),
            [timebucket]
          )
      )
    

    然后添加此新表和之间的关系 YourTable [timebucket] 柱。然后,您可以将这个新表用于切片器、过滤器、视觉维度等。。。