问题描述
我有一个名为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
数据看起来像这样
其中有产品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计算应该会简单得多。让我们看看。
重新创建示例数据
添加了一个CF只是为了检查库存销售是否大于或等于.80,并添加了它以查看以创建显示的数据。
现在将您的desired field
的计算结果添加为
{FIXED [Prod id] : MIN(
IF [Greater than 80]=1 then [Date] end)} = [Date]
将此字段添加到视图/过滤器应该可以满足您的目的。看到
如果您希望返回0或1,请改用此计算
IF {FIXED [Prod id] : MIN(
IF [Greater than 80]=1 then [Date] end)} = [Date]
then 1 else 0 end