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

DataWorks中create table testSql2 LIFECYCLE 10 AS

DataWorks中create table testSql2 LIFECYCLE 10 AS
select "select * from hongxu_core.compete_data_result where pt='20230520' limit 1";

select * from hongxu_core.compete_data_result where pt='20230520' and biz_db_primary_id=(select * from testSql2) 我有这样一个需求,一个sql保存在另一张表中,需要能这样查询出结果,但是我在dataworks发现 sql被当作纯字符串了,没有当作sql执行,我应该怎么做?

展开
收起
cuicuicuic 2023-05-25 11:57:43 265 0
3 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    在使用DataWorks中的SQL节点时,如果需要将一个SQL语句嵌入到另一个SQL语句中,可以通过使用变量参数的方式来实现。具体操作步骤如下:

    1首先,在“组件”页面中创建两个SQL节点,一个用于保存需要执行的SQL语句,另一个用于包含需要引用的SQL语句。
    
    2在保存需要执行的SQL语句的节点中,选择“高级属性设置”,然后添加一个参数,并将SQL语句作为参数值。例如,可以定义一个名为“sqlText”的参数,它的值为“select * from hongxu_core.compete_data_result where pt='20230520' limit 1”。
    
    3在需要引用该SQL语句的节点中,编写一个SQL语句,其中使用“${paramName}”的格式来引用参数。例如,可以编写一个查询语句,如下所示:
    
    
    select * from hongxu_core.compete_data_result 
    where pt='20230520' and biz_db_primary_id=(select * from (${sqlText}))
    
    

    在这个查询语句中,“${sqlText}”引用了第一个节点中定义的“sqlText”参数。使用这种方式可以将一个SQL语句作为参数传递给另一个SQL语句,并在其中进行引用。

    4配置好SQL节点后,就可以提交和运行任务,查看结果了。
    
    

    希望这些步骤能够帮助你解决问题。

    2023-05-26 20:35:27
    赞同 展开评论 打赏
  • 您可以在DataWorks中创建一个存储过程,将该SQL语句作为存储过程的输入参数,然后在存储过程中执行该SQL语句并返回结果。这样就可以在DataWorks中执行该存储过程并获取结果了。

    以下是一个示例存储过程的代码:

    CREATE PROCEDURE GetCompeteDataResult
    @sql NVARCHAR(MAX)
    AS
    BEGIN
    SET NOCOUNT ON;
    DECLARE @table_name NVARCHAR(MAX)
    SELECT @table_name = OBJECT_NAME(@@PROCID)
    SET @sql = 'SELECT * FROM ' + @table_name + ' WHERE pt = ''20230520'' AND biz_db_primary_id = (' + CHAR(39) + @sql + CHAR(39) + ') '
    EXECUTE(@sql)
    END 在上面的代码中,我们首先获取当前存储过程的名称,然后将@sql参数添加到SQL语句中。最后,我们执行该SQL语句并返回结果。

    然后,您可以在DataWorks中调用该存储过程并传入您的SQL语句作为输入参数,例如:

    CALL GetCompeteDataResult 'select * from hongxu_core.compete_data_result where pt=''20230520'' limit 1' 这将执行您的SQL语句并将其结果返回给您。

    2023-05-25 18:05:31
    赞同 1 展开评论 打赏
  • 考虑一下pyodps,将sql字符串作为可执行变量

    2023-05-25 17:28:46
    赞同 展开评论 打赏

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

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载