开发者社区 > 大数据与机器学习 > 大数据计算 MaxCompute > 正文

DataWorks人工可以改,但是很容易出错?

DataWorks目的是从 maxcompute 回流到 ADB 3.0 - MySQL,目前一键自动建表,会把 maxcompute decamal(38,18) 映射成 mysql decamail,导致精度丢失。

人工可以改,但是很容易出错?

展开
收起
真的很搞笑 2023-11-30 15:22:47 39 0
3 条回答
写回答
取消 提交回答
  • 目前不支持修改默认映射类型哈 只能先手动改一下 或者提前手动建表,此回答整理自钉群“DataWorks交流群(答疑@机器人)”

    2023-11-30 20:23:51
    赞同 展开评论 打赏
  • 在DataWorks中,如果你希望从MaxCompute回流到MySQL,并且保持精度的完整性,你可以通过以下步骤来实现:

    1. 修改MySQL表的定义:在创建MySQL表时,你可以将列的类型定义为DECIMAL(38,18),这样就可以保证精度的一致性。

    2. 修改MaxCompute到MySQL的映射规则:在DataWorks的一键自动建表过程中,你可以修改MaxCompute到MySQL的映射规则,将MaxCompute的DECIMAL(38,18)映射为MySQL的DECIMAL(38,18)。

    3. 使用DataWorks的同步任务:在DataWorks中,你可以创建一个同步任务,将MaxCompute的数据同步到MySQL。在同步任务中,你可以设置映射规则,保证数据的一致性。

    以上步骤可以帮助你在DataWorks中,从MaxCompute回流到MySQL,并且保持精度的完整性。

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

    在 DataWorks 中,一键自动建表工具是根据源数据表的结构信息来创建目标表的。如果您的源数据表使用了 MaxCompute(ODPS)中的 decimal(38,18) 类型,并且通过一键自动建表工具将其映射到 MySQL 的 decimal 类型,可能会导致精度丢失问题。

    由于 MaxCompute 和 MySQL 在数值类型的定义和精度限制上有所差异,这种自动映射可能会引发数据精度不匹配的情况。

    解决此问题的一种方法是手动修改目标表的创建语句,将映射的 MySQL 字段类型改为更适合的类型(例如 decimal(38,18))。但是,手动修改存在出错的风险,尤其当您处理的表结构较复杂时。

    为避免手动修改带来的错误,可以考虑以下方式:

    1. 使用 DataWorks 中的模板功能:创建一个模板表,其中包含预定义的字段和其对应的 MySQL 数据类型。然后,在一键自动建表时选择该模板表,从而确保生成的目标表与模板表的定义匹配。

    2. 手动编写 SQL 脚本:通过手动编写 SQL 脚本来创建目标表,以保留精确的字段类型和精度定义。在 DataWorks 中,您可以使用数据开发功能编写和执行 SQL 脚本。

    无论选择哪种方式,请确保在建表过程中仔细检查字段类型和精度定义,以确保数据的准确性和一致性。

    2023-11-30 16:34:43
    赞同 展开评论 打赏

MaxCompute(原ODPS)是一项面向分析的大数据计算服务,它以Serverless架构提供快速、全托管的在线数据仓库服务,消除传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您经济并高效的分析处理海量数据。

相关电子书

更多
DataWorks数据集成实时同步最佳实践(含内测邀请)-2020飞天大数据平台实战应用第一季 立即下载
DataWorks调度任务迁移最佳实践-2020飞天大数据平台实战应用第一季 立即下载
DataWorks商业化资源组省钱秘籍-2020飞天大数据平台实战应用第一季 立即下载

相关实验场景

更多