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

现在想用api执行sql字段里面的表达式,请问大家有什么办法可以解决呢?

现在想用api执行sql字段里面的表达式,请问有办法可以解决吗,比如a字段里面存了1+1,我要算出结果而不是显示表达式

展开
收起
JWRRR 2023-04-10 16:28:27 383 0
2 条回答
写回答
取消 提交回答
  • "字段值是啥结果就是啥了,如果想要做运算的话,应该是需要做一下udf处理 https://help.aliyun.com/document_detail/27866.html?spm=a2c4g.159541.0.i4此回答整理自钉群“MaxCompute开发者社区2群”"

    2023-04-10 16:58:33
    赞同 展开评论 打赏
  • 坚持这件事孤独又漫长。
    • 可以使用内置函数eval()来执行SQL字段里面的表达式。例如,如果a字段里面存了表达式"1+1",想要计算出结果,可以使用以下SQL语句:
    SELECT eval(a) as result FROM your_table;
    
    • 执行这条SQL语句,就能够得到计算结果为2的result列。需要注意的是,eval()函数执行的表达式必须是合法的SQL表达式。

    • 另外,如果你要在程序里面使用API执行这个SQL语句,可以参考以下代码:

    import odps
    from odps.models import SQLTask
    
    # 创建ODPS连接
    o = odps.ODPS(access_id='<ACCESS_ID>', secret_access_key='<SECRET_ACCESS_KEY>',
                 project='<PROJECT_NAME>', endpoint='<ENDPOINT>')
    
    # 定义SQL语句
    sql = 'SELECT eval(a) as result FROM your_table'
    
    # 使用SQLTask执行SQL
    task = SQLTask(sql)
    o.create_instance(task, priority=9)
    

    此时,就能够在ODPS上执行SQL语句,并得到结果。

    2023-04-10 16:57:25
    赞同 展开评论 打赏

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

相关电子书

更多
SQL Server 2017 立即下载
GeoMesa on Spark SQL 立即下载
原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载