开发者社区 > 大数据与机器学习 > 大数据开发治理DataWorks > 正文

DataWorks离线同步 主键冲突后可根据更新时间有选择地merge吗 ?

DataWorks离线同步 主键冲突后可根据更新时间有选择地merge吗 ?image.png

展开
收起
真的很搞笑 2023-11-14 06:48:33 53 0
3 条回答
写回答
取消 提交回答
  • 在DataWorks的离线同步过程中,如果出现主键冲突,默认的处理方式是覆盖旧数据。如果你想根据更新时间有选择地合并数据,这需要你在数据同步的配置中设置相应的处理规则。

    在DataWorks的数据同步配置中,有一个选项叫做"冲突处理策略",你可以在这里设置如何处理主键冲突。其中有一个策略叫做"更新覆盖",它会覆盖旧数据。如果你想根据更新时间有选择地合并数据,你可以选择"更新插入"或者"完全插入"的策略。

    "更新插入"的策略会在出现主键冲突时,将新数据插入到表中,同时会更新旧数据的字段值。这样,你就可以根据更新时间来选择性地合并数据。

    "完全插入"的策略会在出现主键冲突时,将新数据插入到表中,同时会删除旧数据。这样,你就可以根据更新时间来选择性地合并数据。

    2023-11-30 14:20:52
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    在 DataWorks 中,如果存在主键冲突,则默认情况下将阻止导入操作。为了解决这个问题,您应该:

    1. 在导入时为表设置主键列,避免主键冲突。
    2. 设置冲突策略,决定如何处理冲突数据。

    在 DataWorks 中,默认情况下将根据表的时间戳字段进行更新,这意味着更新后的记录将替换旧记录。为了更改主键冲突的处理方式,请参阅官方文档,并参考以下示例:

    -- 设置冲突策略(如只追加不覆盖)
    MERGE INTO table AS target USING source ON (target.key = source.key)
    WHEN MATCHED THEN UPDATE SET 
        column1 = source.column1,
        ...
        columnN = source.columnN
    WHEN NOT MATCHED THEN INSERT (key, column1, ... , columnN) VALUES (source.key, source.column1, ..., source.columnN);
    
    2023-11-14 13:56:57
    赞同 展开评论 打赏
  • 这个目前应该做不到 image.png
    ,此回答整理自钉群“DataWorks交流群(答疑@机器人)”

    2023-11-14 11:32:00
    赞同 展开评论 打赏

DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。

相关产品

  • 大数据开发治理平台 DataWorks
  • 热门讨论

    热门文章

    相关电子书

    更多
    DataWorks数据集成实时同步最佳实践(含内测邀请)-2020飞天大数据平台实战应用第一季 立即下载
    DataWorks调度任务迁移最佳实践-2020飞天大数据平台实战应用第一季 立即下载
    基于DataWorks数据服务构建疫情大屏-2020飞天大数据平台实战应用第一季 立即下载

    相关实验场景

    更多