Denodo能否在同一查询语句中同时使用SPLIT与FLATTEN
Denodo FLATTEN 合并SPLIT操作单查询写法可行性说明
你提到的将SPLIT和FLATTEN合并到单条语句的写法完全可用,不需要提前创建中间视图。
官方示例拆成两步创建视图只是做逻辑拆解演示,不是强制语法要求。Denodo VQL的FLATTEN语法支持在数据源位置直接传入派生表(也就是括号包裹的SELECT子查询),和标准SQL里把子查询作为表源的使用逻辑一致。
你给出的语句只需要把里面的中文单引号替换为英文单引号即可正常运行,正确写法参考:
SELECT * FROM FLATTEN ( SELECT test1, split(test2, ';') AS test2 FROM source ) AS V (v.test2)
实际使用注意两个细节:
- 内联子查询中
split(test2, ';')的别名必须和后续FLATTEN要展开的字段匹配,这里别名设为test2,对应FLATTEN括号里的v.test2,别名不一致会触发字段不存在的报错 - 该写法在Denodo 7.0及以上版本均兼容,查询优化器会自动合并子查询和FLATTEN的执行逻辑,不会产生额外的中间视图存储开销,执行效率和提前创建中间视图再做FLATTEN的写法完全一致
内容的提问来源于stack exchange,提问作者user9898927
相关产品推荐
相关产品推荐

