Заголовок таблицы отображает либо отдельное состояние, либо «Соединенные Штаты» на основе фильтра

#dynamic #tableau-api

#динамический #таблица-api

Вопрос:

У меня есть график, который можно отфильтровать до уровня штата, нажав на отдельные штаты.

Текущий заголовок кодируется как

 <Sheet Name> : <ATTR(State)> 
  

Который отображается, Profit Over Time: New York когда находится в Нью-Йорке, но Profit Over Time: * когда штат не выбран. Я подумал, что создание вычисляемого поля и вставка его в заголовок могут быть решением.

 <Sheet Name> : <US or State>
  

Затем вычисляемое поле будет устанавливать поле равным первому состоянию в списке, если список содержит только 1 состояние и «Соединенные Штаты» в противном случае.

 IF COUNTD([State]) = 1 THEN [State][1]
ELSE "United States"
END
  

Но у меня возникли некоторые трудности с выяснением, что делать. Спасибо.

Ответ №1:

Вы можете обернуть свой ATTR([State]) расчет в другой и использовать этот расчет в своем заголовке:

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

Ответ №2:

Тот факт, что ваше поле [State] указано как агрегированное значение ATTR, вызывает поведение, которое вы видите. Объединение нескольких строк всегда превращается в *. В идеале вы можете просто изменить фильтр на своем листе на [Состояние] без агрегирования ATTR, а затем изменить свой заголовок на:

 <Sheet Name> : <State> 
  

Поведение будет соответствовать фильтру: когда выбрано «Все», «Все» будет отображаться в вашем заголовке.

В качестве альтернативы, я считаю, что это вычисляемое поле выполнит то, что вы пытались сделать. Требуется вычисление таблицы, в которой подсчитываются состояния в представлении, и если их 50, предполагается, что отображаются все состояния, и поэтому их следует называть «Соединенные Штаты», в противном случае отображается только одно состояние. (Предостережение: это работает не так хорошо, как мое предложение выше, если выбрано несколько состояний.)

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

Я уверен, что существует сравнительный расчет LOD, который соответствовал бы описанному выше поведению, однако LOD работают по-разному в отношении порядка операций при фильтрации. (LOD выполняются до фильтрации, вычисления таблицы выполняются после.) Такой порядок операций в LOD может немного усложнить задачу и будет сильно зависеть от структуры ваших данных. Хотя это возможно — и, вероятно, более эффективно, если все сделано правильно.

Комментарии:

1. Помогло ли это / сработало для вас? Если это так, пожалуйста, установите зеленую галочку, чтобы другие могли ссылаться, если столкнулись с такой же проблемой. Если бы вы могли решить самостоятельно, не могли бы вы поместить ответ здесь? Мне любопытно.