我计算天数的 Tableau 计算字段出错
Error in my Tableau calculated field for counting days
我正在尝试根据 active_flag 计算项目的天数。
如果 active 标志为 true,则应计算从 end_day 到今天的天数。
如果 active flag 为 false,则应计算从 end_day 到最后一个观察日期 (ob_date) 的天数。以下是我的尝试:
if active_flag = True then datediff('day',[end_date],TODAY())
elseif active_flag = False then datediff('day',[end_date], max([ob_date])) end
我看到了错误,所以我正在寻找有关如何重写此计算以获得所需结果的建议。
您经常遇到此错误 "Cannot Mix aggregate and Non-aggregate"。这是因为您使用 "End date" 调用了 max(aggregate)
(非聚合)。 LOD 有助于处理此类情况。所以正确的代码是
if active_flag then datediff('day',[end_date],TODAY())
else datediff('day',[end_date], {max([ob_date])}) end
通过在最大值计算之前编写 花括号 脚本,我们强制 Tableau 计算引擎找到列 "Ob_date".
中所有值的最大值
LOD 可以提升我们的计算能力。如果你有兴趣checkout this
我正在尝试根据 active_flag 计算项目的天数。 如果 active 标志为 true,则应计算从 end_day 到今天的天数。 如果 active flag 为 false,则应计算从 end_day 到最后一个观察日期 (ob_date) 的天数。以下是我的尝试:
if active_flag = True then datediff('day',[end_date],TODAY())
elseif active_flag = False then datediff('day',[end_date], max([ob_date])) end
我看到了错误,所以我正在寻找有关如何重写此计算以获得所需结果的建议。
您经常遇到此错误 "Cannot Mix aggregate and Non-aggregate"。这是因为您使用 "End date" 调用了 max(aggregate)
(非聚合)。 LOD 有助于处理此类情况。所以正确的代码是
if active_flag then datediff('day',[end_date],TODAY())
else datediff('day',[end_date], {max([ob_date])}) end
通过在最大值计算之前编写 花括号 脚本,我们强制 Tableau 计算引擎找到列 "Ob_date".
中所有值的最大值LOD 可以提升我们的计算能力。如果你有兴趣checkout this