У меня есть таблица (join_df), которая выглядит следующим образом:
+------------------------------------+----------+--------------+---------------------+---------------------+
|gaid |event |date_stamp_ist|first_app_access_date|first_app_viewed_date|
+------------------------------------+----------+--------------+---------------------+---------------------+
|001f2ecf-bf0f-47dc-a2b2-b526b5b3292e|App Opened|2018-10-06 |2018-09-03 |null |
|001f2ecf-bf0f-47dc-a2b2-b526b5b3292e|App Access|2018-10-06 |2018-09-03 |null |
|001f2ecf-bf0f-47dc-a2b2-b526b5b3292e|App Opened|2018-10-06 |2018-09-03 |null |
|001f2ecf-bf0f-47dc-a2b2-b526b5b3292e|App Access|2018-10-06 |2018-09-03 |null |
|001f2ecf-bf0f-47dc-a2b2-b526b5b3292e|App Access|2018-10-06 |2018-09-03 |null |
+------------------------------------+----------+--------------+---------------------+---------------------+
Исходя из этого, я создаю новый кадр данных по следующей логике:
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 joined_df
GROUP BY gaid"
Проблема заключается в, для записей, показанных как во фрагменте выше, первый app_access_date уже рассчитан.И вышеупомянутый запрос пересчитает это и обновит значение для этой подсказки к неправильному последнему значению, используя date_stamp_ist.
Я хочу вставить случай, когда в вышеуказанном запросе проверяется:
Если join_df.first_app_access_date! = "Null", то firs_app_access_date.Однако, если join_df.first_app_access_date == "null", то:
MIN (СЛУЧАЙ, КОГДА верхний (событие) в ('APP ACCESS', 'APP OPENED', 'APP LAUNCHED') THEN date_stamp_ist END) какfirst_app_access_date
- Аналогичная проверка для first_app_view_date:
Если df_joined.first_app_viewed_date! = "null", то first_app_viewed_date Если first_app_viewed_date! first_app_viewed_date! = "null" тогда *
MIN(CASE WHEN upper(event) in ('MEDIAREADY', 'MEDIA
READY') THEN date_stamp_ist END) as first_app_viewed_date FROM joined_df
GROUP BY gaid"
*
Нужны эти 2 проверки в начальном запросе в случае, когда.Я не уверен, что лучший подход.