Tableau api Tableau为空,然后为0计算字段

Tableau api Tableau为空,然后为0计算字段,tableau-api,calculated-field,Tableau Api,Calculated Field,我有我的tableau工作簿,目前我正在通过一个名为ID-COUNT([ID])的字段进行计数-虽然这很好,但在没有活动的日子里,我的仪表板不会显示任何内容,如果没有活动,我希望它显示为零-因此我确实要将其更改为COUNT,但也将null替换为0(零)?首先确保您了解什么是计数([ID])做它返回数据源中[ID]列中具有非空值的记录数 Count()的计算结果永远不会为null。但是,如果过滤后的数据中根本没有行,那么将得到一个空的结果集——即视图数据将根本没有任何要显示的摘要数据——无论是nu

我有我的tableau工作簿,目前我正在通过一个名为ID-COUNT([ID])的字段进行计数-虽然这很好,但在没有活动的日子里,我的仪表板不会显示任何内容,如果没有活动,我希望它显示为零-因此我确实要将其更改为COUNT,但也将null替换为0(零)?

首先确保您了解什么是计数([ID])做它返回数据源中[ID]列中具有非空值的记录数

Count()的计算结果永远不会为null。但是,如果过滤后的数据中根本没有行,那么将得到一个空的结果集——即视图数据将根本没有任何要显示的摘要数据——无论是null还是零

在这种情况下,在对ISNULL()或ZN()的调用中包装COUNT()不会有帮助


解决方案是确保每天至少有一个数据行,即使日期之外的所有其他字段都为空。聚合函数忽略空值,因此这样填充数据不会干扰结果。最简单的方法是创建一个日历表,该表每天有一行,大多数列中都有空值。然后使用联合将日历与原始数据源合并。那么Count(ID)将在除了日历条目之外没有其他记录的日期返回零


您也可以使用数据混合获得类似的结果,不过要复杂一些。

最简单的方法是创建一个日历表,该表每天有一行,大多数列中都有空值。然后使用联合将日历与原始数据源合并。然后计数(ID)将在除日历条目外没有其他记录的日期返回零。--有没有一种方法可以让tableau在不需要在db中创建的情况下创建这个“表”。根据数据源,您可以在查询时使用自定义sql动态创建,也可以将其合并到静态列表中。