建立篩選
您可以為需要置於 Essbase 資料庫值的每個存取限制集建立篩選。您不需要為具有相同存取需求的使用者建立個別篩選。建立篩選之後,您可以將它指派給多個使用者或使用者群組。
篩選成員與篩選成員組合
對 Essbase 資料庫值的存取可以透過篩選整個成員或篩選成員組合來控制。分別篩選成員會影響這些成員的整個資料時段。篩選成員組合會影響成員交集的資料。
圖 30-1 篩選如何影響資料和 (或) 關係

附註:
對成員組合 (AND 關係) 進行篩選不會套用至 metaread。Metaread 會分別篩選每個成員 (或關係)。
個別篩選成員
若要篩選一或多個 Essbase 大綱成員的所有資料,請為每個成員定義其自身列上的存取權。篩選中個別資料列的篩選定義會以 OR 關係處理。
例如,若要封鎖 Sales 或 Jan 的存取權,請假設將下列篩選指派給使用者 KSands:
-
存取:無。成員規格:銷售。
-
存取:無。成員規格:Jan。
下次使用者 KSands 連線到 Sample Basic 時,其 Qtr1 利潤率的試算表檢視顯示她沒有成員 Sales 或 Jan (標示為 #NOACCESS) 的資料值存取權。「銷售」的所有資料都會被封鎖,無法檢視「銷售」成員內外 1 月的所有資料。「銷貨成本」(銷貨成本)、同階「銷售」及「毛利」下階資料可供使用,但一月的銷貨成本除外。
圖 30-2 銷售或 1 月篩選封鎖存取的結果

篩選成員組合
若要篩選 Essbase 成員組合的資料,請使用「篩選編輯器」中的列來定義每個成員組合的存取權。在篩選定義中,兩個以逗號分隔的成員集會被視為這兩個成員集的聯集 (AND 關係)。
例如,假設已將下列篩選指派給使用者 RChin:Access:None。成員規格:銷售,一月。
下次使用者 RChin 連線至 Sample Basic 時,其 Qtr1 利潤率的試算表檢視顯示她沒有成員 Sales 與 Jan (標示為 #NoAccess) 交集的資料值存取權。1 月的銷售資料已被封鎖,無法檢視。不過,有其他月份的銷售資料可用,而一月份的非銷售資料可用。
圖 30-3 篩選封鎖存取銷售的結果 (1 月)

使用替代變數篩選
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 無咖啡因產品的過濾阻隔存取結果

描述資料篩選
中繼資料篩選提供資料篩選和額外的安全層。透過中繼資料篩選, Essbase 管理員可以從使用者的檢視中移除大綱成員,僅提供對使用者感興趣的成員的存取權。
使用篩選對成員套用 MetaRead 權限時:
-
該成員之所有祖代的資料會從篩選使用者的檢視中隱藏。
-
該成員之所有同層級的資料和中繼資料 (成員名稱) 會從篩選使用者的檢視中隱藏。
動態篩選條件
您可以根據外部來源資料建立動態 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))