Вернувшиеся повторно активированные пользователи терадата sql - PullRequest
0 голосов
/ 10 июля 2020

Я пытаюсь сформировать запрос для возврата, повторной активации и WAU, как определено ниже:

  • Returning WAU - активен на прошлой неделе
  • WAU - не активен на прошлой неделе, но активен в течение последних 30 дней
  • Повторно активированный WAU - не видел более 30 дней

У меня есть таблица за последние 60 дней, содержащая cust_id, дату входа в систему, но не работает функция задержки (Teradata ODB C соединение). Я продолжаю получать эту ошибку:

[3706] Синтаксическая ошибка: тип данных logindate не соответствует имени определенного типа. Мой формат: выберите .... lag (logindate, 1) over (разделение по cust_id в порядке 1 как c) как lag_ind из (....

Пожалуйста, помогите 3 случаи выше.

1 Ответ

0 голосов
/ 10 июля 2020

Вы можете объединить, чтобы получить ожидаемый ответ:

select cust_id,
   case
     when max(logindate) > current_date - 7  -- active last week
       then 'Returning WAU' 
     when max(logindate) > current_date - 30 -- not active last week, but active within last 30 days
       then 'WAU'
     else 'Reactivated WAU'                  –- not seen in 30+ days
   end
from tab
group by 1

Что касается проблемы с LAG, это было введено в 16.10, прежде чем вам придется переписывать:

lag(logindate, 1)
over (partition by cust_id
      order by col asc) as lag_ind

max(logindate)
over (partition by cust_id
      order by col asc
      rows between 1 preceding and 1 preceding) as lag_ind

Подсказка : никогда не используйте ORDER BY 1 в функции OLAP, здесь это буквальное значение, а не первый столбец.

...