關於篩選

篩選主要控制立方體中資料值的安全性存取。篩選是可用的最細微安全性形式。

當您建立篩選時,可以在特定立方體儲存格或儲存格範圍上指定一組限制。接著可以將篩選指定給使用者或群組。

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

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

建立篩選

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

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

  1. 應用程式首頁中,展開應用程式。
  2. 從立方體名稱右邊的「動作」功能表中啟動偵測器。
  3. 選取篩選頁籤。
  4. 按一下「新增」新增圖示的圖像。
  5. 篩選條件名稱文字方塊中輸入篩選條件名稱。
  6. 在「篩選條件編輯器」中,按一下「新增」新增圖示的圖像。
  7. 存取底下按一下並從下拉式功能表中選取一個存取層級。
    • 無:不能擷取或更新資料

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

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

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

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

  8. 選取成員設定底下的資料列,然後輸入成員名稱。

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

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

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

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

若要在偵測器的「篩選條件」頁籤中編輯篩選條件,請按一下篩選條件名稱,然後在「篩選條件編輯器」中做變更。

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

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

建立有效的動態篩選

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

不需要針對許多使用者管理一組硬式編碼的資料存取篩選,您可以依據成員和使用者名稱,篩選從外部來源資料對立方體儲存格的存取。
您可以使用動態篩選定義語法來執行此操作,這包括 @datasourceLookup 方法和 $LoginUser$LoginGroup 變數。您的外部來源資料會是 csv 檔案或關聯式表格。就關聯式來源資料而言,您可以將 .csv 載入關聯式表格。

動態篩選語法

使用動態篩選語法建立彈性篩選,供您指定給多個使用者和群組。

篩選資料列定義除了成員表示式外也可包含以下元素。

$loginuser

此變數可在程式實際執行時儲存目前登入的使用者值。它可以與 @datasourcelookup 方法搭配使用。

$logingroup

此變數儲存目前登入使用者所屬的所有群組值。其中包括直接和間接群組。與 @datasourcelookup 方法搭配使用時,可針對資料來源個別查尋每一個群組。

@datasourcelookup

此方法會從資料來源擷取記錄。

語法

@datasourcelookup (dataSourceName, columnName, columnValue, returnColumnName)
參數 描述
dataSourceName

Essbase 中定義的外部資料來源名稱。若為應用程式層級資料來源,會在名稱的前面加上應用程式名稱和點。

columnName

用於搜尋所指定 columnValue 的資料來源資料欄名稱。

columnValue

要在 columnName 中搜尋的值。

returnColumnName

供傳回值清單的資料來源資料欄名稱。

描述

@datasourcelookup 呼叫等同於下列 SQL 查詢:

select returnColumnName from dataSourceName where columnName=columnValue

@datasourcelookup 會查尋指定的資料來源,並且搜尋 columnName 包含 columnValue 的記錄。若指定的 columnValue$loginuser,此方法將會搜尋 columnName 包含目前登入使用者名稱的記錄。

Essbase 會將清單元素合併成以逗號區隔的字串,以構成篩選定義資料列。若有任何記錄包含特殊字元、空格或只有數字,系統會將它們以引號括住。

範例

將參數括在引號內。

下列呼叫會查尋全域資料來源,並且傳回店經理名字為 Mary 的商店名稱清單。

@datasourceLookup("StoreManagersDS","STOREMANAGER","Mary","STORE")

下列呼叫會查尋應用程式層級資料來源,並且傳回目前登入使用者為店經理的商店名稱清單。

@datasourceLookup("Sample.StoreManagersDS","STOREMANAGER","$loginuser","STORE")

下列呼叫會查尋應用程式層級資料來源,並且傳回商店部門符合目前登入使用者所屬任一群組的商店名稱清單。

@datasourceLookup("Sample.StoreManagersDS","STORE_DEPARTMENT","$logingroup","STORE")

登入的使用者若屬於 3 個群組,上述的 @datasourcelookup 方法則會針對每個群組傳回所有相符的資料欄值。

建立動態篩選的工作流程

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

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

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

動態篩選範例

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


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

若要瞭解如何建立此動態篩選並加以套用,請從儲藏庫的「技術」區段下載工作簿樣板 (Efficient_Filters.xlsx),然後依照工作簿中的 README 指示進行。您可以從 Essbase Web 介面的檔案區段中存取儲藏庫。