2016-08-02 7 views
1

У меня есть около 40 запросов, которые выполняются на разных таблицах, а в конце каждого запроса - подзапрос для вычисления некоторых показателей на основе значений из вышеподзапросов. Окончательный подзапрос в каждом запросе выглядит так:Vertica: Функция возвращает несколько столбцов

SELECT dimension, 
     CASE when(impressions!=0) THEN clicks/impressions*100 
      ELSE NULL 
     END ctr, 
     CASE when(impressions!=0) THEN gross_rev/impressions*1000 
      ELSE NULL 
     END cpm, 
     CASE when(clicks!=0) THEN gross_rev/clicks 
      ELSE NULL 
     END cpc, 
     CASE when(actions!=0) THEN gross_rev/actions 
      ELSE NULL 
     END AS cpa, 
     CASE when(post_click!=0) THEN gross_rev/post_click 
      ELSE NULL 
     END AS pc_cpa 

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

Любая идея о том, как повторно использовать эти подзапросы в функции или любой другой технике повторного использования для vertica.

ответ

1

Вы можете сделать это, создав свой собственный Vertica UDX, UDX должен быть типа TRANSFORM, используя этот тип UDX, схема вывода не связана с входной схемой, поэтому в основном вы можете предоставить список столбцов в качестве ввода и на выходе может быть другой список с разным размером.

Вы можете увидеть некоторые примеры в GitHub https://github.com/vertica/Vertica-Extension-Packages

Я надеюсь, что вы найдете его полезным

Благодаря

 Смежные вопросы

  • Нет связанных вопросов^_^