DAX公式从同一个表中的筛选行获取字段

时间:2016-09-20 12:44:53

标签: ssas powerpivot dax ssas-tabular

使用SSAS Tabular或Excel PowerPivot,我正在寻找DAX公式来实现以下目标:

我有一个包含3个主要列的交易表:日期,类型和金额

类型可以是:'促销'或'付款'。

我需要的是获取我的新计算字段,即每个销售的“付款日期”,因此我的公式应该类似于:

首先计算(日期),过滤(类型='付款'),过滤(currentrow(日期)< =付款(日期)))

需要一些帮助才能找到正确的日期过滤器。同样重要的是,我发现只有'付款'类型的第一个交易,因为可以进一步交易。

示例数据: PaymentDate是我计算的字段

Type        Date       Amount   PaymentDate

Sale     01/01/2016     100     31/02/2016
Sale     01/02/2016     100     31/02/2016
Sale     01/03/2016     100     31/05/2016
Payment  31/02/2016     200        Empty
Sale     01/04/2016     100     31/05/2016
Sale     01/05/2016     100     31/05/2016
Payment  31/05/2016     300        Empty
Sale     01/06/2016     100        Empty

1 个答案:

答案 0 :(得分:1)

在计算列中使用以下表达式:

=IF (
    'table'[Type] = "Payment",
    BLANK (),
    CALCULATE (
        MIN ( [Date] ),
        FILTER (
            'table',
            'table'[Date] > EARLIER ( 'table'[Date] )
                && 'table'[Type] = "Payment"
        )
    )
)

在您的示例数据中存在错误,31/02/2016不是有效日期。我用29/02/2016替换了它,结果是:

enter image description here

如果有帮助,请告诉我。