首页
学习
活动
专区
圈层
工具
发布

DAX投影
EN

Stack Overflow用户
提问于 2018-04-20 22:28:54
回答 1查看 219关注 0票数 0

我对DAX语言还比较陌生,但我的问题是如何根据日期特定的变量(如假期绩效提升或年度低周期)转发项目。

我有两张桌子。一个有多个SKU的销售数据,另一个有一年中的时间变量。

我的预测值在一个小表中,其中包含所需的日期范围和%更改,如下所示。

代码语言:javascript
复制
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天。

代码语言:javascript
复制
transOrder30:=VAR Days = -30
Return
SUMX(
CALCULATETABLE(sales,
    DATEADD(
        'Calendar'[Date] ,Days,DAY),
            ALL(sales[date])
            ),
    sales[organicOrder])

其中organic_orders:=SUM(salesorganicOrder)

那么,我如何利用这个预计的30天,并在整个时间重复它,然后乘以它的时间变化?

在Excel中,这将与organicOrder*vlookup一样简单(日期,A:B,2)。

我看过这个家伙的帖子,但这对我不起作用。

https://blog.gbrueckl.at/2015/04/recursive-calculations-powerpivot-dax/

任何帮助都是非常感谢的!

示例:

代码语言:javascript
复制
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      
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-02 20:46:11

创建一个新的表格,您将在其中放置您的投影。这样做的一种方法是New > Projection = CALENDARAUTO()

现在您有了一个日期列,我们将添加一个预计订单计算列。

(我假设您有两个表,SalesForecast,前者对应于示例数据前10行的DateOrders列,后者对应于DateToY数据。)

代码语言:javascript
复制
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值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49950502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档