开发者社区> 问答> 正文

最新记录的不同ID - SparkSQL [重复]

我正在研究数据砖上的spark并使用以下数据:

Distinct_Id                       Event                       Date

some alphanumerical value App Access 2018-01-09
some alphanumerical value App Opened 2017-23-01

       ...                        ...                          ...

数据意味着:

每个distinct_id标识一个不同的用户。有4个主要事件 - 应用程序访问,应用程序打开,应用程序启动,mediaReady。

问题:

我正在尝试找到特定distinct_id的第一个应用访问日期。应用程序访问定义为:事件('应用程序访问','应用程序打开','应用程序启动')

第一个应用查看了特定distinct_id的日期。应用查看定义为:event =='mediaReady'

我的数据存在于parquet文件中,数据量巨大(2年数据)。

我尝试了以下内容来查找第一个应用访问日期:

temp_result = spark.sql("

 with cte as(
   select gaid,  
          event, 
          event_date, 
          RANK() OVER (PARTITION BY gaid order by event_date) as rnk 
   from df_raw_data 
   WHERE upper(event) IN ('APP LAUNCHED', 'APP OPENED', 'APP ACCESS')
   group by gaid,event,event_date
 ) 
 select  DISTINCT gaid, event_date, event from cte where rnk = 1

")
我正在尝试编写一个强大的查询,它将随着数据的增加而扩展并给出结果。

展开
收起
社区小助手 2018-12-21 10:58:22 1527 0
1 条回答
写回答
取消 提交回答
  • 社区小助手是spark中国社区的管理员,我会定期更新直播回顾等资料和文章干货,还整合了大家在钉群提出的有关spark的问题及回答。

    感觉更像是一个数据透视查询:

    SELECT
    gaid,
    MIN(CASE WHEN event in ('App access', 'App opened', 'App Launched') THEN date END) as first_app_access_date,
    MIN(CASE WHEN event in ('mediaReady') THEN date END) as first_app_viewed_date
    FROM df_raw_data
    GROUP BY gaid

    2019-07-17 23:23:17
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
对 2000 多亿条数据做一次 group by 需要多久? 立即下载
对2000多亿条数据做一次Group By 需要多久 立即下载
Get rid of traditional ETL, Move to Spark! 立即下载