DAX - 过滤功能与早期和 "Non-Earlier" 条件一起
DAX - Filter function with Earlier and "Non-Earlier" condition together
我想知道为什么这个公式确实获取了我想要的结果。
我有一个 table 有:
customer_id | date_booking | booking_status | salon_id |
我想检查某个客户的某个预订是否是第一个,在哪里
如果 booking_status = 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)
不幸的是booking_status条件在这里失败了。
我认为您需要像这样创建一个计算列:
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
)
如果预订是第一个且状态成功,它将显示 1
,否则显示 0
。
可能是您添加的第二个过滤器擦除前一个过滤器,因为 CALCULATE 可以更改过滤器上下文。由于您在一个 table 上工作并且仅更改一个 table 的过滤器,因此请尝试仅使用一个过滤器。在下面查看您修改后的代码..!
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 代码..?它是度量还是计算列..? Measure 将在过滤上下文中起作用,其中计算列在行上下文中。
我想知道为什么这个公式确实获取了我想要的结果。
我有一个 table 有:
customer_id | date_booking | booking_status | salon_id |
我想检查某个客户的某个预订是否是第一个,在哪里 如果 booking_status = 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)
不幸的是booking_status条件在这里失败了。
我认为您需要像这样创建一个计算列:
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
)
如果预订是第一个且状态成功,它将显示 1
,否则显示 0
。
可能是您添加的第二个过滤器擦除前一个过滤器,因为 CALCULATE 可以更改过滤器上下文。由于您在一个 table 上工作并且仅更改一个 table 的过滤器,因此请尝试仅使用一个过滤器。在下面查看您修改后的代码..!
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 代码..?它是度量还是计算列..? Measure 将在过滤上下文中起作用,其中计算列在行上下文中。