Skapa effektiva dynamiska filter

Du kan skapa dynamiska filter baserat på externa källdata för att minska det antal filterdefinitioner som behövs.

I stället för att hantera en uppsättning hårdkodade dataåtkomstfilter för många användare kan du filtrera åtkomsten till kubceller från externa källdata, baserat på medlems- och användarnamn.
Du gör detta med syntaxen för definition av dynamiska filter, till exempel metoden @datasourceLookup och variablerna $LoginUser och $LoginGroup. Dina externa källdata är en csv-fil eller en relationstabell. För relationskälldata kan du ladda .csv-filen till en relationstabell.

Syntax för dynamiska filter

Använd syntax för dynamiska filter för att skapa flexibla filter som du kan tilldela till flera användare och grupper.

Filterrader kan innehålla följande element som en del av sin definition, utöver medlemsuttryck.

$loginuser

Den här variabeln lagrar värdet för den inloggade användaren vid exekvering. Den kan användas i kombination med metoden @datasourcelookup.

$logingroup

Den här variabeln lagrar värdet för alla grupper som den för tillfället inloggade användaren tillhör. Den inkluderar både direkta och indirekta grupper. När den används i kombination med metoden @datasourcelookup slås varje grupp upp individuellt mot datakällan.

@datasourcelookup

Den här metoden hämtar poster från en datakälla.

Syntax

@datasourcelookup (dataSourceName, columnName, columnValue, returnColumnName)
Parameter Beskrivning
dataSourceName

Namnet på den externa datakälla som definieras i Essbase. För en datakälla på applikationsnivå ska applikationsnamnet och en punkt anges som prefix i namnet.

columnName

Namnet på den datakällkolumn som ska genomsökas efter ett visst columnValue.

columnValue

Det värde som du vill söka efter i columnName.

returnColumnName

Namnet på den datakällkolumn som en lista över värden ska returneras från.

Beskrivning

Ett @datasourcelookup-anrop motsvarar följande SQL-fråga:

select returnColumnName from dataSourceName where columnName=columnValue

@datasourcelookup slår upp den angivna datakällan och söker efter poster där columnName innehåller columnValue. Om du för columnValue anger $loginuser så söker den här metoden efter poster där columnName innehåller den inloggade användarens namn.

Essbase bildar filterdefinitionen genom att kombinera listelementen som en kommaavgränsad sträng. Om någon post innehåller specialtecken, blanksteg eller endast siffror omsluts den av citattecken.

Exempel

Placera parametrarna inom citattecken.

Följande anrop slår upp en global datakälla och returnerar en lista över lagernamn där Mary är lageransvarig.

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

Följande anrop slår upp en datakälla på applikationsnivå och returnerar en lista över lagernamn där den inloggade användaren är lageransvarig.

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

Följande anrop slår upp en datakälla på applikationsnivå och returnerar en lista över lagernamn där lageravdelningen matchar någon av grupperna som den inloggade användaren tillhör.

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

Om den inloggade användaren tillhör 3 grupper returnerar metoden @datasourcelookup ovan alla matchande kolumnvärden för varje grupp.

Arbetsflöde för att skapa dynamiska filter

Använd följande allmänna arbetsflöde när du vill skapa dynamiska filter.

Det här arbetsflödet för dynamiska filter förutsätter att du redan har en kub och behörighetstilldelade användare och grupper.

  1. Identifiera en källa till data, som kan vara en fil eller en relationskälla.
  2. Definiera anslutningen och datakällan i Essbase, antingen globalt eller på applikationsnivå.
  3. Skapa filter på kubnivå, med sektionen Filter i databasgranskningen.
  4. Definiera filterrader för varje filter, genom att använda syntaxen för dynamiska filter med variabeln $loginuser, variabeln $logingroup och metoden @datasourcelookup efter behov.
  5. Tilldela filtren till användare eller grupper.
  6. Om du har tilldelat filtret till en grupp ska du tilldela gruppen till den applikation som ska filtreras, med hjälp av sektionen Behörigheter i applikationsinspektionen.

Exempel på ett dynamiskt filter

Följande dynamiska filter fungerar med kuben benämnd Efficient.UserFilters, som finns i galleriet som en exempelmall.


Dynamiskt filter med tre rader som ger den inloggade användaren metaread-åtkomst.

Om du vill lära dig hur du skapar och använder det här dynamiska filtret ska du ladda ned arbetsboksmallen, Efficient_Filters.xlsx, från sektionen Tekniskt i galleriet och följa README-instruktionerna i arbetsboken. Galleriet är tillgängligt i sektionen Filer i webbgränssnittet för Essbase.