篩選資料的存取權

篩選可控制對 Essbase 立方體中資料值的安全性存取。篩選是可用的最細微安全性形式。篩選會指定一組特定立方體儲存格或某個範圍的儲存格限制。管理員或管理者會指派篩選以控制使用者或群組的存取權。

您擁有的安全角色會決定您是否可以建立、指定、編輯、複製、重新命名,或刪除篩選:

  • 如果具備「應用程式管理者」角色,就可以針對任何使用者或群組管理任何篩選。篩選不會對您產生任何影響。
  • 如果具備「資料庫更新」角色,就可以針對自己建立的應用程式管理篩選。
  • 如果具備「資料庫管理者」角色,就可以管理您的應用程式或立方體內的篩選。
  • 如果具備「資料庫存取」角色 (預設),就會擁有所有儲存格中資料值的讀取權,除非篩選進一步限制您的存取權。

使用 Essbase Web 介面建立篩選

Essbase Web 介面的資料庫自訂區段中,您可以建立安全性篩選條件,限制使用者或群組的立方體存取權。

您可以為立方體建立多個篩選。如果編輯篩選,對其定義所做的修改會由該篩選的所有使用者繼承。

  1. 瀏覽至篩選編輯器。
    1. 首頁上,開啟應用程式,然後開啟資料庫 (立方體)。
    2. 按一下篩選
  2. 按一下「新增」
  3. 篩選條件名稱文字方塊中輸入篩選條件名稱。
  4. 在「篩選編輯器」中,按一下新增
  5. 存取底下按一下並從下拉式功能表中選取一個存取層級。
    • 無:不能擷取或更新資料

    • 讀取:可以擷取但不能更新資料

    • 寫入:可以擷取及更新資料

    • MetaRead:可以擷取及更新中繼資料 (維度和成員名稱)

      MetaRead 存取層級會覆寫所有其他存取層級。現有的 MetaRead 篩選中會強制執行其他資料篩選。篩選成員組合 (使用 AND 關係) 不適用於 MetaRead。MetaRead 會個別篩選每個成員 (使用 OR 關係)。

  6. 選取成員規格底下的資料列,然後輸入成員名稱,然後按一下儲存

    您可以個別篩選成員,也可以篩選成員組合。指定維度或成員名稱、別名、成員組合、由函數定義的成員集,或前面有 (&) 符號的替代變數名稱。使用逗號分隔多個項目。

  7. 視需要為篩選建立額外的資料列。

    篩選列若重疊或有衝突,較詳細的立方體區域設定會蓋過較不詳細的立方體區域設定,較高的存取權會蓋過較低的存取權。例如,如果授予某個使用者 Actual 的「讀取」存取權和 Jan 的「寫入」存取權,該使用者就會擁有 Jan Actual 的「寫入」存取權。

  8. 按一下驗證以確定篩選條件有效。
  9. 按一下儲存

若要編輯篩選,請選取立方體,然後按一下左側面板中的「篩選」選項。接著,按一下篩選名稱並在篩選編輯器中進行變更以編輯篩選。若要編輯現有資料列,請對該資料列按兩下。

若要複製、重新命名或刪除篩選,請按一下篩選名稱右邊的「動作」功能表,然後選擇選項。

建立篩選條件之後,請將它們指定至使用者或群組。

請參閱使用安全性篩選控制資料庫儲存格存取

建立有效的動態篩選

您可以根據外部來源資料建立動態篩選,以減少所需的篩選定義數目。

不需要針對許多使用者管理一組硬編碼的資料存取篩選,您可以依據成員和使用者名稱,篩選從外部來源資料對立方體儲存格的存取。
您可以使用動態篩選定義語法來執行此動作,包括方法 @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))

建立動態篩選的工作流程

以下為建立動態篩選的一般工作流程。

此動態篩選工作流程假設您已經有一個立方體和佈建的使用者與群組。

  1. 指定一個資料來源,可以是檔案或關聯式來源。
  2. Essbase 中定義全域或應用程式層級的連線和資料來源。
  3. 在立方體層級建立篩選。瀏覽至立方體,然後選擇篩選
  4. 為每個篩選定義篩選列,視需要使用動態篩選語法來使用 $loginuser 變數、$logingroup 變數及 @datasourcelookup 方法。
  5. 將篩選指定給使用者或群組。
  6. 如果您將篩選指派給群組,請將群組指派給要篩選的應用程式。導覽至應用程式並選擇權限

動態篩選範例

下列動態篩選搭配儲藏庫中的 Efficient.UserFilters 立方體範例樣板使用。


含有 3 個將 MetaRead 存取權授予登入使用者列的動態篩選。

若要瞭解如何建立並套用此動態篩選,請從圖庫的「技術」區段下載工作簿範本 Efficient_Filters.xlsx,然後遵循工作簿中的 README 指示。您可以從 Essbase Web 介面的檔案區段中存取儲藏庫。