我有一个图形,可以通过单击各个状态将其过滤到状态级别。
当前标题编码为
// 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>
但是我在弄清楚该怎么做方面有些困难。谢谢。
答案 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