Tableau标题根据过滤器显示单个州或“美国”

时间:2019-04-04 14:15:37

标签: dynamic tableau

我有一个图形,可以通过单击各个状态将其过滤到状态级别。

当前标题编码为

// Server Implementation
 socket.on("joinRoom", function (data) {
        console.log("Got 'joinRoom' from client , " + JSON.stringify(data));
        sub.subscribe(data.room);
        socket.join(data.room);    
    });    

在纽约时显示<Sheet Name> : <ATTR(State)> ,在未选择任何州时显示Profit Over Time: New York。我认为生成一个计算字段并将其插入标题可能是解决方案。

Profit Over Time: *

如果列表仅包含1个州,则计算所得的字段将设置为等于列表中的第一个状态,否则将字段设置为等于“美国”。

<Sheet Name> : <US or State>

但是我在弄清楚该怎么做方面有些困难。谢谢。

2 个答案:

答案 0 :(得分:0)

您的[州]字段被列为ATTR聚合的事实正在导致您看到的行为。聚合多个字符串总是变成*。理想情况下,您可以简单地将工作表上的过滤器更改为[State],并且不进行ATTR聚合,然后将标题更改为:

<Sheet Name> : <State> 

该行为将遵循过滤器:选择“全部”时,标题中将显示“全部”。

或者,我相信这个计算出的字段将完成您想做的事情。它需要进行表计算,以计算视图上的状态,如果有50个,则假定所有状态都在显示,因此应称为“美国”,否则仅显示一个状态。 (注意:如果选择了多个状态,则此效果不如我上面的建议。)

If WINDOW_COUNT(ATTR([State])) = 50 Then 'United States'
Else ATTR([State])
END

我确定有一个比较的LOD计算可以与上述行为匹配,但是LOD在过滤操作顺序方面的操作有所不同。 (LOD在过滤之前发生,表计算在之后发生。)LOD上的这种操作顺序可能会使事情变得有些困难,并且在很大程度上取决于数据的结构。不过有可能-如果正确完成,可能会更有效率。

答案 1 :(得分:0)

您可以将ATTR([State])的计算换成另一个,然后在标题中使用该计算:

IF ATTR([State]) = '*' THEN 'United States' ELSE ATTR([State]) END