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

DataWorks想开发个简单的odps脚本,发现好像不支持update啊?

DataWorks想开发个简单的odps脚本,发现好像不支持update啊?

展开
收起
cuicuicuic 2023-12-23 18:09:05 53 0
3 条回答
写回答
取消 提交回答
  • 在阿里云MaxCompute(原名ODPS)中,确实不支持UPDATE、DELETE等传统的SQL DML操作。MaxCompute作为一款基于云计算的大数据处理系统,设计上更侧重于大数据的批量处理和分析,而不是实时更新或事务处理。

    如果你需要修改已有的数据,通常可以采取以下几种方式:

    1. 重写表
      使用INSERT OVERWRITE语句重新计算整个表的内容。例如,如果要根据源表source_table更新目标表target_table中的某些列值,可以先创建一个新的临时表,然后将更新后的数据插入到该临时表中,最后用临时表覆盖目标表。

      CREATE TABLE temp_table AS
      SELECT id, updated_column1, updated_column2, ...
      FROM source_table
      WHERE update_condition;
      
      INSERT OVERWRITE TABLE target_table SELECT * FROM temp_table;
      
    2. 分区表
      如果你的表是分区表,可以针对特定分区执行上述操作,这样只会影响到特定分区的数据。

    3. 使用MapReduce或者Spark作业
      对于复杂的数据更新逻辑,可以编写自定义的MapReduce程序或Spark作业来实现数据更新。

    在MaxCompute中处理数据更新时,一般采用的是全量重写的方式而非直接进行更新操作。在设计数据处理流程时,请考虑这些特性,并根据实际业务需求合理规划数据处理策略。

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

    DataWorks支持使用ODPS SQL语句进行数据操作,包括INSERT、SELECT、UPDATE和DELETE等。但是需要注意的是,在ODPS中,UPDATE操作并不是直接通过SQL语句实现的,而是通过INSERT INTO ... SELECT FROM的方式实现的。

    例如,如果你想要更新表table1中的某一行数据,你可以先创建一个临时表temp_table,将需要更新的数据插入到这个临时表中,然后删除原表中的数据,最后将临时表中的数据插入回原表中。具体的SQL语句如下:

    -- 创建临时表
    CREATE TABLE temp_table AS SELECT * FROM table1 WHERE condition;
    
    -- 删除原表中的数据
    DELETE FROM table1 WHERE condition;
    
    -- 将临时表中的数据插入回原表中
    INSERT INTO table1 SELECT * FROM temp_table;
    

    其中,condition是你需要更新数据的筛选条件。

    2023-12-25 17:47:06
    赞同 展开评论 打赏
  • 对的哈 非事务表不支持update,比较常用的也是非事务表 ,此回答整理自钉群“DataWorks交流群(答疑@机器人)”,此回答整理自钉群“DataWorks交流群(答疑@机器人)”

    2023-12-25 08:01:08
    赞同 展开评论 打赏

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

相关产品

  • 大数据开发治理平台 DataWorks
  • 相关电子书

    更多
    DataWorks数据集成实时同步最佳实践(含内测邀请)-2020飞天大数据平台实战应用第一季 立即下载
    DataWorks商业化资源组省钱秘籍-2020飞天大数据平台实战应用第一季 立即下载
    基于DataWorks数据服务构建疫情大屏-2020飞天大数据平台实战应用第一季 立即下载