Pull to refresh

Как заставить Oracle BI 12c сделать столько сессионных переменных, сколько надо программисту?

Reading time3 min
Views2.1K
На сервере Oracle BI 12c имеется интересная функциональность по автоматическому созданию набора сессионных переменных без задания их имен на уровне сессии пользователя и без явного описания их количества на уровне репозитария при авторизации сессии BI заданного пользователя.

Создадим в схеме, в которую входим с физического уровня, такую таблицу:

USERID     NAME       VALUE
---------- ---------- ---------------
weblogic   level      11
weblogic   status     FULL-TIME
Tom Kyte   status     PART-TIME
Tom Kyte   level      9
Tom Kyte   flow       cache

Более подробно распишем запрос, который может динамически создавать переменные уровня сессии. Используем системную сессионную переменную USER.


SELECT NAME, VALUE
FROM RW_SESSION_VARS
WHERE USERID='VALUEOF(NQ_SESSION.USER)'


Заметим, что новых переменных мы не создаем, но ставим галочку Row-wise initialization (не забываем сбросить галочку Use caching).



Создаем дашбоард с единственным текстовым полем для просмотра созданных переменных.


[b]@{biServer.variables['NQ_SESSION.USER']}[br/]
@{biServer.variables['NQ_SESSION.level']}[br/]
@{biServer.variables['NQ_SESSION.status']}[br/]
@{biServer.variables['NQ_SESSION.flow']}[/b]


Замечаем, что у пользователя weblogic создались и инициализировались две переменные.


[b]@{biServer.variables['NQ_SESSION.USER']}=>weblogic[br/]
@{biServer.variables['NQ_SESSION.level']}=>11[br/]
@{biServer.variables['NQ_SESSION.status']}=>FULL-TIME[br/]
@{biServer.variables['NQ_SESSION.flow']}=>не создалась[/b]


Замечаем, что у пользователя Tom Kyte создались и инициализировались три переменные.


[b]@{biServer.variables['NQ_SESSION.USER']}=>Tom Kyte[br/]
@{biServer.variables['NQ_SESSION.level']}=>9[br/]
@{biServer.variables['NQ_SESSION.status']}=>PART-TIME[br/]
@{biServer.variables['NQ_SESSION.flow']}=>cache[/b]


Вопрос о том, как сделать столько сессионных переменных, сколько необходимо программисту, мы получили от слушателя курса по построению репозитария Oracle BI 12c нашего Учебного центра.

Ответ на вопрос может быть полезен при создании набора сессионных переменных для обеспечения работы объектов заданного авторизованного пользователя.

P.S. Так как до полного туториала не хватает одной таблички из документации,
помещаем ее под кат.
Как правильно выбрать тип переменной репозитария и к ней обратиться.

Type
of Variable


Syntax


Example


Session


@{biServer.variables['NQ_SESSION.variablename']}


@{biServer.variables['NQ_SESSION.USER']}


where variablename is
the name of the session variable, for example DISPLAYNAME.


For
a list of system session variables that you can use, see "About
System Session Variables" inMetadata Repository Builder's
Guide for Oracle Business Intelligence Enterprise Edition
.


Repository


@{biServer.variables.variablename}


@{biServer.variables.prime_begin}


or


or


@{biServer.variables['variablename']}


@{biServer.variables['prime_begin']}


where variablename is
the name of the repository variable, for example, prime_begin.



Presentation
or request


@{variables.variablename}[format]{defaultvalue}


@{variables.MyFavoriteRegion}{EASTERN
REGION}


or


or


@{scope.variables['variablename']}


@{MyFavoriteRegion}


where:


or


variablename is
the name of the presentation or request variable, for example,
MyFavoriteRegion.


@{dashboard.variables['MyFavoriteRegion']}


(optional) format is
a format mask dependent on the data type of the variable, for
example #,##0, MM/DD/YY hh:mm:ss. (Note that the format is not
applied to the default value.)


or


(optional) defaultvalue is
a constant or variable reference indicating a value to be used if
the variable referenced by 
variablename is
not populated.


(@{myNumVar}[#,##0]{1000})


scope identifies
the qualifiers for the variable. You must specify the scope when a
variable is used at multiple levels (analyses, dashboard pages,
and dashboards) and you want to access a specific value. (If you
do not specify the scope, then the order of precedence is
analyses, dashboard pages, and dashboards.)


or


Note: When
using a dashboard prompt with a presentation variable that can
have multiple values, the syntax differs depending on the column
type. Multiple values are formatted into comma-separated values
and therefore, any format clause is applied to each value before
being joined by commas.


(@{variables.MyOwnTimestamp}[YY-MM-DD
hh:mm:ss]{)



or



(@{myTextVar}{A,
B, C})


Global


@{global.variables.variablename}


@{global.variables.gv_date_n_time}


Tags:
Hubs:
+4
Comments0

Articles

Information

Website
www.rdtex.ru
Registered
Founded
Employees
101–200 employees
Location
Россия