Tableau api Tableau:创建一个表计算,在满足条件时对不同的字符串值(名称)求和

Tableau api Tableau:创建一个表计算,在满足条件时对不同的字符串值(名称)求和,tableau-api,Tableau Api,我从非规范化的表中获取数据,在那里我保存名称和操作(除了其他内容)。我想创建一个计算字段,该字段将返回工作组名称的总和,但仅当给定工作组的DB中存在五个以上的操作时 当我想检查某个操作是否已为工作组注册时,我是这样做的: WINDOW_SUM(COUNTD(IF [action] = "ADD" THEN [workgroup_name] END)) 当我尝试对count做类似的事情时,我得到了“不能混合聚合参数和非聚合参数”: 我知道IF子句有问题,但不知道如何解决它 如何将IF更改为有效?

我从非规范化的表中获取数据,在那里我保存名称和操作(除了其他内容)。我想创建一个计算字段,该字段将返回工作组名称的总和,但仅当给定工作组的DB中存在五个以上的操作时

当我想检查某个操作是否已为工作组注册时,我是这样做的:

WINDOW_SUM(COUNTD(IF [action] = "ADD" THEN [workgroup_name] END))
当我尝试对count做类似的事情时,我得到了“不能混合聚合参数和非聚合参数”:

我知道IF子句有问题,但不知道如何解决它

如何将IF更改为有效?也许有一个更简单的方法,我错过了

编辑: (在Inox的回复之后)


我知道我的问题是将聚合字段与非聚合字段混合。我不能用filter来做这件事,因为我想以后把它作为更复杂的视图的一部分使用——过滤会破坏整个想法。

不,问题是将聚合参数(如sum、count)与非聚合参数(如任何字段直接)混合使用。这就是你将
计数([记录数])
[工作组名称]

如果您的目标是知道有多少工作组名称(unique)有5条以上的记录(根据您的代码的想法似乎是这样),我认为过滤然后计数更容易

因此,首先拖动工作组名称进行筛选,转到选项卡条件,选择按字段、记录数、计数、>、5

这样,您将只筛选包含5条以上记录的工作组名称

现在您可以使用一个简单的COUNTD(工作组名称)

编辑:澄清后

好的,然后您需要添加一个在数据库中固定的标记。所以表格计算对你没有帮助

根据定义,表计算取决于工作表上的字段(以及您决定如何使用这些字段进行分区或寻址),并且只有在工作表中调用后才能计算。这样,每次调用该函数时,它都会重新计算,对于您可能需要执行的某些分析,您需要使表计算正确的字段将不存在

同样的事情也适用于聚合(计数、求和等),聚合取决于您拥有的聚合级别


在这种情况下,最好在将数据连接到Tableau之前对其进行操作。我看不到一个直接的方法(一个单独的计算字段可以解决您的问题)。可以做的是从Tableau生成一个db(聚合每个工作组名称的记录数),然后将其导出到csv或mdb,然后将其重新连接到Tableau。但是,如果您可以在Tableau之外操作数据库,那么这通常是一个更好的解决方案

最近发布的带有条件过滤功能的帖子,谢谢。我知道我的问题是混合了聚合字段和非聚合字段-我不够清楚。我需要将其作为一个计算字段来执行,因为我想稍后在我的视图中使用它(与其他计算一起),添加过滤器会伪造其他元素。明白。太好了,谢谢你的帮助!我将修改表外的数据。
WINDOW_SUM(COUNTD(IF COUNT([Number of Records]) > 5 THEN [workgroup_name] END))