SET 和 Select Query 结合 Run in a Single MySql Query 将结果传递到 pentaho
Posted
技术标签:
【中文标题】SET 和 Select Query 结合 Run in a Single MySql Query 将结果传递到 pentaho【英文标题】:SET and Select Query combine Run in a Single MySql Query to pass result in pentaho 【发布时间】:2018-10-22 07:44:21 【问题描述】:以下 3 个查询我想在 mysql 中作为单个查询运行,我会将这个结果传递给 Pentaho 查询组件以绘制一些图表。
SET @input = select "22:4,33:4" from dual;
SET @count := 0;
select SUBSTRING_INDEX(@input, ' ', (@count) * 2), ' ', -1) as xyz, som_cnt as count from abc;
示例字符串的长度未知 (22:4,33:4,96:6....)
expected output
xyz count
----------------
22 4
33 4
96 6
参考 - Mysql Query to Separate space delimited String Convert into 2 columns
设置查询计数=0,如果我可以在选择查询中合并此 SET 查询也可以。 选择查询使用计数对输入字符串进行一些解析 - 仅添加示例子字符串。 (此处添加解析逻辑)我想要下面显示的 mysql 链接中的相同功能 我尝试了这个解决方案,但我不确定 set_config 在 mysql 中是否有效。 SET and SELECT within a single query?
或在 Pentaho 的 Query 组件中运行存储过程的任何方法。
【问题讨论】:
请给出示例数据和预期输出。问题有点不清楚。您很可能需要使用派生表(定义会话变量),然后您可以执行cross join
@MadhurBhaiya 我已经更新了我的问题和预期的输出,如果您知道在单个查询中执行此任务的更好解决方案,随时欢迎:)
这个值"22:4,33:4"
是来自某个表,还是您的输入?
试试这个:select SUBSTRING_INDEX(@input, ' ', (@count) * 2), ' ', -1) as xyz, som_cnt as count from abc cross join (select @count := 0) AS user_init
【参考方案1】:
您可以将用户定义的会话变量的初始化移动到派生表中,并将Cross Join
与您的其他表一起移动:
SELECT SUBSTRING_INDEX(@input, ' ', (@count) * 2), ' ', -1) AS xyz,
som_cnt AS `count`
FROM abc
CROSS JOIN (SELECT @count := 0,
@input := '22:4,33:4'
) AS user_init_vars
【讨论】:
以上是关于SET 和 Select Query 结合 Run in a Single MySql Query 将结果传递到 pentaho的主要内容,如果未能解决你的问题,请参考以下文章
MySQL: Set user variable from result of query
bigquery python client.run_async_query 给出错误:409 已经存在
您不能指定目标表(SELECT Query 上的 UPDATE )?
是否可以在SQL中将SELECT函数与LAST函数结合使用?
MyBatis报错:A query was run and no Result Maps were found for the Mapped Statement
MyBatis报错:A query was run and no Result Maps were found for the Mapped Statement