我是Tableau和PostgreSQL的新手,这是我的问题。
我已经在Postgres中创建了不同的用户,我尝试探索 GRANT 和 REVOKE 命令,以限制某些用户访问某个表。但是,在我的Tableau桌面中,每当我使用任何用户帐户连接到Postgres时,Tableau仍会显示我要隐藏给该用户的所有表。我想要的例子是user1只能查看/导入table1和table2,而user2只能查看/导入table2和table3。
我不知道我错过了什么,任何帮助都将不胜感激。
操作系统:纯Windows环境。
答案 0 :(得分:2)
仅仅因为在指定数据连接时Tableau连接面板中列出了表名,并不意味着特定用户具有对表的选择权限。
如果您取消对PostGres表的select访问权限,然后通过Tableau(或任何其他工具)连接到PostGres,那么您将无法从该表中选择任何数据。如果您使用相同的Tableau连接,但使用对表有选择权限的Postgres帐户,那么您将能够选择数据。
答案 1 :(得分:1)
Based on this link,报告的行为与PostgreSQL和设计有关,因而不是Tableau问题。
建议的解决方法之一是设置per-user schema,但如果有大量用户,这将是一个重大的开销。
答案 2 :(得分:0)
我不确定Tableau无法控制Postgres数据库中要列出的表格。
当Tableau连接时,这是在Postgres中执行的内容:
select relname, nspname, relkind
from pg_catalog.pg_class c,
pg_catalog.pg_namespace n
where relkind in ('r', 'v')
and nspname not in ('pg_catalog', 'information_schema', 'pg_toast', 'pg_temp_1')
and n.oid = relnamespace
order by nspname, relname
在我看来,应该有一种方法来编辑它。
编辑:我发现这个查询是在postgres驱动程序中发出的。只需修改它并重新编译驱动程序就可以了。