Cognos Report Studio - для цикла?

У меня есть пакет COGNOS для данных о процессах в моей компании. Все они имеют дату начала, а незавершенные процессы не имеют даты окончания. Процесс активен в дату x, если дата начала предшествует x, а дата окончания - после x или является пустой. Пакет не имеет временного ряда.

Компании нужен отчет с количеством активных процессов в конце каждого месяца за последние два года. Не имея временных рядов для повторения, я должен был быть креативным. Я создал 24 элемента данных, каждый из которых имеет следующую формулу:

IF (([Start Date] <= _last_of_month(_add_months(current_date;-1))) and 
(([End Date] is missing) or 
([End Date] > _last_of_month(_add_months(current_date;-1))))) 
THEN (1) ELSE (0)

... вычитая от 1 до 24 месяцев. Затем я добавил каждый столбец в перекрестную таблицу отчета.

Ну, это решение действительно безобразно и немыслимо. Есть ли способ выполнить итерацию переменной в Report Studio, создавая строку или столбец для каждой итерации?

Спасибо!

1 ответ

Решение

Вы можете моделировать временные ряды в Report Studio. Есть несколько вариантов:

  1. Если вам разрешено SQL в RS. Создайте тему запроса, например:

    select _last_of_month(_add_months(current_date;-1)) as Month
    union all
    select _last_of_month(_add_months(current_date;-2)) as Month
    union all
    ....
    
  2. Создайте тему запроса из существующей таблицы с датами. Элемент запроса [Месяц]

    _last_of_month([date_field])
    

    Фильтровать это по

    [date_field] < _add_months(current_date;-24)
    

    и проверьте, чтобы свойство запроса "Автогруппа и суммирование" было установлено "Да". Будьте осторожны, выбирайте маленький, но плотный столик в качестве источника.

  3. Создайте тему запроса на основе любой существующей таблицы с более чем 24 строками. Добавить элемент запроса с выражением

    1
    

    Назовите это "1", а также. Добавьте еще один QI, назовите его [Back], выражение

    running-total([1])
    

    Фильтруйте это:

    [Back] <= 24
    

    Добавьте еще один QI с выражением

    _last_of_month(_add_months(current_date;-[Back]))
    

    Это ваше поле [Месяц]

Затем присоедините этот предмет запроса к вашему списку процессов по условию

[Time series].[Month] > [Process].[Start Date] and
([Time series].[Month] < [Process].[End Date] or [End Date] is missing)

Чем просто считать строки для каждого [Месяца]

Другие вопросы по тегам