2014-09-09 3 views
0

Я получил данные, как показано нижеЕй реализация уровня таблица

vendor,Buyer,Region,Amt,qTY 
Rad_1,X,R1,1000,10,5 
Rad_2,Y,R2,1500,20,5 
Admin,X2,R1,2000,30,5 
Rad_4,X3,R3,4000,20,7 

когда поставщик Rad_1 регистрируется на табло сервера он должен быть в состоянии видеть только строки из-за краями «R1» на 1 &-аналогично для поставщика Admin.

** Пользователь должен просмотреть данные только из своего региона

Как я это реализовать?

я попытался дать этот

Username()=[vendor] в расчетном поле с фильтром = «истина», но оленья кожа waork как ожидалось

ответ

1

Не знаю, что происходит не так с 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() не будет очень быстрым с огромными строками.

Я бы пошел с решением группы и проверил, есть ли умный способ создания групп

+0

человек! при удаче ? –

+0

Не много, редактирует выше – Inox

Смежные вопросы