Tableau api 计算天数时,我的Tableau计算字段出错

Tableau api 计算天数时,我的Tableau计算字段出错,tableau-api,calculated-field,Tableau Api,Calculated Field,我正在尝试根据活动_标志计算项目的天数。 如果活动标志为真,则应计算从结束日到今天的天数。 如果活动标志为假,则应计算从结束日到最后观察日(ob_日期)的天数。以下是我的尝试: if active_flag = True then datediff('day',[end_date],TODAY()) elseif active_flag = False then datediff('day',[end_date], max([ob_date])) end 我看到了错误,因此我正在寻找有关如

我正在尝试根据活动_标志计算项目的天数。 如果活动标志为真,则应计算从结束日到今天的天数。 如果活动标志为假,则应计算从结束日到最后观察日(ob_日期)的天数。以下是我的尝试:

if active_flag = True then datediff('day',[end_date],TODAY()) 
elseif active_flag = False then datediff('day',[end_date], max([ob_date])) end


我看到了错误,因此我正在寻找有关如何重新编写此计算以获得所需结果的建议。

您经常遇到此错误“无法混合聚合和非聚合”。这是因为您使用“结束日期”(非聚合)调用了
max(聚合)
。LOD在处理此类情况时非常有用。所以正确的代码是

if active_flag then datediff('day',[end_date],TODAY()) 
else datediff('day',[end_date], {max([ob_date])}) end
通过在max计算之前编写大括号的脚本,我们强制Tableau计算引擎在“Ob_date”列中查找所有值的最大值


LOD可以提高我们的计算能力。如果你对此感兴趣,你经常会遇到这样的错误“不能混合聚合和非聚合”。这是因为您使用“结束日期”(非聚合)调用了
max(聚合)
。LOD在处理此类情况时非常有用。所以正确的代码是

if active_flag then datediff('day',[end_date],TODAY()) 
else datediff('day',[end_date], {max([ob_date])}) end
通过在max计算之前编写大括号的脚本,我们强制Tableau计算引擎在“Ob_date”列中查找所有值的最大值

LOD可以提高我们的计算能力。如果您感兴趣,请签出此