Как показать одно значение за все дни месяца в obiee? - PullRequest
0 голосов
/ 27 сентября 2018

Может показаться странным, но у меня есть требование показывать одно значение для всех дней месяца.

В базе данных есть записи только за первый день месяца.Когда я создаю анализ в BI с приглашением на день, очевидно, я получаю нулевые значения для каждого дня, кроме первого дня месяца.Как я могу исправить этот measere (значение в 01.01.2018, 01.02.2018 и т. Д.) Для всех дней?Конечно, при изменении месяцев в столбце должно быть указано значение первого дня следующего месяца.Есть ли способ сделать это?

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Установите для правила агрегирования значение FIRST для измерения в измерении Time, уровень Month и SUM для всех остальных.

0 голосов
/ 27 сентября 2018

Будет ли такой запрос полезным?

the_whole_month CTE создает все дни в каждом месяце;Вызов табличной функции здесь, чтобы избежать дубликатов

SQL> with test (first_day, value) as
  2    (select date '2018-01-01', 100 from dual union all
  3     select date '2018-02-01', 200 from dual union all
  4     select date '2018-03-01', 300 from dual
  5    ),
  6  the_whole_month as
  7    (select (first_day + column_value - 1) datum, value
  8     from test,
  9          table(cast(multiset(select level from dual
 10                              connect by level <= last_day(first_day) - first_day + 1
 11                             ) as sys.odcinumberlist))
 12    )
 13  select * from the_whole_month
 14  order by datum;

DATUM         VALUE
-------- ----------
01.01.18        100         -- January begins here
02.01.18        100
<snip>
29.01.18        100
30.01.18        100
31.01.18        100
01.02.18        200         -- February begins here
02.02.18        200
<snip>
27.02.18        200
28.02.18        200
01.03.18        300         -- March begins here
02.03.18        300
<snip>
29.03.18        300
30.03.18        300
31.03.18        300

90 rows selected.

SQL>

Относительно дубликатов (вы получите без табличной функции): запрос будет выглядеть следующим образом;Я сократил эти месяцы до 3 дней каждый.Вы ожидаете, что 3 месяца x 3 дня = 9 строк, но вы получите 39 строк.Если вы достаточно терпеливы, чтобы запустить его в течение всего месяца и за все месяцы, которые у вас есть, вы можете получить ... Я не знаю, миллионов строк.Не делай этого.

SQL> with test (first_day, value) as
  2    (select date '2018-01-01', 100 from dual union all
  3     select date '2018-02-01', 200 from dual union all
  4     select date '2018-03-01', 300 from dual
  5    ),
  6  the_whole_month as
  7    (select (first_day + level - 1) datum, value
  8     from test
  9     connect by level <= 3  --> Presuming there are only 3 days in every month.
 10                            --> You'd expect 3 x 3 = 9 rows, but you'll get 39.
 11    )
 12  select * from the_whole_month
 13  order by datum;

DATUM         VALUE
-------- ----------
01.01.18        100
02.01.18        100
02.01.18        100
02.01.18        100
03.01.18        100
03.01.18        100
03.01.18        100
<snip>  
03.03.18        300
03.03.18        300

39 rows selected.

SQL>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...