Как сделать LAG & LEAD в Google BigQuery SQL? - PullRequest
0 голосов
/ 05 января 2020

Существует ли функция или способ сделать LEAD & LAG в Google Big Query SQL для прогнозирования новых клиентов, постоянных клиентов и постоянных клиентов?

Моя таблица

 Order_ID | Date_Start | Date_End |  
 001      | 2020-1-1   | 2020-2-1 | 
 001      | 2020-2-1   | 2020-3-1 | 
 001      | 2020-3-1   | 2020-4-1 | 

Ожидаемый результат:

 Order_ID | Date_Start | Date_End | Churn_Status    
 001      | 2020-1-1   | 2020-2-1 | New Customer
 001      | 2020-2-1   | 2020-3-1 | Recurring 
 001      | 2020-3-1   | 2020-4-1 | Churned

Спасибо. Любая помощь вам будет полезна.

1 Ответ

2 голосов
/ 05 января 2020

Если я правильно понимаю, вы можете сделать:

select t.*,
       (case when lag(order_id) over (partition by order_id order by date_start) is null
             then 'New Customer'
             when lead(order_id) over (partition by order_id order by date_start) is null
             then 'Churned'
             else 'Recurring'
        end) as churn_status
from t;

Я интерпретирую лог c как:

  • Если order_id не имеет предыдущей записи, тогда статус «Новый клиент».
  • Если order_id не имеет следующей записи, то статус «Сброшен».
  • Если существует как предыдущая, так и следующая запись, то статус «Повторяющийся».
...