Function DAX-带有“早”和“早”的过滤函数;非较早者“;共同条件

Function DAX-带有“早”和“早”的过滤函数;非较早者“;共同条件,function,filter,powerbi,powerpivot,dax,Function,Filter,Powerbi,Powerpivot,Dax,我想知道为什么这个公式能得到我想要的结果 我有一张桌子,上面有: customer_id | date_booking | booking_status | salon_id | 我想检查客户的某个预订是否是第一个预订,在哪里 如果预订状态=8或14,则视为成功预订 我的计算列是: If(Calculate(Min(date_booking);filter(table; booking_status = 8 || booking_status = 14);filter(table;custom

我想知道为什么这个公式能得到我想要的结果

我有一张桌子,上面有:

customer_id | date_booking | booking_status | salon_id |
我想检查客户的某个预订是否是第一个预订,在哪里 如果预订状态=8或14,则视为成功预订

我的计算列是:

If(Calculate(Min(date_booking);filter(table; booking_status = 8 ||
booking_status = 14);filter(table;customer_id = earlier(customer_id);
filter(table;salon_id = earlier(salon_id)))=date_booking;1;0)

不幸的是,预订状态条件在此失败

我认为您需要创建一个计算列,如下所示:

IF (
    [date_booking]
        = CALCULATE (
            MIN ( [date_booking] );
            FILTER (
                ALL ( 'Table' );
                [customer_id] = EARLIER ( 'Table'[customer_id] )
                && [salon_id] = EARLIER ( 'Table'[salon_id] )
                    && ( [booking_status] = 8
                    || [booking_status] = 14 )
            )
        );
    1;
    0
)

如果预订是第一个状态为successful的预订,它将放置
1
,否则
0

可能是您添加的第二个筛选器,请删除前一个筛选器,因为CALCULATE可以更改筛选器上下文。由于您只处理一个表并更改一个表的筛选器,请尝试仅使用一个筛选器。请看下面修改的代码

IF(
    CALCULATE(MIN(date_booking);
        FILTER(table; 
            booking_status = 8 || booking_status = 14 AND 
            customer_id = EARLIER(customer_id) AND
            salon_id = earlier(salon_id)))=date_booking;
    1;0)

我不知道代码是否有效,因为我没有测试代码。每次编写dax代码时,请始终注意公式所使用的上下文,以及在何处编写dax代码。。?它是度量值还是计算列。。?“度量”将在筛选上下文中起作用,其中计算列位于行上下文中。

您想知道预订成功与否的上下文是什么?如果你编辑你的问题,包括你的预期结果,这将是非常有用的。嘿,Cheries,对不起,我应该说这是一个计算过的专栏!我会在明天试一试的,这也很好!非常感谢。谢谢回复!明天我会试试,让你们知道@路易斯多坎托布鲁姆,不客气。如果我的回答解决了你的问题,你可以积极地结束这个问题。