开发者社区 问答 正文

MaxCompute用户指南:Job运行信息查看:巧用MaxCompute编译器的错误和警告



MaxCompute 编译器基于 MaxCompute2.0 新一代的 SQL 引擎,显著提升了 SQL 语言编译过程的易用性与语言的表达能力。本文将为您介绍编译器的易用性改进。

编译器的易用性改进


为了充分展示 MaxCompute 编译器的易用性改进,推荐您配合使用 MaxCompute Studio。
首先,请 安装 MaxCompute Studio添加 MaxCompute 项目并创建工程,然后新建 MaxCompute 脚本文件,如下所示:
  
由上图可以发现以下问题:


  • 第一个 insert 语句中 wm_concat 函数使用有错误。

  • 第二个 insert 语句中有一个错误和一个警告,错误是列名写错了,警告则是 MaxCompute 中,比较Bigint 与 Double 时,会隐式转换为 Double,因为从 String 到 Double 是有可能在运行时导致错误的转换,所以MaxCompute 编译器会在此警告,请您确定此行为是否是您希望的。

鼠标停止在错误或者警告上,会直接提示具体错误或者警告信息。如果您不修改错误,直接提交,会被 MaxCompute Studio 阻拦,如下图所示:

所以,请您按照提示修改错误和警告,如下所示:

修改完毕后,再次提交脚本,便可以顺畅运行。
您也可以通过 MaxCompute Studio 把所有警告都设定为错误,如下图所示:

通过以上设置,可以保证不会不小心漏掉任何有可能的错误。
建议您在提交任何脚本之前,都使用 MaxCompute Studio对脚本进行静态编译检查,并强烈推荐将警告设定为错误,在提交前修改所有的警告,这样可以避免浪费时间和资源。另外,提交有错误的脚本会被扣您的计算健康分,导致以后提交任务的优先级被下调,未来没有修改的警告也会被纳入到健康分体系,所以使用MaxCompute Compiler 和 Studio,可以永不降级。
警告中有很多情况是不安全的隐式类型转换,如果确实是您想要的转换,可以用 cast (xxx as) 的方式消除警告;如果觉得这么写麻烦,MaxCompute 编译器还提供一种简洁的方式(xxx),如上面修改过的脚本所示。

展开
收起
行者武松 2017-10-24 10:41:16 2212 分享 版权
阿里云 AI 助理回答

MaxCompute Studio 是阿里云为MaxCompute设计的一款集成开发环境(IDE),它极大地提升了开发者在编写、调试和管理MaxCompute项目时的效率与体验。通过与MaxCompute编译器的紧密集成,Studio提供了丰富的功能来增强SQL脚本的易用性和表达能力,具体体现在以下几个方面:

  1. 实时错误检查与提示:如您所见,当脚本中存在语法错误、列名错误或类型不匹配等潜在问题时,MaxCompute Studio能够即时高亮显示这些问题,并提供详细的错误或警告信息。这有助于开发者在提交作业前快速定位并修正问题,避免了因错误执行而导致的时间和资源浪费。

  2. 智能代码补全与建议:Studio支持SQL语法的自动补全,帮助开发者更快地编写代码,减少手动输入的工作量,同时也能提高代码的准确性。

  3. 类型安全与隐式转换提示:对于可能引起数据丢失或非预期行为的隐式类型转换,编译器会发出警告,鼓励使用显式类型转换(如CAST(xxx AS type))以确保数据处理的精确性。此外,还提供了简化的类型转换语法,让代码更加简洁明了。

  4. 配置警告为错误:允许用户将所有警告视为错误处理,这一设置强制开发者在提交脚本前解决所有潜在问题,进一步提高了代码质量和运行稳定性。

  5. 静态编译检查:在提交脚本执行之前,可以利用Studio进行静态编译检查,这是一种预防性的质量控制措施,有助于提前发现并修正错误,避免计算健康分的损失,保持任务的高效执行和优先级。

  6. 项目管理和脚本组织:通过添加项目和创建工程文件,开发者可以更好地组织和管理MaxCompute中的各种脚本和资源,提升团队协作效率。

综上所述,MaxCompute Studio及其编译器不仅提升了SQL编写和维护的便利性,还通过一系列智能化的功能增强了代码的安全性和健壮性,是MaxCompute用户提升开发效率和保障数据处理质量的强大工具。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答