Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / OLAP и DWH Новый топик    Ответить
 oracle bi: системные переменные  [new]
terna
Member

Откуда:
Сообщений: 86
Столкнулась с неожиданной проблемой.
Пытаюсь создать столбец, который будет определяться как VALUEOF(NQ_SESSION.USER)
Получаю ошибку [nQSError: 23006] The session variable, NQ_SESSION.USER, has no value definition
Иду в сессионные системные переменные - там ничего нет, но в меню можно выбрать, например, New USER...
Выбираю, он просит привязать ее к блоку инициализации, но никакого специального блока инициализации я не вижу.
Подскажите, так и должно быть? Тогда как задать эту переменную явно, чтобы BI не ругался на ошибку? Как сделать блок инициализации?
Или кто-то до меня что-то сломал и блок должен был быть? Тогда как это исправить?
18 май 17, 11:38    [20492347]     Ответить | Цитировать Сообщить модератору
 Re: oracle bi: системные переменные  [new]
dbi
Member

Откуда: http://dbi.ru
Сообщений: 111
Добрый день terna,

Создаете инит блок в репозитории, потом переменные.
Про инит блоки:
https://docs.oracle.com/middleware/12212/biee/BIEMG/GUID-7BA59188-C9FC-4169-B7AF-2ABFB1C9E891.htm#GUID-B8FCC257-D132-467E-AA89-670C5A0966B8

Про переменные:
https://docs.oracle.com/cd/E28280_01/bi.1111/e10540/variables.htm#BIEMG3104

С уважением,
DBI
18 май 17, 15:12    [20493192]     Ответить | Цитировать Сообщить модератору
 Re: oracle bi: системные переменные  [new]
terna
Member

Откуда:
Сообщений: 86
dbi,
спасибо, но эти доки я изучила еще до того как задать вопрос здесь и не нашла там ничего про мою ситуацию (когда при обращении в репозитории к VALUEOF(NQ_SESSION.USER) выдается ошибка, что такой переменной нет, в анализе нормально при этом вызывается переменная).
Если я чего-то не замечаю, то "ткните носом", пожалуйста, меня туда точнее.
18 май 17, 15:48    [20493308]     Ответить | Цитировать Сообщить модератору
 Re: oracle bi: системные переменные  [new]
bishnike
Member

Откуда: ст.Зеленчукская
Сообщений: 366
terna,

на истинность ниже написанное только претендует!

Есть такая системная функция USER() вот тут (docs.oracle.com) о ней немного написано.
Полагаю что переменная USER реализована как костыль как-то с изюминкой именно через эту функцию где-то в дебрях кода, таким образом что область видимости из репозитория ограничена скорее всего только блоками инициализации (и презентацией).

Т.е. как вариант решения на логическом слое определить столбец именно как USER(), а не через VALUEOF().
Либо делать блок, в котором создавать кастомную переменную. Причем думается мне что имя должно быть отлично от USER.

Либо при наличии блока инициализации подключения LDAP источника возможно уже есть переменная которая несет в себе значение "sAMAccountName".

Сделать кастомную L_USER не помешает. Если когда-нибудь появится задача разграничения доступа к данным не встроенными средствами, то переменная пригодится, например, на случай если захотите при тестировании смотреть что же будет доступно пользователю (т.е. что-то типа фиктивной подмены логина). В инит-блоке можно сделать вызов функции БД, которая например из таблицы подмены будет подсовывать другой логин. Или например, временная передача секторов ответственности между сотрудниками. В общем там непочатый край пользовательского счастья и радости :)
19 май 17, 20:57    [20497670]     Ответить | Цитировать Сообщить модератору
 Re: oracle bi: системные переменные  [new]
terna
Member

Откуда:
Сообщений: 86
bishnike,
Спасибо. Функция помогла.
С кастомной переменной не стала разбираться, но удивительно, что он позволяет создать переменную именно USER, понимает, что она системная, но позволяет определять её в своем произвольном блоке инициализации. Очень это всё странно.
24 май 17, 12:26    [20507371]     Ответить | Цитировать Сообщить модератору
Все форумы / OLAP и DWH Ответить