建立篩選

您可以為需要置於 Essbase 資料庫值的每個存取限制集建立篩選。您不需要為具有相同存取需求的使用者建立個別篩選。建立篩選之後,您可以將它指派給多個使用者或使用者群組。

附註:

如果您使用傳回一組成員 (例如子項或子代) 的計算函數,且其評估為空白集,則不會建立安全性篩選。系統會將錯誤寫入應用程式日誌,說明區域定義評估為空白集。

建立篩選之前,請先執行下列動作:

  • 連線至伺服器並選取與篩選關聯的資料庫。

  • 檢查限制中篩選的命名規則。

請參閱建立篩選條件

若要建立篩選,您也可以使用建立篩選 MaxL 敘述句。

篩選成員與篩選成員組合

Essbase 資料庫值的存取可以透過篩選整個成員或篩選成員組合來控制。分別篩選成員會影響這些成員的整個資料時段。篩選成員組合會影響成員交集的資料。

圖 30-1 篩選如何影響資料和 (或) 關係


此圖像顯示兩個立方體:左方立方體說明 OR 關係的影響;右方立方體說明 AND 關係的影響。

附註:

對成員組合 (AND 關係) 進行篩選不會套用至 metaread。Metaread 會分別篩選每個成員 (或關係)。

個別篩選成員

若要篩選一或多個 Essbase 大綱成員的所有資料,請為每個成員定義其自身列上的存取權。篩選中個別資料列的篩選定義會以 OR 關係處理。

例如,若要封鎖 Sales 或 Jan 的存取權,請假設將下列篩選指派給使用者 KSands:

  • 存取:無。成員規格:銷售。

  • 存取:無。成員規格:Jan。

下次使用者 KSands 連線到 Sample Basic 時,其 Qtr1 利潤率的試算表檢視顯示她沒有成員 Sales 或 Jan (標示為 #NOACCESS) 的資料值存取權。「銷售」的所有資料都會被封鎖,無法檢視「銷售」成員內外 1 月的所有資料。「銷貨成本」(銷貨成本)、同階「銷售」及「毛利」下階資料可供使用,但一月的銷貨成本除外。

圖 30-2 銷售或 1 月篩選封鎖存取的結果


此影像顯示以 #NOACCESS 標示以篩選封鎖之儲存格的試算表。

篩選成員組合

若要篩選 Essbase 成員組合的資料,請使用「篩選編輯器」中的列來定義每個成員組合的存取權。在篩選定義中,兩個以逗號分隔的成員集會被視為這兩個成員集的聯集 (AND 關係)。

例如,假設已將下列篩選指派給使用者 RChin:Access:None。成員規格:銷售,一月。

下次使用者 RChin 連線至 Sample Basic 時,其 Qtr1 利潤率的試算表檢視顯示她沒有成員 Sales 與 Jan (標示為 #NoAccess) 交集的資料值存取權。1 月的銷售資料已被封鎖,無法檢視。不過,有其他月份的銷售資料可用,而一月份的非銷售資料可用。

圖 30-3 篩選封鎖存取銷售的結果 (1 月)


此圖像顯示一個試算表,其中針對使用者封鎖 Jan 的 Sales 資料。

使用替代變數篩選

Essbase 替代變數可讓您定期管理變更的資訊。每個變數都有指派的名稱和值。「資料庫管理程式」可以隨時變更這個值。在篩選中指定替代變數時,會套用資料時的值。

例如,如果您希望使用者群組僅查看目前月份的資料,您可以設定名為 CurMonth 的替代變數,並定義篩選 (MonthlyAccess),在您指定存取的位置使用 &CurMonth 作為成員名稱。在規格開頭使用 & 符號,將它識別為替代變數,而不是 Essbase 的成員名稱。將 MonthlyAccess 篩選指派給適當的使用者。

每個月,您只需要將 CurMonth 替代變數的值變更為目前月份的成員名稱,例如 Jan、Feb 等等。新值將套用至所有指派的使用者。

請參閱導入變更資訊的變數

以屬性功能進行篩選

您可以使用篩選來限制對共用特定屬性之基礎成員的 Essbase 資料的存取。若要篩選屬性維度中定義特定屬性之成員的資料,請將屬性成員與 @ATTRIBUTE 函數或 @WITHATTR 函數結合使用。

附註:

@ @ATTRIBUTE@WITHATTR 為成員集函數。大多數成員集函式可用於篩選定義。

例如,假設使用者 PJones 被指派此篩選:存取:無。會員規格:@ATTRIBUTE ("Caffeinated_False")。

下次使用者 PJones 連線至 Sample Basic 時,其在 California 的第一季 cola 銷售試算表檢視顯示他無法存取任何與 Caffeinated_False 相關之基礎維度成員的資料值。Caffeine Free Cola 的銷售資料已被封鎖。請注意,Caffeine Free Cola 是基礎成員,Caffeinated_False 是 Caffeinated 屬性維度的相關成員 (未顯示在試算表檢視中)。

圖 30-4 無咖啡因產品的過濾阻隔存取結果


此圖像顯示對使用者封鎖咖啡因 Free Cola 銷售資料的試算表。

描述資料篩選

中繼資料篩選提供資料篩選和額外的安全層。透過中繼資料篩選, Essbase 管理員可以從使用者的檢視中移除大綱成員,僅提供對使用者感興趣的成員的存取權。

使用篩選對成員套用 MetaRead 權限時:

  1. 該成員之所有祖代的資料會從篩選使用者的檢視中隱藏。

  2. 該成員之所有同層級的資料和中繼資料 (成員名稱) 會從篩選使用者的檢視中隱藏。

動態篩選條件

您可以根據外部來源資料建立動態 Essbase 安全性篩選條件,以減少所需的篩選定義數目。您可以使用動態篩選定義語法來執行此操作,包括方法 @datasourceLookup 和變數 $LoginUser$LoginGroup

附註:

動態篩選支援 SQL 函數,例如 LOWER、UPPER 和 CAST,包括巢狀表示式。您可以將這些函數直接與成員集函式搭配使用,以建立更具彈性且更精確的存取篩選定義。

動態篩選語法

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

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

$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 介面的檔案區段中存取儲藏庫。