Tableau api Tableau--基于DateDiff(';月';,[date],Today())更改计算字段
我有一个计算字段Tableau api Tableau--基于DateDiff(';月';,[date],Today())更改计算字段,tableau-api,Tableau Api,我有一个计算字段最近的价格变化设置如下: IF DATEDIFF('month', [Posted Date], TODAY()) == 0 THEN [Price Change] END 这应该只保留我的数据集中最近一个月的价格变化,该数据集每月更新一次。不幸的是,在添加新数据之前的一个月的第一周,没有任何行计算为true的DATEDIFF('month',[Posted Date],TODAY())==0。目前,我已将此条件替换为DATEDIFF('month',[Posted Date]
最近的价格变化
设置如下:
IF DATEDIFF('month', [Posted Date], TODAY()) == 0
THEN [Price Change]
END
这应该只保留我的数据集中最近一个月的价格变化,该数据集每月更新一次。不幸的是,在添加新数据之前的一个月的第一周,没有任何行计算为true的DATEDIFF('month',[Posted Date],TODAY())==0
。目前,我已将此条件替换为DATEDIFF('month',[Posted Date],TODAY())10
,它只删除最近一个月的价格数据(或基于我的临时修复的两个月)。我希望筛选出最近价格变化超过某个美元金额的所有部分,例如10美元
例如,对于以下两个部分,所有A部分和C部分的记录都应该被过滤掉,而所有B部分的记录都应该保留下来
part price price change recent price change date
A 52 2 2 2019-02-01 00:00:00.000
A 50 0 null 2019-01-01 00:00:00.000
A 50 0 null 2018-12-01 00:00:00.000
B 79 31 31 2019-02-01 00:00:00.000
B 48 6 null 2019-01-01 00:00:00.000
B 42 0 null 2018-12-01 00:00:00.000
C 51 0 0 2019-02-01 00:00:00.000
C 51 39 null 2019-01-01 00:00:00.000
C 12 0 null 2018-12-01 00:00:00.000
也许我的设置不正确。我愿意接受任何想法 为了解决第一个问题,请使用数据的最大日期,而不是将计算固定在今天的日期。您可以通过详细程度计算来实现这一点 最长日期:
{max(Posted Date]}
用途:
IF DATEDIFF('month', [Posted Date], max_date) == 0
THEN [Price Change]
END
对于第二个问题,再次使用LOD计算来修复每个零件所有日期的最近价格变化。您可以将本例中的10设为参数,以便用户可以确定截止值
{fixed [Part] : sum([Recent Price Change])}>10
这将对所有日期应用T/F
您的解决方案的第二部分遇到了问题,尽管这对我来说很有意义。我创建了一个名为“最近价格变化截止点”的参数和一个如上所述的计算字段,但我的参数替换了10。然而,例如,当我通过将参数设置为1000进行测试时,我的所有数据点都没有被过滤掉。
{fixed [Part] : sum([Recent Price Change])}>10