Write Back »
« О том, как добыть котировки валют ЦБРФ

Временные изменения показателей

После прочтения заметки Марка Риттмана об анализе временных изменений, подумалось о том как все хорошо и красиво. Но жизнь в лице коллеги, столкнувшейся с определенными трудностями, внесла свои коррективы. Задача состояла в том, чтобы считать нарастающий итог показателя с начала года, но при этом положить его в кросс-таблицу: по строкам положить года, а по столбцам положить название месяца, а не его ключ (т.е. к примеру «Январь», а не «07-Янв»).

Естественно сперва был опробован самый очевидный вариант. Я создал временное измерение с уровнями год/месяц/день. На уровне «год» создал поле Y, содержащее четыре цифры года и являющееся ключом. На уровне «месяц» создал поле M_MONTH, содержащее название месяца, установив в качестве сортировочного поля номер месяца (01-12). Наконец на уровне «день» создал поле D типа DATE, которое сделал хронологическим ключом. В таблице фактов был показатель SUM_P, я создал показатель SUM_P_YTD по следующей формуле: TODATE(TT.FC_SALES.SUM_P, TT.DM_TIME."Year")

Вроде бы все сделав правильно и ничего не забыв, я, тем не менее, получил в итоге совершенно неправильный результат.

Тогда я попробовал другой вариант: создал на уровне «месяц» ключ, состоящий из идентификатора месяца в формате YYYYMM. На этот раз результат оказался корректным. Но добавление в запрос поля M_MONTH снова все ломало. Что-то не так в BI Server’е при работе с составными ключами уровней, видимо.

В итоге для получения требуемого вида отчета я создал на уровне «месяц» ключ из поля, содержащего идентификатор месяца в формате YYYYMMMonth. Затем создал прямо в запросе вычисляемые колонки: выделил номер месяца в году с помощью выражения SUBSTRING(dm_time.m_yyyymmmonth FROM 7 FOR 10), аналогичным образом получил название месяца. Затем расположил это нужным образом в кросс-таблице, сделав номер месяца спрятанным, но задав по нему сортировку.

Ну и наконец – то, что требовалось получить :)

Monday, May 21st, 2007 : Oracle BI Suite : No Comments

You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

No comments yet

Leave a Reply

You must be logged in to post a comment.