Denodo中如何让Json源基视图的VQL兼容传统SQL IN语法?
解决Denodo中用SQL IN子句适配Web Service API参数的问题
针对你的需求,只需调整Denodo基视图的参数配置,就能让IN子句的多值自动转换成API所需的逗号分隔字符串,具体步骤如下:
方法一:直接配置参数的多值处理(推荐)
- 打开Denodo Virtual DataPort管理工具,找到你的基视图
bv_fluview - 进入基视图的Parameters标签页
- 找到
epiweeks参数,点击编辑按钮 - 在
Input Type下拉菜单中选择Multiple values,然后在Separator输入框中填入逗号, - 保存配置后,直接执行你想要的IN子句查询:
Select * from bv_fluview where epiweeks in ('201501','201601','201701') and regions = 'nat'
Denodo会自动把IN中的多个值拼接成201501,201601,201701的格式,传给目标API的epiweeks参数。
方法二:用内置函数手动转换(临时查询用)
如果不想修改基视图配置,也可以在查询时用Denodo内置的array_to_string函数把数组转成逗号分隔字符串:
Select * from bv_fluview where epiweeks = array_to_string(ARRAY['201501','201601','201701'], ',') and regions = 'nat'
不过这种写法不如方法一灵活,适合临时测试场景。
补充说明
如果后续regions参数也需要用IN子句查询,重复上述方法一的步骤配置regions参数即可。
内容的提问来源于stack exchange,提问作者DapperDanh
相关产品推荐
相关产品推荐

