Creare filtri
È possibile creare un filtro per ogni set di restrizioni di accesso da inserire nei valori del database Essbase. Non è necessario creare filtri separati per gli utenti con le stesse esigenze di accesso. Dopo aver creato un filtro, è possibile assegnarlo a più utenti o gruppi di utenti.
Nota
Se si utilizza una funzione di calcolo che restituisce un set di membri, ad esempio figli o discendenti, e restituisce un set vuoto, il filtro di sicurezza non viene creato. Nel log dell'applicazione viene scritto un errore che indica che la definizione dell'area ha restituito un set vuoto.
Prima di creare un filtro, eseguire le azioni riportate di seguito.
-
Connettersi al server e selezionare il database associato al filtro.
-
Controllare la presenza di filtri nelle regole di denominazione in Limiti.
Vedere Crea filtri.
Per creare un filtro, è inoltre possibile utilizzare l'istruzione Crea filtro MaxL.
Filtro dei membri e filtro delle combinazioni di membri
L'accesso ai valori del database Essbase può essere controllato filtrando interi membri o filtrando combinazioni di membri. Il filtro dei membri interessa separatamente intere porzioni di dati per tali membri. L'applicazione di filtri alle combinazioni di membri influisce sui dati nelle intersezioni dei membri.
Figura 30-1 In che modo i filtri influenzano i dati e/o le relazioni

Nota
L'applicazione di filtri alle combinazioni di membri (relazione E) non si applica al metaread. Metaread filtra ogni membro separatamente (relazione OR).
Filtra membri separatamente
Per filtrare tutti i dati per uno o più membri del profilo Essbase, definire l'accesso per ogni membro nella propria riga. Le definizioni dei filtri su righe separate di un filtro vengono trattate con una relazione OR.
Ad esempio, per bloccare l'accesso a Sales o Jan, si supponga che all'utente KSands sia assegnato il filtro seguente:
-
Accesso: nessuno. Specifica del membro: Vendite.
-
Accesso: nessuno. Specifica del membro: Jan.
La prossima volta che l'utente KSands si connette a Sample Basic, la vista del margine di profitto per Qtr1 mostra che non ha accesso ai valori dei dati per il membro Sales o il membro Jan, contrassegnati con #NOACCESS. Tutti i dati relativi alle vendite sono bloccati, così come tutti i dati relativi a gennaio, all'interno e all'esterno del membro Sales. Sono disponibili i dati relativi al costo merce venduta (Cost of Goods Sold), un fratello di Sales e un figlio di Margin, ad eccezione del costo merce venduta per gennaio.
Figura 30-2 Risultati del blocco dei filtri Accesso alle vendite o Gen

Filtra combinazioni membri
Per filtrare i dati per le combinazioni di membri Essbase, definire l'accesso per ogni combinazione di membri utilizzando una riga in Editor filtri. Nelle definizioni dei filtri, due set di membri separati da una virgola vengono considerati come unione di tali due set di membri (una relazione AND).
Si supponga, ad esempio, che all'utente RChin sia assegnato il filtro seguente: Accesso: Nessuno. Specifica del membro: Sales, Jan.
La prossima volta che l'utente RChin si connette a Sample Basic, la vista del margine di profitto per Qtr1 mostra che non ha accesso al valore dei dati all'intersezione tra i membri Sales e Jan, contrassegnata con #NoAccess. I dati sulle vendite per gennaio non sono visibili. Tuttavia, sono disponibili dati relativi alle vendite per altri mesi e dati non relativi alle vendite per gennaio.
Figura 30-3 Risultati del blocco dei filtri Accesso alle vendite, gennaio

