Использование подсказок cognos report studio в pass through SQL

Я создал отчет в Cognos Report Studio с использованием синтаксиса pass through SQL. Мой запрос включает несколько общих табличных выражений. Как передать приглашения на запрос? Я хотел бы использовать один дополнительный фильтр даты, который затем используется в двух cte: s. Затем еще один обязательный текстовый фильтр с несколькими вариантами выбора, который будет использоваться в конечной инструкции select.

Ниже приведена упрощенная версия моего запроса:

WITH in_date AS
    (SELECT * FROM in_dates WHERE in_date > optional_date_prompt),

out_date AS
    (SELECT * FROM out_dates WHERE out_date > optional_date_prompt),

organisation AS
    (SELECT * FROM organisation)

-- some joins and unions later i end up with this table
SELECT * FROM final_table
WHERE organisation_name = 'required_text_prompt' OR
    organisation_name = 'optional_text_prompt_value'

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

1 ответ

  1. Для передачи параметров непосредственно в SQL используйте макрос. Макрос приглашения для строки с именем org будет выглядеть следующим образом:

    #prompt('org','string')#
    

    Первый параметр-имя приглашения, а второй-тип. Это минимальное количество параметров, которые необходимо указать. Есть и другие необязательные параметры, такие как значение по умолчанию, которое также можно указать. Дополнительные параметры можно найти в документации Cognos.

    Макрос приглашения помещается в предложение WHERE:

    WHERE organisation_name =  #prompt('org','string')#
    

    Cognos увидит макрос и разрешит его перед отправкой SQL в источник данных.