篩選資料的存取權
篩選可控制對 Essbase 立方體中資料值的安全性存取。篩選是可用的最細微安全性形式。篩選會指定一組特定立方體儲存格或某個範圍的儲存格限制。管理員或管理者會指派篩選以控制使用者或群組的存取權。
您擁有的安全角色會決定您是否可以建立、指定、編輯、複製、重新命名,或刪除篩選:
- 如果具備「應用程式管理者」角色,就可以針對任何使用者或群組管理任何篩選。篩選不會對您產生任何影響。
- 如果具備「資料庫更新」角色,就可以針對自己建立的應用程式管理篩選。
- 如果具備「資料庫管理者」角色,就可以管理您的應用程式或立方體內的篩選。
- 如果具備「資料庫存取」角色 (預設),就會擁有所有儲存格中資料值的讀取權,除非篩選進一步限制您的存取權。
使用 Essbase Web 介面建立篩選
在 Essbase Web 介面的資料庫自訂區段中,您可以建立安全性篩選條件,限制使用者或群組的立方體存取權。
您可以為立方體建立多個篩選。如果編輯篩選,對其定義所做的修改會由該篩選的所有使用者繼承。
若要編輯篩選,請選取立方體,然後按一下左側面板中的「篩選」選項。接著,按一下篩選名稱並在篩選編輯器中進行變更以編輯篩選。若要編輯現有資料列,請對該資料列按兩下。
若要複製、重新命名或刪除篩選,請按一下篩選名稱右邊的「動作」功能表,然後選擇選項。
建立篩選條件之後,請將它們指定至使用者或群組。
建立有效的動態篩選
您可以根據外部來源資料建立動態篩選,以減少所需的篩選定義數目。
@datasourceLookup 和變數 $LoginUser 和 $LoginGroup。您的外部來源資料會是 csv 檔案或關聯式表格。就關聯式來源資料而言,您可以將 .csv 載入關聯式表格。
動態篩選語法
使用動態篩選語法建立彈性篩選,供您指定給多個使用者和群組。
篩選資料列定義除了成員表示式外也可包含以下元素。
$loginuser
此變數可在程式實際執行時儲存目前登入的使用者值。它可以與 @datasourcelookup 方法搭配使用。
$logingroup
此變數儲存目前登入使用者所屬的所有群組值。其中包括直接和間接群組。與 @datasourcelookup 方法搭配使用時,會個別查詢每個群組與資料來源。
@datasourcelookup
此方法會從資料來源擷取記錄。
語法
@datasourcelookup (dataSourceName, columnName, columnValue, returnColumnName)| Parameter - 參數 | 描述 |
|---|---|
| dataSourceName |
Essbase 中定義的外部資料來源名稱。若為應用程式層級資料來源,會在名稱的前面加上應用程式名稱和點。 |
| columnName |
要搜尋指定 columnValue 的「資料來源」資料欄名稱。 |
| columnValue |
要在 columnName 中搜尋的值。 |
| returnColumnName |
供傳回值清單的資料來源資料欄名稱。 |
附註:
資料來源資料欄名稱不應使用 SQL 保留字,例如 USER、GROUP 或 ROLE。使用保留字可能會導致 SQL 剖析錯誤或非預期的篩選行為。描述
@datasourcelookup 呼叫等同於下列 SQL 查詢:
select returnColumnName from dataSourceName where columnName=columnValue@datasourcelookup 會查詢指定資料來源,並搜尋 columnName 包含 columnValue 的記錄。如果您將 columnValue 指定為 $loginuser,此方法會搜尋 columnName 包含目前登入使用者之名稱的記錄。
Essbase 會將清單元素合併成以逗號區隔的字串,以構成篩選定義資料列。若有任何記錄包含特殊字元、空格或只有數字,系統會將它們以引號括住。
附註:
@options 參數可用來控制查尋失敗行為。strictLookup=true 時,會將查詢失敗項目視為嚴重錯誤,不會傳回任何篩選結果。範例
將參數括在引號內。
下列呼叫會查尋全域資料來源,並且傳回店經理名字為 Mary 的商店名稱清單。
@datasourceLookup("StoreManagersDS","STOREMANAGER","Mary","STORE")下列呼叫會查尋應用程式層級資料來源,並且傳回目前登入使用者為店經理的商店名稱清單。
@datasourceLookup("Sample.StoreManagersDS","STOREMANAGER","$loginuser","STORE")下列呼叫會查尋應用程式層級資料來源,並且傳回商店部門符合目前登入使用者所屬任一群組的商店名稱清單。
@datasourceLookup("Sample.StoreManagersDS","STORE_DEPARTMENT","$logingroup","STORE")若登入的使用者屬於 3 個群組,則上述 @datasourcelookup 方法會傳回每個群組的所有相符資料欄值。
下列範例使用動態篩選表示式內的 SQL 函數。
@datasourceLookup("Sample.StoreManagersDS",LOWER(CAST("STOREMANAGER" AS VARCHAR(30))),LOWER("$loginuser"),"STORE")下列範例使用明確的大小寫函數執行區分大小寫的評估。
@datasourceLookup("Sample.StoreManagersDS",UPPER("STOREMANAGER"),UPPER("$loginuser"),"STORE")下列範例會傳回屬於 Sales 或 Marketing 部門的商店。
@datasourceLookup("Sample.StoreManagersDS","STORE_DEPARTMENT","Sales","Marketing","STORE")下列範例使用具有 @datasourceLookup 的成員集函數。
@DESCENDANTS(@datasourceLookup("Sample.StoreManagersDS","STOREMANAGER","$loginuser","STORE"))下列範例使用具有資料來源查尋的巢狀成員集函數。
@CHILDREN(@LSIBLING(@datasourceLookup("Sample.StoreManagersDS","STOREMANAGER","$loginuser","STORE")))下列範例使用嚴格的查閱行為。如果查詢失敗,則不會傳回任何篩選結果。
@datasourceLookup("Sample.StoreManagersDS","STOREMANAGER","$loginuser","STORE",@options(strictLookup=true))