【问题标题】:Calculated Column that counts from 1-53 per week from specific start date从特定开始日期起每周计数 1-53 的计算列
【发布时间】:2019-12-17 10:46:23
【问题描述】:

我面临一个相对微不足道的问题。我有每个财政年度的开始日期列表。例如,2019 财年的 03.01.2019 或 2020 财年的 30.12.2019。 现在我希望我的日历表 (Power Pivot) 中的计算列从每周 1-53 的开始日期开始计数,直到下一个开始日期。

看起来像这样:

  • 03.01.2019 - 1
  • 04.01.2019 - 1 ....

有人知道怎么做吗?

【问题讨论】:

  • 您的开始日期存储在哪里?什么是可能的开始日期值?能否请您发布一个更好的示例,其中包含一些案例,因为目前看起来如果一个简单的计算列 =Date.WeekOfYear([YourDate]) 可以做到这一点。
  • 开始日期可以存储在函数本身中——我建议。该函数应该是一个 dax 函数。你的方法行不通。
  • 你没有得到我的要求。我基本上是在问您的静态日期是否也可能与年初或年底不同。因为如果您只是将一年的开始和结束作为您可以使用的固定日期(这次在 DAX 中:=WEEKNUM([YourDate], 2)
  • 好的,现在我有你了。对不起!但后来我得到了开始日期“30.12.2019”周数“53”而不是“1”。您将如何避免这种情况?
  • = IF ( WEEKNUM ( [YourDate], 2) = 53, 1, WEEKNUM ( [YourDate], 2))怎么样

标签: excel powerbi dax powerpivot


【解决方案1】:

您可以通过在可选部分添加21 来获得 ISO 8601 周数。这是我创建的一个简单示例。但是,如果您也有从年中开始的日期,您应该使用日历,例如 @Kosuke Sakai 发布的:

【讨论】:

    【解决方案2】:

    通常,针对此要求的推荐方法是在数据源(DWH、MDM、Excel 或其他地方)中准备会计日历,而不是使用 DAX 进行计算。

    话虽如此,但使用 DAX 是可能的。

    假设您有如下表。 (我们称之为财政年)

    首先,您需要使用以下公式将 FiscalYear 计算列添加到日历表中。

    FiscalYear :=
    VAR CurrentDate = [Date]
    RETURN CALCULATE (
        MAX ( FiscalYears[FiscalYear] ),
        FiscalYears[StartDate] <= CurrentDate
    )
    

    然后,您可以使用它来计算 WeekNumberInFiscalYear 列。

    WeekNumberInFiscalYear :=
    VAR StartDate = LOOKUPVALUE (
        FiscalYears[StartDate],
        FiscalYears[FiscalYear],
        [FiscalYear]
    )
    RETURN DATEDIFF ( StartDate, [Date], WEEK ) + 1
    

    结果将如下所示。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-11
      • 1970-01-01
      • 1970-01-01
      • 2014-02-09
      相关资源
      最近更新 更多