對於很多企業來說,有時候希望某些資料表中,員工只能看到與自己有關的資料。
除了之前介紹的 多層次權限需求 外,還可以透過新增 FineBI 系統參數fine_username實現此場景。
參數fine_username屬於 FineBI 內建參數,可以自動獲取當前平台登入使用者的登入名稱。
fine_username 參數在儀錶板分析時,無法對其進行 過濾組件參數綁定(特殊參數預設隱藏)過濾等操作。
本文介紹的參數用法需要使用「實時資料」,直連資料庫的資料表才能使用。
FineBI5.1 目前只支援「系統帳號」參數,例如:$fine_username 。
範例以 FineBI 內建「FRDemo」資料下的「aaa_user」使用者資訊表為例,使用fine_username系統參數。
管理者登入數據決策系統,點選「管理系統」>「資料連結」>「伺服器資料集」,建立一個 SQL 資料集。
資料集名稱為「使用者資訊表」,選擇資料來源為「FRDemo」,新增 SQL 語句 select * from aaa_user ,點選「儲存」,如下圖所示:
管理者登入數據決策系統,點選「管理系統」>「使用者管理」。
點選「匯入使用者」,選擇上節建立的伺服器資料集,具體設定如下圖所示,點選「確定」,如下圖所示:
管理者登入數據決策系統,點選「管理系統」>「使用者管理」,點選「平台使用使用者」。
將上節匯入的使用者全部新增為「PC端使用使用者」,如需使用者有編輯和查看的權限,將所有使用者新增進「BI 資料分析使用者」,如下圖所示:
管理者登入數據決策系統,點選「資料準備」,將資料列表切換為「實時資料」。建立一個「使用者資訊」業務包並進入,選擇「新增SQL資料集」。
表名稱為「使用者資訊表」, SQL語句為 select * from aaa_user where 帳號='${fine_username}',獲取 fine_username 參數,點選「確定」,如下圖所示:
注1:僅支援實時資料,不支援抽取資料。
注2:參數不能寫在 SQL 的選欄位部分,例如:select 帳號 as '${fine_username}' ,密碼,機構,職務 from aaa_user 。只能寫在過濾條件裡面,BI不支援動態選擇欄位。
注3:管理者查看該表,資料為空,因為該使用者表中實際並不存在管理者的資訊。
管理者登入數據決策系統,點選「管理系統」>「權限管理」>「普通權限配置」,選擇「所有部門」。
點選「資料權限」,選擇「實時資料」,為所有部門分配實時資料中「使用者資訊表」的「使用」權限,如下圖所示:
注:管理者是看不到任何該表資料的。因為 SQL 語句的過濾條件是「where 帳號='${fine_username}'」,由於該使用者表中實際並不存在管理者的資訊,所以管理者實際是看不到該表的任何資料的。
22 部門使用者 99 登入數據決策系統,點選「資料準備」>「使用者資訊」>「使用者資訊表」,只能查看自己的資訊。如下圖所示:
26 部門使用者 98 登入數據決策系統,點選「資料準備」>「使用者資訊」>「使用者資訊表」,只能查看自己的資訊。如下圖所示: