Не знаю, что происходит не так с USERNAME() = [Поставщиком], но определенно не отобразит все регионы для пользователя.
Что бы я сделал, это создать 2 поля. Один названный [User_region]:
CASE USERNAME()
WHEN 'XXX' THEN 'R1'
WHEN 'YYY' THEN 'R2'
...
END
И тогда я создал бы булев фильтр:
[User_region] = [Region]
Очень важно, чтобы User_region и область одного и того же типа (например, оба являются строками), так что вы можете доверять что выйдет из этого фильтра.
Конечно, это было бы больно, если бы у вас были тысячи продавцов. Я пытаюсь придумать способ использовать вашу фактическую таблицу, чтобы открыть область пользователя, а затем использовать ее как фильтр, но сейчас я ничего не могу придумать.
EDIT:
Вы можете создавать группы пользователей, но это может быть столь же болезненным, как выше решение. Преимущество заключается в том, что после определенного предела выражений, Tableau не позволит вам создать вычисляемое поле, в то время как группы могут быть столь же большими, как вы хотите
Сопоставят это: http://kb.tableausoftware.com/articles/knowledgebase/display-different-dimensions
Другого решения, хотя и не элегантными , а также не очень эффективно, - это иметь поле строки с именами всех поставщиков этого региона, которые были объединены (например, для региона 1 это может быть «Rad_1Rad_3Rad_10»), а затем использовать CONTAINS(), чтобы проверить, существует ли поставщик.
Хотя это можно сделать в Tableau (с использованием метода Previous_Value()), вам придется экспортировать данные и присоединиться к вашей базе данных, поэтому, если вы можете сделать это до подключения вашей базы данных к Tableau, я считаю, что это лучше.
И это не может быть настолько эффективным для регионов с большим количеством поставщиков. Не знаю, есть ли предел для строковых полей, но это может использовать много памяти, и, вероятно, CONTAINS() не будет очень быстрым с огромными строками.
Я бы пошел с решением группы и проверил, есть ли умный способ создания групп
человек! при удаче ? –
Не много, редактирует выше – Inox