Feed on Posts or Comments

BI EE &Essbase &Общее Андрей Пивоваров on 23 Jun 2009 05:28 pm

Проблема с Direct Database Request к Essbase в BI EE

В Oracle BI EE есть интересная возможность написать запрос непосредственно к базе данных, минуя метаслой BI. Называется это Direct Database Request. Это иногда бывает полезно, когда нужен какой-то разовый отчет, а метаданных для него нет и создавать долго.

Эту возможность нужно использовать с осторожностью, поэтому по умолчанию она выключена даже у администратора.

В случае Essbase пользы от нее больше, так как через метаслой не ко всем объектам Essbase вообще можно обратиться. Но при работе с Direct Database Request есть неприятный баг.

Возьмем, к примеру, такой запрос:

With
  set [PRODUCT1]  as \'[PRODUCT].Generations(1).members\'
  set [Time2]  as \'[Time].Generations(2).members\'
select
  { [MEASURES].[Margin]
  } on columns,
  NON EMPTY {crossjoin ({[PRODUCT1]},{[Time2]})} properties ANCESTOR_NAMES, GEN_NUMBER on rows
from [TBC.Tbc]

Если мы попробуем его распарсить, то есть определить какие колонки будут в отчете – все ок, но если попытаться получить результат – появляется ошибка, подобная этой:

Error Codes: OPR4ONWY:U9IM8TAC:OI2DL65P
State: HY000. Code: 10058. [NQODBC] [SQL_STATE: HY000] [nQSError: 10058] A general error has occurred. [nQSError: 43093] An error occurred while processing the EXECUTE PHYSICAL statement. [nQSError: 46008] Internal error: File .\\Src\\SQXDGEssbaseCAPI.cpp, line 1050. (HY000)

Это баг. Он открыт довольно давно. Его номер на металинке – 6869282. И он уже какое то время был в непонятном состоянии – проблема есть, но причина не известна.

И вот недавно, благодаря энтузиазму Романа Колеченкова удалось сдвинуть его с мертвой точки и разработчики выяснили, что есть проблема в парсере MDX запросов, причем обойти ее довольно просто. Достаточно окружить выражение \’FROM\’, например двумя пробелами.

То есть тот же запрос, переписанный так:

With
  set [PRODUCT1]  as \'[PRODUCT].Generations(1).members\'
  set [Time2]  as \'[Time].Generations(1).members\'
select
  { [MEASURES].[Margin]
  } on columns,
  NON EMPTY {crossjoin ({[PRODUCT1]},{[Time2]})} properties ANCESTOR_NAMES, GEN_NUMBER on rows
 from [TBC.Tbc]

работает.

Баг воспроизодится у меня в версии BI EE 10.1.3.4.1. Проблему обещают устранить в следующем релизе Oracle BI EE.

__________________________________
Читайте также:
А еще можно почитать мой твиттер @apivovarov

2 Responses to “Проблема с Direct Database Request к Essbase в BI EE”

  1. on 23 Jun 2009 at 8:40 pm 1.er said …

    Романа Колеченкова == Роман Колчин ?

  2. on 07 Jul 2009 at 10:49 am 2.Roman K. said …

    Роман Колеченков = Роман Колеченков

Trackback This Post | Subscribe to the comments through RSS Feed

Leave a Reply