TABLE计算的字段优化

问题描述

我有一个名为FirstSale的计算字段,在该字段中,我观察到产品销售量超过其库存的80%的第一个实例。

我查看产品ID和时间戳(转换为字符串)以及所售库存的百分比。

如何优化查询以使其不依赖于这么多字段,或者如何将其转换为SQL查询

计算字段逻辑:

    IF STR[SaleDate]) = 
    {FIXED [ID],{FIXED [ID],STR([SaleDate]),[Inventory %]:
    IF MIN([Inventory %]) > 0.8
    THEN 1 ELSE 0 END}: MIN([STR(SaleDate]))}
    THEN 1 
    END

数据看起来像这样

enter image description here

其中有产品ID,销售日期,库存%,最后一列(带有1和0)是计算字段。

本质上,目标是仅当ID显示库存%> 80%时,计算才应首次返回1。在其他所有情况下,返回0。

例如,查看第二个ID,唯一应具有1的值组合是10月28日(2020083008056、2020年10月28日,84.00%,1),而所有其他值应返回0。

因此,第二个ID的全额回报是

(2020083008056,October 28 2020,84.00%,1 )
(2020083008056,October 29 2020,84.36%,0 )
(2020083008056,October 30 2020,84.67%,October 31 2020,0 )

解决方法

我已经重新创建了一些示例数据来解决您的问题。如果我没有误会,您的LOD计算应该会简单得多。让我们看看。

重新创建示例数据

enter image description here

添加了一个CF只是为了检查库存销售是否大于或等于.80,并添加了它以查看以创建显示的数据。

enter image description here

现在将您的desired field的计算结果添加为

{FIXED [Prod id] : MIN(
IF [Greater than 80]=1 then [Date] end)} = [Date]

将此字段添加到视图/过滤器应该可以满足您的目的。看到

enter image description here

如果您希望返回0或1,请改用此计算

IF {FIXED [Prod id] : MIN(
IF [Greater than 80]=1 then [Date] end)} = [Date] 
then 1 else 0 end