数据处理-按编号和日期汇总顺序拼接数据

  • 方案级协助
  • 文档创建者:Roxy
  • 历史版本:3
  • 最近更新:Roxy 于 2025-03-11
  • 1. 概述

    1.1 应用场景

    某公司的闸机系统会按照人员编号、通行门禁除、通信时间3个字段,记录每一个人员,经过每一处门禁,具体经过的时间。

    希望可以将原始通行明细数据,汇总成按:每人每天一条汇总通行详情,且通行详情需要按照时间先后排序。

    例如原始数据如下图所示:

    期望数据处理后的结果:

    1.2 实现思路

    1)将通行时间_日期字段拆分称日期和时间两个字段。

    2)拼接通行门禁字段和时分秒字段。

    3)按照编码和通行时间_日期对数据进行排序,然后按照编号、通行年月日进行汇总,同时将每天的打卡详情数据进行拼接。

    FineDataLink 中的数据处理过程,详情参见:https://demo.finedatalink.com/ 「按编号和日期汇总顺序拼接数据」。

    2. 操作步骤

    示例数据:数据清洗处理.xlsx

    2.1 拆分日期和时间字段

    新建定时任务,使用数据转换节点,进入编辑界面,拖入DB表输入算子,并取出数据库中需要处理的数据,如下图所示:

    使用新增列将通行时间字段转成文本字段,如下图所示:

    使用字段拆列对通行时间进行拆分,拆分出日期和时分秒字段,如下图所示:

    点击「数据预览」,得到如下拆分结果:

    使用「字段设置」修改拆分后的字段名,如下图所示:

    2.2 拼接打卡地点和时分秒字段

    将打卡处与时分秒拼接在一起,使用「新增字段列」,输入函数 CONCATENATE,如下图所示:

    2.3 排序和汇总

    按照编号和日期升序排列,使用 SparkSQL 算子,输入以下语法,如下图所示:

    select * from 新增计算列1 order by 新增计算列1.`编号`,新增计算列1.`通行时间_日期`

    点击「数据预览」,即可看到按照编号和日期升序排列后的结果,如下图所示:

    然后按照编号、通行年月日进行汇总,同时将每天的打卡详情数据进行拼接,如下图所示:

    SELECT
      Spark SQL.`编号`,
      Spark SQL.`通行时间_年月日`,
      CONCAT_WS('\n',COLLECT_LIST(Spark SQL.`打卡详情`))AS detail
    FROM Spark SQL
    GROUP BY $park SQL.`编号`,Spark SQL.`通行时间_年月日`

    2.4 效果查看

    点击「数据预览」,即可看到汇总排序拼接后的结果,如下图所示:

    然后即可将处理结果进行输出,如下图所示:

    附件列表


    主题: 数据开发-定时任务
    已经是第一篇
    已经是最后一篇
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭



    AI

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持

    反馈已提交

    网络繁忙