0

我有一个名为 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 首次显示 Inventory % > 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%, 0 )
(2020083008056, October 31 2020, 84.67%, 0 )
4

1 回答 1

0

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

重新创建示例数据

在此处输入图像描述

添加了一个 CF 只是为了检查库存销售是否大于或等于 0.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
于 2020-11-07T15:33:15.110 回答