Filtro mediante variabili di sostituzione
Le variabili di sostituzione di Essbase consentono di gestire le informazioni che vengono modificate regolarmente. Ogni variabile ha un nome e un valore assegnati. Un Database Manager può modificare il valore in qualsiasi momento. Quando una variabile di sostituzione viene specificata in un filtro, viene applicato il valore al momento dell'accesso ai dati.
Ad esempio, se si desidera che un gruppo di utenti visualizzi i dati solo per il mese corrente, è possibile impostare una variabile di sostituzione denominata CurMonth e definire un filtro (MonthlyAccess) in cui specificare l'accesso, utilizzando &CurMonth per il nome del membro. L'utilizzo di una e commerciale (&) all'inizio di una specifica la identifica come variabile di sostituzione anziché come nome membro in Essbase. Assegnare il filtro MonthlyAccess agli utenti appropriati.
Ogni mese, è necessario modificare solo il valore della variabile di sostituzione CurMonth con il nome del membro per il mese corrente, ad esempio Gen, Feb e così via. Il nuovo valore verrà applicato a tutti gli utenti assegnati.
Vedere Implementare variabili per la modifica delle informazioni.
Filtra con funzioni attributo
È possibile utilizzare i filtri per limitare l'accesso ai dati di Essbase per i membri base che condividono un determinato attributo. Per filtrare i dati per i membri con attributi specifici definiti in una dimensione attributo, utilizzare il membro attributo in combinazione con la funzione @ATTRIBUTE o la funzione @WITHATTR.
Nota
@@ATTRIBUTE e @WITHATTR sono funzioni set di membri. La maggior parte delle funzioni del set di membri può essere utilizzata nelle definizioni dei filtri.
Ad esempio, si supponga che all'utente PJones sia assegnato questo filtro: Accesso: Nessuno. Specifica del membro: @ATTRIBUTE("Caffeinated_False").
La prossima volta che l'utente PJones si connette a Sample Basic, la vista del foglio di calcolo delle vendite di cola del primo trimestre in California mostra che non dispone dell'accesso ai valori dei dati per i membri della dimensione base associati a Caffeinated_False. I dati di vendita di Caffeine Free Cola sono bloccati. Si noti che Caffeine Free Cola è un membro base e Caffeinated_False è un membro associato della dimensione attributo Caffeinated (non visualizzato nella vista foglio di calcolo).
Figura 30-4 Risultati del blocco dei filtri Accesso ai prodotti senza caffeina

