DAX:上一年周金额
DAX: Previous Year Week Amount
Power BI如何计算上一年周金额?
类似 sameperiodlastyear
功能,但持续数周(而非数月)
预估结果:
我是如何用卑鄙的把戏达到这个结果的:
我在日历中创建 table 去年 DateKey 列:LyDatekey = DateKey-1000
(在我的例子中 Datekey 是 YYYYWWD)
然后创建以下措施:
MaxLyInventory = CALCULATE(prjMeasures[MaxInventory],USERELATIONSHIP('Calendar'[LyDateKey],SupplyData[DateKey]))
为什么我不喜欢这个:
模型应计算明年预测和未来 2 年预测 - 这意味着 Calendar
table 中有 3 个额外的 DataKey
列,Model
视图中每个 table 有 3 个额外的连接- 看起来很乱。
我试过的(下面屏幕上的输出可用):
1 几乎没问题,但计算的总数有误(returns MAX
而不是 SUM
)
tmpMaxLyInventory =
CALCULATE(
[MaxInventory],
FILTER(
ALL('Calendar'),
'Calendar'[DateKey]=MAX(Calendar[DateKey])-1000
)
)
2 看起来聪明又漂亮,但行不通...;)
2tmpMaxLyInventory =
VAR fltInventory =
FILTER(
SupplyData,
SupplyData[PF Measure] = "Inventory"
&& RELATED('Calendar'[isWeekLastInPeriod])=TRUE()
&& SupplyData[DateKey]=max(SupplyData[DateKey])-1000
)
VAR t =
SUMMARIZE(
fltInventory,
SupplyData[DateKey],
"tMaxInventory", SUM(SupplyData[PF Max Level])
)
RETURN
SUMX(t,[tMaxInventory])
用 USERELATIONSHIP
的技巧就可以了!
要避免这种情况:
Why I don't like this: Model should calculate next year forecast and
next 2 years forecast - it means 3 additional DataKey columns in
Calendar table and 3 additional connections per table in Model view -
looks messy.
您可以创建仅包含一列的额外“虚拟”Calendar
table - DateKey
并在日历和事实 table 之间使用它。
然后最终结果将如下所示(之前和之后):
vlmAct_LY1Weeks =
CALCULATE(
[vlmAct],
USERELATIONSHIP(routeCalendar[kYWD],'Calendar'[LY1W_kYWD])
)
P.S。可能在未来 self joins
支持将被实施 - 然后不需要“虚拟” table.
Power BI如何计算上一年周金额?
类似 sameperiodlastyear
功能,但持续数周(而非数月)
预估结果:
我是如何用卑鄙的把戏达到这个结果的:
我在日历中创建 table 去年 DateKey 列:LyDatekey = DateKey-1000
(在我的例子中 Datekey 是 YYYYWWD)
然后创建以下措施:
MaxLyInventory = CALCULATE(prjMeasures[MaxInventory],USERELATIONSHIP('Calendar'[LyDateKey],SupplyData[DateKey]))
为什么我不喜欢这个:
模型应计算明年预测和未来 2 年预测 - 这意味着 Calendar
table 中有 3 个额外的 DataKey
列,Model
视图中每个 table 有 3 个额外的连接- 看起来很乱。
我试过的(下面屏幕上的输出可用):
1 几乎没问题,但计算的总数有误(returns MAX
而不是 SUM
)
tmpMaxLyInventory =
CALCULATE(
[MaxInventory],
FILTER(
ALL('Calendar'),
'Calendar'[DateKey]=MAX(Calendar[DateKey])-1000
)
)
2 看起来聪明又漂亮,但行不通...;)
2tmpMaxLyInventory =
VAR fltInventory =
FILTER(
SupplyData,
SupplyData[PF Measure] = "Inventory"
&& RELATED('Calendar'[isWeekLastInPeriod])=TRUE()
&& SupplyData[DateKey]=max(SupplyData[DateKey])-1000
)
VAR t =
SUMMARIZE(
fltInventory,
SupplyData[DateKey],
"tMaxInventory", SUM(SupplyData[PF Max Level])
)
RETURN
SUMX(t,[tMaxInventory])
用 USERELATIONSHIP
的技巧就可以了!
要避免这种情况:
Why I don't like this: Model should calculate next year forecast and next 2 years forecast - it means 3 additional DataKey columns in Calendar table and 3 additional connections per table in Model view - looks messy.
您可以创建仅包含一列的额外“虚拟”Calendar
table - DateKey
并在日历和事实 table 之间使用它。
然后最终结果将如下所示(之前和之后):
vlmAct_LY1Weeks =
CALCULATE(
[vlmAct],
USERELATIONSHIP(routeCalendar[kYWD],'Calendar'[LY1W_kYWD])
)
P.S。可能在未来 self joins
支持将被实施 - 然后不需要“虚拟” table.