Date 表中销售额大于100的首次日期

Date 表中销售额大于100的首次日期,date,tableau-api,Date,Tableau Api,我有一个按日期和产品名称列出销售额的基本平面文件。我需要为销售超过100个单位的第一个销售日创建一个字段 我尝试了{FIXED[Style code]:MIN([Prod-Cal-Activity-Date])},但这只给了我样式代码存在的第一天数据 我还尝试了IF([Net Sales Units]>200)然后{FIXED[Style code]:MIN([Prod Cal Activity Date])}END,但这也给了我样式代码存在的第一天数据 您可以使用以下计算: MIN(IF([N

我有一个按日期和产品名称列出销售额的基本平面文件。我需要为销售超过100个单位的第一个销售日创建一个字段

我尝试了
{FIXED[Style code]:MIN([Prod-Cal-Activity-Date])}
,但这只给了我样式代码存在的第一天数据 我还尝试了
IF([Net Sales Units]>200)然后{FIXED[Style code]:MIN([Prod Cal Activity Date])}END
,但这也给了我样式代码存在的第一天数据


您可以使用以下计算:

MIN(IF([Net Sales Units]>100) THEN [Prod Cal Activity Date] ELSE #2100-01-01# END)
计算的
IF([净销售单位]>100)然后[Prod Cal Activity Date]ELSE#2100-01-01#END
部分将销售超过100个单位的所有情况下的日期转换为非常高的值(示例中为2100年)。一旦这样做了,您就可以简单地取一个最小的计算日期来获得所需的结果。如果您需要使用样式代码,那么可以在开头添加一个固定函数

如果您愿意,可以提供一些进一步简化的方法。它们不会改变意思

  • 您不需要像在C中那样在布尔表达式周围使用括号
  • 您可以完全删除ELSE子句。如果条件为false,则if表达式将默认为null。诸如MIN()、MAX()、SUM()等聚合函数会自动忽略空值,因此您不必提供一些默认的未来日期
  • 因此
    MIN(如果[Net Sales Units]>100,则[Prod Cal Activity Date]END
    完全等效,只需少读几个字符

    下一个可能的转变除了保存击键之外还有一点分析价值

  • 您不需要将聚合函数的选择硬编码到计算中。您可以将计算字段命名为High Sales Activity Date,定义为

    如果[净销售单位]>100,则[生产校准活动日期]结束

  • 此字段仅保存高销售额记录的日期,而低销售额记录的日期为空。但是,通过将聚合函数排除在计算之外,您可以更灵活地以不同的方式使用它。例如,您可以

    • 按照最初的要求计算最早(即最小)的高销售日期
    • 使用Max计算最近的销售高峰日期
    • 通过筛选特殊的非空值,筛选到仅具有高销售额的日期
    • 使用COUNTD计算高销售额日期的数量

    像这样简单的小筛选计算可能非常有用——之所以称为小筛选计算,是因为嵌入的if语句有效地筛选出与条件不匹配的值。其他记录仍有空值,但由于聚合函数忽略空值,您可以认为它们已被计算有效地过滤掉

    我刚刚试过这个“{固定的[样式代码]:MIN(如果([净销售单位]>100),那么#2100-01-01#否则[生产活动日期]结束)}''''但它仍然返回样式代码在数据中的第一个日期,而不是销售额超过100的第一个日期。您是否可以在没有固定值的情况下尝试它以检查计算是否正常如果没有固定值,它仍然返回样式代码在数据中存在的第一个日期,而不是销售额超过100 try just MIN的第一个日期(如果[净销售单位]>100然后[生产校准活动日期]结束)@CR7SMS我希望您不介意我在您的答案中添加这么多内容。您答对了。我只是以您的答案为出发点来阐述一下,因为人们通常会将聚合函数硬编码到calc中,而忽略它会更有用,而这个答案正好说明了这一点。