Filtri metadati
Il filtraggio dei metadati fornisce un filtro dei dati e un ulteriore livello di sicurezza. Con il filtro dei metadati, un amministratore di Essbase può rimuovere i membri del profilo dalla vista di un utente, fornendo l'accesso solo ai membri che sono di interesse per l'utente.
Quando un filtro viene utilizzato per applicare l'autorizzazione MetaRead a un membro:
-
I dati per tutti i predecessori di tale membro sono nascosti dalla vista dell'utente del filtro.
-
Dati e metadati (nomi membri) per tutti i pari livello di quel membro sono nascosti dalla vista dell'utente del filtro.
Filtri dinamici
È possibile creare filtri dinamici basati su dati di origine esterna per Essbase per ridurre il numero delle definizioni di filtro necessarie. A tale proposito si utilizza il metodo @datasourceLookup e le variabili $LoginUser e $LoginGroup con la sintassi della definizione dinamica dei filtri.
Nota
I filtri dinamici supportano funzioni SQL quali LOWER, UPPER e CAST, incluse le espressioni nidificate. È possibile utilizzare queste funzioni direttamente con le funzioni del set di membri per creare definizioni di filtro di accesso più flessibili e precise.
Sintassi dei filtri dinamici
Utilizzare la sintassi dei filtri dinamici per creare filtri flessibili che potranno essere assegnati a più utenti e gruppi.
Le righe dei filtri possono contenere gli elementi riportati di seguito nella definizione, oltre alle espressioni membro.
$loginuser
Questa variabile memorizza il valore dell'utente collegato corrente in runtime. Può essere utilizzata insieme al metodo @datasourcelookup.
$logingroup
Questa variabile memorizza il valore di tutti i gruppi al quale appartiene l'utente collegato corrente. Include sia i gruppi diretti che i gruppi indiretti. Quando viene utilizzato insieme al metodo @datasourcelookup, ogni gruppo viene esaminato individualmente rispetto all'origine dati.
@datasourcelookup
Questo metodo consente di recuperare i record da un'origine dati.
Sintassi
@datasourcelookup (dataSourceName, columnName, columnValue, returnColumnName)| Parametro | Descrizione |
|---|---|
| dataSourceName |
Nome dell'origine dati esterna definita in Essbase. Per un'origine dati a livello di applicazione, anteporre il nome dell'applicazione e un punto come prefisso al nome. |
| columnName |
Nome della colonna dall'origine dati da cercare per la variabile columnValue specificata. |
| columnValue |
Valore da cercare in columnName. |
| returnColumnName |
Nome della colonna dell'origine dati da cui restituire una lista di valori. |
Nota
I nomi delle colonne dell'origine dati non devono utilizzare parole riservate SQL come USER, GROUP o ROLE. L'uso di parole riservate può causare errori di analisi SQL o un funzionamento imprevisto del filtro.Descrizione
Una chiamata @datasourcelookup è equivalente alla query SQL seguente:
select returnColumnName from dataSourceName where columnName=columnValue@datasourcelookup esamina l'origine dati specificata e cerca i record in cui columnName contiene columnValue. Se si specifica columnValue come $loginuser, questo metodo cercherà i record in cui columnName contiene il nome dell'utente collegato corrente.
Essbase forma la riga di definizione del filtro combinando gli elementi della lista come stringa separata da virgole. Se un record qualsiasi contiene caratteri speciali, spazi o solo numeri, questi elementi vengono racchiusi tra virgolette.
Nota
Il parametro @options può essere utilizzato per controllare il funzionamento degli errori di ricerca. Quando stringLookup=true, gli errori di ricerca vengono considerati come errori irreversibili e non vengono restituiti risultati di filtro.Esempi
Racchiudere i parametri tra virgolette.
La chiamata seguente esamina un'origine dati globale e restituisce la lista dei nomi di negozio (store) di cui Mary è la responsabile.
@datasourceLookup("StoreManagersDS","STOREMANAGER","Mary","STORE")La chiamata seguente esamina un'origine dati a livello di applicazione e restituisce la lista dei nomi di negozio (store) di cui l'utente collegato corrente è il responsabile.
@datasourceLookup("Sample.StoreManagersDS","STOREMANAGER","$loginuser","STORE")La chiamata seguente esamina un'origine dati a livello di applicazione e restituisce la lista dei nomi di negozio (store) in cui il reparto corrisponde a uno qualsiasi dei gruppi ai quali appartiene l'utente collegato.
@datasourceLookup("Sample.StoreManagersDS","STORE_DEPARTMENT","$logingroup","STORE")Se l'utente collegato appartiene a 3 gruppi, il metodo @datasourcelookup indicato in Alto restituirà tutti i valori colonna corrispondenti per ciascun gruppo.
Nell'esempio seguente vengono utilizzate le funzioni SQL all'interno di un'espressione di filtro dinamico.
@datasourceLookup("Sample.StoreManagersDS",LOWER(CAST("STOREMANAGER" AS VARCHAR(30))),LOWER("$loginuser"),"STORE")Nell'esempio seguente viene eseguita una valutazione con distinzione tra maiuscole e minuscole utilizzando funzioni di involucro esplicite.
@datasourceLookup("Sample.StoreManagersDS",UPPER("STOREMANAGER"),UPPER("$loginuser"),"STORE")Nell'esempio seguente vengono restituiti i negozi appartenenti al reparto Vendite o Marketing.
@datasourceLookup("Sample.StoreManagersDS","STORE_DEPARTMENT","Sales","Marketing","STORE")Nell'esempio seguente viene utilizzata una funzione di set di membri con @datasourceLookup.
@DESCENDANTS(@datasourceLookup("Sample.StoreManagersDS","STOREMANAGER","$loginuser","STORE"))Nell'esempio seguente vengono utilizzate le funzioni del set di membri nidificati con una ricerca dell'origine dati.
@CHILDREN(@LSIBLING(@datasourceLookup("Sample.StoreManagersDS","STOREMANAGER","$loginuser","STORE")))Nell'esempio seguente viene utilizzato un comportamento di ricerca rigoroso. Se la ricerca non riesce, non viene restituito alcun risultato del filtro.
@datasourceLookup("Sample.StoreManagersDS","STOREMANAGER","$loginuser","STORE",@options(strictLookup=true))Workflow per la creazione di filtri dinamici
Per creare i filtri dinamici utilizzare il workflow generale riportato di seguito.
Per questo workflow di filtri dinamici si suppone che l'utente disponga già di un cubo e abbia eseguito il provisioning di utenti e gruppi.
- Identificare un'origine dati come file o come origine relazionale.
- Definire la connessione e l'origine dati in Essbase, globalmente oppure a livello di applicazione.
- Creare filtri a livello di cubo. Andare al cubo e scegliere Filtri.
- Definire le righe per ogni filtro con la sintassi del filtro dinamico per utilizzare la variabile
$loginusere la variabile$logingroupin base alle esigenze e il metodo@datasourcelookup. - Assegnare i filtri agli utenti o ai gruppi.
- Se il filtro è stato assegnato a un gruppo, assegnare il gruppo all'applicazione da filtrare. Andare all'applicazione e scegliere Autorizzazioni.
Esempio di filtro dinamico
Il filtro dinamico seguente funziona con il cubo Efficient.UserFilters, disponibile nella galleria come modello campione.

Per ulteriori informazioni sulle modalità di creazione e applicazione del filtro dinamico, scaricare il modello di cartella di lavoro, Efficient_Filters.xlsx, dalla sezione Tecnico della galleria e attenersi alle istruzioni README della cartella di lavoro. La galleria è disponibile nella sezione File dell'interfaccia Web di Essbase.