Учитывая, что у меня есть таблица с историческими данными (за 2 года), которая была создана после выполнения следующего запроса в spark:
temp_result = spark.sql("SELECT gaid,MIN(CASE WHEN upper(event) in ('APP
ACCESS', 'APP OPENED', 'APP LAUNCHED') THEN date_stamp_ist END) as
first_app_access_date,MIN(CASE WHEN upper(event) in ('MEDIAREADY', 'MEDIA
READY') THEN date_stamp_ist END) as first_app_viewed_date FROM df_raw_data
GROUP BY gaid")
Данные выглядят следующим образом:
- --------------------+---------------------+---------------------+
| gaid|first_app_access_date|first_app_viewed_date|
+--------------------+---------------------+---------------------+
|00001C8A-2326-469...| 2018-09-03| 2018-09-03|
|00021783-C199-4FE...| 2018-09-01| 2018-09-01|
|0003432f-6e30-4c0...| 2018-09-04| 2018-09-04|
|000662ae-2b9b-468...| 2018-09-02| 2018-09-02|
|0009ac47-c7a2-4b6...| 2018-09-01| 2018-09-01|
|000c245b-58b1-492...| 2018-09-03| 2018-09-03|
|000f327b-56dc-4c8...| 2018-09-01| 2018-09-01|
|001149cb-f51c-4c0...| 2018-09-01| 2018-09-01|
|0013ad65-2843-4d3...| 2018-09-04| 2018-09-04|
|0015170a-fda1-41c...| 2018-09-05| 2018-09-05|
|001cf486-035a-43e...| 2018-09-04| 2018-09-04|
|001f2ecf-bf0f-47d...| 2018-09-03| null|
|002053e8-2cf6-43f...| 2018-09-04| 2018-09-04|
|002303e0-5aa4-4eb...| 2018-09-01| 2018-09-01|
|0025f65c-5818-4c3...| 2018-09-01| null|
|002807db-b0a2-487...| 2018-09-03| 2018-09-03|
|002befcc-cdfd-463...| 2018-09-01| 2018-09-01|
|00364046-b022-497...| 2018-09-02| null|
То, что я пытаюсь сделать, - это найти первый доступ к приложению и первое представление приложения для пользователя (gaid).
Теперь, когда я запускаю это для данных нового месяца, я хочу:
- Проверьте, присутствует ли прилив, поступающий в новых данных, в исторических данных или нет.
- Если он присутствует, это означает, что у нас уже есть первый доступ к приложению, и мы ничего не делаем.
- Если gaid отсутствует в исторических данных (это означает, что это новый идентификатор), он должен выполнить тот же запрос, чтобы вычислить первый доступ к приложению и первое представление приложения и вставить его в исторические данные.
- Для конкретной подсказки должен присутствовать первый доступ к приложению, и первое представление приложения может быть нулевым, так как у человека может быть доступ, но что-то было просмотрено позже.
- Для таких записей следует обновить первое представление приложения вчисторические данные.
Мне трудно это выполнить.Помощь будет очень признателен!