2014-02-25 24 views
0

我是Tableau和PostgreSQL的新手,這是我的問題。如何限制Tableau從Postgres查看一些表格

我已經在Postgres的創建不同的用戶,我試圖探索以限制某些用戶訪問某個表GRANTREVOKE命令。但是,在我的Tableau桌面中,無論何時使用任何用戶帳戶連接到Postgres,Tableau仍會顯示我想隱藏給該用戶的所有表。我想要的例子是user1只能查看/導入table1和table2,而user2只能查看/導入table2和table3。

我不知道我錯過了什麼,任何幫助將不勝感激。

操作系統:純粹的Windows環境。

+0

如果您通過Pgadmin通過user1登錄到PostgreSQL數據庫,您是否可以確認只有table1和table2可見? – Talvalin

回答

2

僅當您指定數據連接時在Tableau連接面板中列出表名時,並不表示某個特定用戶可以選擇訪問該表。

如果您撤消對PostGres表的選擇訪問權限,然後通過Tableau(或任何其他工具)連接到PostGres,那麼您將無法從該表中選擇任何數據。如果使用相同的Tableau連接,但使用具有對錶的選擇訪問權限的Postgres帳戶,則可以選擇數據。

+0

是的,先生,儘管user1無法訪問table3,但仍然可以看到該用戶,導致用戶端有點混淆。瞭解我們擁有數百個表格和視圖我認爲最簡單的方法是僅顯示僅用於該用戶的表格和字段。 tnx –

+0

@ user2530448向Tableau建議新功能的最佳方式是將其添加到他們的創意頁面http://community.tableausoftware.com/community/ideas –

1

Based on this link,報告的行爲與PostgreSQL和設計有關,因此不是Tableau問題。

建議的解決方法之一是設置per-user schema,但如果有大量用戶,這將是一個很大的開銷。

+0

聽起來很有趣,但這是否意味着我需要將特定的表格複製到爲特定用戶組創建的新模式?謝謝。 –

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驅動程序中發出的。只要修改它並重新編譯驅動程序,你就可以走了。