如何在SSRS报告查询中通过ODBC将参数传递给HIVE LLAP

qq24tv8q  于 2022-11-29  发布在  Hive
关注(0)|答案(1)|浏览(210)

我正在VS 2019中创建SSRS报告,并使用适用于Apache Hive的Cloudera ODBC驱动程序创建ODBC数据源,目前无法使参数正常工作。
我已经创建了一个数据集,查询类型为文本,如果我的查询中有静态值,一切都可以正常工作。我需要创建参数,并且已经尝试过了,因为这应该是在使用ODBC时指示参数的方式:

select * from clients where client_id = ?

问题是,当我测试查询或单击“确定”关闭查询设计器/数据集属性时,我收到此错误消息,并且字段集未更新(报告被视为无效):
执行查询时发生错误。错误[42000] [Cloudera][Hardy](80)执行查询时服务器中抛出语法或语义分析错误。来自服务器的错误消息:编译语句时出错:失败:ParseException第24行:16无法识别表达式规范中'?'附近的输入
我试过“@",“?",在这些字符周围使用[],使用括号,以及我在google上找到的其他几种变体。当我使用?或@时,SSRS会弹出标准的定义查询参数对话框,但无论我在那里做什么,似乎都没有任何区别。
这几乎就像SSRS(或ODBC)没有替换参数占位符,只是传递它,而HIVE不知道如何处理它。
有什么想法吗?

8ftvxx2r

8ftvxx2r1#

我通过传递到数据集的筛选器中来使用参数,但这不是一个优化的解决方案。另一种解决方法是将查询 Package 在表达式中
=“从table_a中选择名称,其中性别=”“&参数名称.值& "'"
手工定义字段并查看报表。
如果您发现任何其他解决方案,请更正此问题

相关问题