我得到的数据如下
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登录到tableau服务器时,他应该只能看到1& 3行因为" R1"区域 同样适用于供应商管理员。
**用户应仅查看来自其所在区域的数据
我该如何实现?
我试着给这个
计算字段中的 Username()=[vendor]
,其中filter =" true"但并没有像预期的那样挥霍
答案 0 :(得分:1)
不知道USERNAME()= [供应商]出了什么问题,但绝对不会向用户显示所有区域。
我要做的是创建2个字段。一个名为[User_region]:
CASE USERNAME()
WHEN 'XXX' THEN 'R1'
WHEN 'YYY' THEN 'R2'
...
END
然后我会创建bool过滤器:
[User_region] = [Region]
User_region和Region属于同一类型(例如两者都是字符串)非常重要,因此您可以信任此过滤器的内容。
如果你有成千上万的供应商,那么这将是痛苦的。我试图想办法使用你的实际表来发现用户区域,然后用它作为过滤器,但我现在想不出任何东西。
编辑:
您可以创建用户组,但这可能与上述解决方案一样痛苦。优点是,超过表达式的某个限制,Tableau将不允许您创建计算字段,而组可以根据您的意愿大小
与此相关:http://kb.tableausoftware.com/articles/knowledgebase/display-different-dimensions
另一个解决方案,虽然不优雅,也不是非常有效,但是要有一个字符串字段,其中该区域的所有供应商的名称被连接起来(例如,对于区域1,它可以是“Rad_1Rad_3Rad_10”)然后使用CONTAINS()来检查供应商是否在那里。
虽然可以在Tableau中完成(使用Previous_Value()),但您必须导出数据并加入数据库,因此如果您可以在将数据库连接到Tableau之前执行此操作,我相信它会更好。
对于拥有众多供应商的地区来说,这可能不是那么有效。不知道字符串字段是否有限制,但这可能会占用大量内存,并且可能CONTAINS()的字符串不会非常快。
我会选择群组解决方案,并检查是否有一种聪明的方法来创建群组