Zugriff auf Daten filtern
Filter steuern den Sicherheitszugriff auf Datenwerte im Essbase-Cube. Filter stellen die Form des Sicherheitszugriffs mit der größten Granularität dar. Filter geben eine Reihe von Einschränkungen in bestimmten Zellen des Cubes oder für einen Zellbereich an. Administratoren oder Manager weisen den Filter zu, um den Zugriff für Benutzer oder Gruppen zu regulieren.
Ihre eigene Sicherheitsrolle bestimmt, ob Sie Filter anlegen, zuordnen, bearbeiten, kopieren, umbenennen oder löschen können:
- Wenn Sie die Rolle "Anwendungsmanager" haben, können Sie alle Filter für alle Benutzer oder Gruppen verwalten. Filter betreffen Sie nicht.
- Wenn Sie die Rolle "Datenbankaktualisierung" haben, können Sie Filter für die von Ihnen erstellten Anwendungen verwalten.
- Wenn Sie die Rolle "Datenbankmanager" haben, können Sie Filter innerhalb Ihrer Anwendungen oder Cubes verwalten.
- Wenn Sie die Rolle "Datenbankzugriff" (Standard) haben, haben Sie Lesezugriff auf Datenwerte in allen Zellen, es sei denn, Ihr Zugriff wird durch Filter weiter eingeschränkt.
Filter mit der Essbase-Weboberfläche erstellen
Im Abschnitt "Datenbankanpassung" der Essbase-Weboberfläche können Sie einen Sicherheitsfilter erstellen, der den Cube-Zugriff auf Benutzer oder Gruppen einschränkt.
Sie können mehrere Filter für einen Cube erstellen. Wenn Sie einen Filter bearbeiten, werden Änderungen an seiner Definition von allen Benutzern des Filters geerbt.
Um einen Filter zu bearbeiten, wählen Sie den Cube aus, und klicken Sie im linken Fensterbereich auf die Option "Filter". Bearbeiten Sie den Filter dann, indem Sie auf den Filternamen klicken und die gewünschten Änderungen im Filtereditor vornehmen. Um eine vorhandene Zeile zu bearbeiten, doppelklicken Sie auf diese Zeile.
Sie können einen Filter kopieren, umbenennen oder löschen, indem Sie rechts neben dem Filternamen auf das Menü "Aktionen " klicken und eine Option auswählen.
Nachdem Sie Filter erstellt hatten, können Sie sie Benutzern oder Gruppen zuweisen.
Siehe Zugriff auf Datenbankzellen mit Sicherheitsfiltern steuern.
Effiziente dynamische Filter erstellen
Sie können dynamische Filter basierend auf externen Quelldaten erstellen, um die Anzahl der erforderlichen Filterdefinitionen zu reduzieren.
@datasourceLookup und der Variablen $LoginUser und $LoginGroup. Die externen Quelldaten liegen als CSV-Datei oder relationale Tabelle vor. Bei relationalen Quelldaten können Sie die CSV-Datei in eine relationale Tabelle laden.
Syntax für dynamische Filter
Verwenden Sie Syntax für dynamische Filter, um flexible Filter zu erstellen, die Sie mehreren Benutzern und Gruppen zuweisen können.
Filterzeilen können folgende Elemente als Teil der Definition zusammen mit Elementausdrücken enthalten.
$loginuser
Diese Variable speichert den Wert des derzeit angemeldeten Benutzers zur Laufzeit. Sie kann zusammen mit der Methode @datasourcelookup verwendet werden.
$logingroup
Diese Variable speichert den Wert aller Gruppen, zu denen der aktuell angemeldete Benutzer gehört. Dazu gehören sowohl direkte als auch indirekte Gruppen. Bei Kombination mit der Methode @datasourcelookup wird jede Gruppe einzeln in der Datenquelle gesucht.
@datasourcelookup
Diese Methode ruft Datensätze aus einer Datenquelle ab.
Syntax
@datasourcelookup (dataSourceName, columnName, columnValue, returnColumnName)| Parameter | Beschreibung |
|---|---|
| dataSourceName |
Der Name der externen Datenquelle, die in Essbase definiert ist. Stellen Sie bei einer Datenquelle auf Anwendungsebene den Anwendungsnamen und einen Punkt als Präfix voran. |
| columnName |
Der Name der Datenquellenspalte, in der eine angegebene columnValue gesucht werden muss. |
| columnValue |
Der Wert, nach dem in columnName gesucht werden soll. |
| returnColumnName |
Der Name der Datenquellenspalte, aus der eine Liste mit Werten zurückgegeben werden soll. |
Hinweis:
Datenquellenspaltennamen dürfen keine reservierten SQL-Wörter wie USER, GROUP oder ROLE verwenden. Die Verwendung reservierter Wörter kann zu SQL-Parsingfehlern oder unerwartetem Filterverhalten führen.Beschreibung
Ein @datasourcelookup-Aufruf entspricht der folgenden SQL-Abfrage:
select returnColumnName from dataSourceName where columnName=columnValue@datasourcelookup sucht die angegebene Datenquelle und sucht Datensätze, bei denen columnName columnValue enthält. Wenn Sie columnValue als $loginuser angeben, werden Datensätze gesucht, bei denen columnName den Namen des derzeit angemeldeten Benutzers enthält.
Essbase bildet die Filterdefinitionszeile, indem die Listenelemente in einer durch Komma getrennten Zeichenfolge kombiniert werden. Wenn ein Datensatz Sonderzeichen, Leerzeichen oder nur Zahlen enthält, wird er in Anführungszeichen gesetzt.
Hinweis:
Mit dem Parameter @options kann das Verhalten von Lookup-Fehlern gesteuert werden. Wenn StrictLookup=true ist, werden Lookup-Fehler als schwerwiegende Fehler behandelt, und es werden keine Filterergebnisse zurückgegeben.Beispiele
Schließen Sie die Parameter in Anführungszeichen ein.
Der folgende Aufruf ruft eine globale Datenquelle ab und gibt eine Liste mit Geschäftsnamen zurück, bei denen Mary Store-Manager ist.
@datasourceLookup("StoreManagersDS","STOREMANAGER","Mary","STORE")Der folgende Aufruf ruft eine Datenquelle auf Anwendungsebene ab und gibt eine Liste mit Geschäftsnamen zurück, bei denen der derzeit angemeldete Benutzer Store-Manager ist.
@datasourceLookup("Sample.StoreManagersDS","STOREMANAGER","$loginuser","STORE")Der folgende Aufruf ruft eine Datenquelle auf Anwendungsebene ab und gibt eine Liste mit Geschäftsnamen zurück, bei denen die Geschäftsabteilung einer der Gruppen entspricht, zu denen der angemeldete Benutzer gehört.
@datasourceLookup("Sample.StoreManagersDS","STORE_DEPARTMENT","$logingroup","STORE")Wenn der angemeldete Benutzer zu 3 Gruppen gehört, gibt die oben genannte @datasourcelookup-Methode alle übereinstimmenden Spaltenwerte für jede Gruppe zurück.
Im folgenden Beispiel werden SQL-Funktionen in einem dynamischen Filterausdruck verwendet.
@datasourceLookup("Sample.StoreManagersDS",LOWER(CAST("STOREMANAGER" AS VARCHAR(30))),LOWER("$loginuser"),"STORE")Im folgenden Beispiel wird die Groß-/Kleinschreibung mithilfe expliziter Groß-/Kleinschreibungsfunktionen ausgewertet.
@datasourceLookup("Sample.StoreManagersDS",UPPER("STOREMANAGER"),UPPER("$loginuser"),"STORE")Im folgenden Beispiel werden Filialen zurückgegeben, die zur Vertriebs- oder Marketingabteilung gehören.
@datasourceLookup("Sample.StoreManagersDS","STORE_DEPARTMENT","Sales","Marketing","STORE")Im folgenden Beispiel wird eine Elementset-Funktion mit @datasourceLookup verwendet.
@DESCENDANTS(@datasourceLookup("Sample.StoreManagersDS","STOREMANAGER","$loginuser","STORE"))Im folgenden Beispiel werden verschachtelte Elementgruppenfunktionen mit einem Datenquellen-Lookup verwendet.
@CHILDREN(@LSIBLING(@datasourceLookup("Sample.StoreManagersDS","STOREMANAGER","$loginuser","STORE")))Im folgenden Beispiel wird ein striktes Lookup-Verhalten verwendet. Wenn die Suche fehlschlägt, werden keine Filterergebnisse zurückgegeben.
@datasourceLookup("Sample.StoreManagersDS","STOREMANAGER","$loginuser","STORE",@options(strictLookup=true))Workflow zum Erstellen von dynamischen Filtern
Mit dem folgenden allgemeinen Workflow können Sie dynamische Filter erstellen.
Beim diesem Workflow für dynamische Filter wird vorausgesetzt, dass Sie bereits über einen Cube verfügen und Benutzern und Gruppen Berechtigungen zugewiesen haben.
- Identifizieren Sie eine Datenquelle (ob Datei oder relationale Quelle).
- Definieren Sie die Verbindung und die Datenquelle in Essbase (entweder global oder auf Anwendungsebene).
- Erstellen Sie Filter auf Cube-Ebene. Navigieren Sie zum Cube, und wählen Sie Filter aus.
- Definieren Sie Filterzeilen für jeden Filter mit der Syntax des dynamischen Filters so, dass die Variable (
$loginuser), die Variable ($logingroup) und die Methode (@datasourcelookup) nach Bedarf verwendet werden können. - Weisen Sie die Filter Benutzern oder Gruppen zu.
- Wenn Sie den Filter einer Gruppe zugewiesen haben, weisen Sie die Gruppe der zu filternde Anwendung zu. Navigieren Sie zur Anwendung, und wählen Sie Berechtigungen aus.
Beispiel für einen dynamischen Filter
Der folgende dynamische Filter funktioniert mit dem Cube "Efficient.UserFilters", der in der Galerie als Beispielvorlage verfügbar ist.

Um zu erfahren, wie du diesen dynamischen Filter erstellst und anwendest, lade die Arbeitsmappenvorlage Efficient_Filters.xlsx vom Abschnitt "Technisch" der Galerie hoch, und befolgen Sie die README-Anleitungen in der Arbeitsmappe. Sie finden die Galerie in der Essbase-Weboberfläche im Abschnitt Dateien.