在 DAX 中投影
Projecting in DAX
我对 DAX 语言还是比较陌生,但我的问题是如何根据过时的特定变量(例如假期绩效提升或年度低谷期)转发项目。
我有 2 个 table。一个具有多个 SKU 的销售数据,另一个具有一年中的时间变量。
我的预测值在一个小 table 中,其中包含日期范围和所需的更改百分比。
date increase
1/1/2018 1
4/14/2018 .9
5/1/2018 1
6/1/2018 .85
8/1/2018 1.05
11/18/2018 1.25
我只知道使用带有 CALCULATETABLE 的 DATEADD 函数预测未来 30 天。
transOrder30:=VAR Days = -30
Return
SUMX(
CALCULATETABLE(sales,
DATEADD(
'Calendar'[Date] ,Days,DAY),
ALL(sales[date])
),
sales[organicOrder])
其中 organic_orders:=SUM(销售额[有机订单])
那么我如何将这个预计的 30 天复制到整个时间,然后乘以一年中的时间变化?
在 Excel 中就像 organicOrder*vlookup(date,A:B,2).
一样简单
我看过这些人 post 但它对我不起作用。
https://blog.gbrueckl.at/2015/04/recursive-calculations-powerpivot-dax/
感谢任何帮助!
示例:
Date Orders Date ToY
2/1/2018 15 2/10/2018 1
2/2/2018 19 2/20/2018 1.2
2/3/2018 12 3/2/2018 1.5
2/4/2018 18
2/5/2018 15
2/6/2018 14
2/7/2018 11
2/8/2018 16
2/9/2018 16
2/10/2018 18
2/11/2018 15.40 Projection =avg(orders)*ToY
2/12/2018 15.40 Projection
2/13/2018 15.40 Projection
2/14/2018 15.40 Projection
2/15/2018 15.40 Projection
2/16/2018 15.40 Projection
2/17/2018 15.40 Projection
2/18/2018 15.40 Projection
2/19/2018 15.40 Projection
2/20/2018 18.48 Projection
2/21/2018 18.48 Projection
2/22/2018 18.48 Projection
2/23/2018 18.48 Projection
2/24/2018 18.48 Projection
2/25/2018 18.48 Projection
2/26/2018 18.48 Projection
2/27/2018 18.48 Projection
2/28/2018 18.48 Projection
3/1/2018 18.48 Projection
3/2/2018 23.10 Projection
3/3/2018 23.10 Projection
创建一个新的 table 用于放置投影。一种方法是新建 Table > Projection = CALENDARAUTO()
.
现在您有了日期列,我们将添加一个预计订单计算列。
(我假设您有两个 table、Sales
和 Forecast
,其中前者对应于前 10 个的 Date
和 Orders
列示例数据的行,后者对应于 Date
和 ToY
数据。)
ProjectedOrders =
VAR AverageOrder = AVERAGE(Sales[Orders])
VAR ToYDate = CALCULATE(MAX(Forecast[Date]),
Forecast[Date] < EARLIER(Projection[Date]))
RETURN
IF(Projection[Date] < MIN(Sales[Date]),
BLANK(),
IF(Projection[Date] IN VALUES(Sales[Date]),
LOOKUPVALUE(Sales[Orders], Sales[Date], Projection[Date]),
AverageOrder * LOOKUPVALUE(Forecast[ToY], Forecast[Date], ToYDate)
))
如果日期在您的任何销售数据之前,这将给出一个空白,并复制存在销售数据的日期的销售数据。否则,它会将平均订单乘以该行日期之前出现的最后一个 ToY
值。
我对 DAX 语言还是比较陌生,但我的问题是如何根据过时的特定变量(例如假期绩效提升或年度低谷期)转发项目。
我有 2 个 table。一个具有多个 SKU 的销售数据,另一个具有一年中的时间变量。
我的预测值在一个小 table 中,其中包含日期范围和所需的更改百分比。
date increase
1/1/2018 1
4/14/2018 .9
5/1/2018 1
6/1/2018 .85
8/1/2018 1.05
11/18/2018 1.25
我只知道使用带有 CALCULATETABLE 的 DATEADD 函数预测未来 30 天。
transOrder30:=VAR Days = -30
Return
SUMX(
CALCULATETABLE(sales,
DATEADD(
'Calendar'[Date] ,Days,DAY),
ALL(sales[date])
),
sales[organicOrder])
其中 organic_orders:=SUM(销售额[有机订单])
那么我如何将这个预计的 30 天复制到整个时间,然后乘以一年中的时间变化?
在 Excel 中就像 organicOrder*vlookup(date,A:B,2).
一样简单我看过这些人 post 但它对我不起作用。
https://blog.gbrueckl.at/2015/04/recursive-calculations-powerpivot-dax/
感谢任何帮助!
示例:
Date Orders Date ToY
2/1/2018 15 2/10/2018 1
2/2/2018 19 2/20/2018 1.2
2/3/2018 12 3/2/2018 1.5
2/4/2018 18
2/5/2018 15
2/6/2018 14
2/7/2018 11
2/8/2018 16
2/9/2018 16
2/10/2018 18
2/11/2018 15.40 Projection =avg(orders)*ToY
2/12/2018 15.40 Projection
2/13/2018 15.40 Projection
2/14/2018 15.40 Projection
2/15/2018 15.40 Projection
2/16/2018 15.40 Projection
2/17/2018 15.40 Projection
2/18/2018 15.40 Projection
2/19/2018 15.40 Projection
2/20/2018 18.48 Projection
2/21/2018 18.48 Projection
2/22/2018 18.48 Projection
2/23/2018 18.48 Projection
2/24/2018 18.48 Projection
2/25/2018 18.48 Projection
2/26/2018 18.48 Projection
2/27/2018 18.48 Projection
2/28/2018 18.48 Projection
3/1/2018 18.48 Projection
3/2/2018 23.10 Projection
3/3/2018 23.10 Projection
创建一个新的 table 用于放置投影。一种方法是新建 Table > Projection = CALENDARAUTO()
.
现在您有了日期列,我们将添加一个预计订单计算列。
(我假设您有两个 table、Sales
和 Forecast
,其中前者对应于前 10 个的 Date
和 Orders
列示例数据的行,后者对应于 Date
和 ToY
数据。)
ProjectedOrders =
VAR AverageOrder = AVERAGE(Sales[Orders])
VAR ToYDate = CALCULATE(MAX(Forecast[Date]),
Forecast[Date] < EARLIER(Projection[Date]))
RETURN
IF(Projection[Date] < MIN(Sales[Date]),
BLANK(),
IF(Projection[Date] IN VALUES(Sales[Date]),
LOOKUPVALUE(Sales[Orders], Sales[Date], Projection[Date]),
AverageOrder * LOOKUPVALUE(Forecast[ToY], Forecast[Date], ToYDate)
))
如果日期在您的任何销售数据之前,这将给出一个空白,并复制存在销售数据的日期的销售数据。否则,它会将平均订单乘以该行日期之前出现的最后一个 ToY
值。