首页 > 解决方案 > 无法使用名为 Ataccama 的数据治理工具调用雪花程序

问题描述

我也使用了一个名为 ATaccama 的数据治理,并且我在 Snowflake 中创建了一个 SP,但是当我从 Ataccama JDBC sql 执行组件调用 SP 时出现以下错误。但是,我正在为 SNOWFLAKE 使用最新的 JDBC 驱动程序:snowflake-jdbc-3.9.2。非常感谢您的帮助!

ERROR:
net.snowflake.client.jdbc.SnowflakeSQLException: Statement 'call PII.kc11_search...' cannot be executed using current API.
at net.snowflake.client.jdbc.SnowflakePreparedStatementV1.executeBatch(SnowflakePreparedStatementV1.java:937)
at com.ataccama.dqc.internal.commons.sql.AtcPreparedStatement.executeBatch(AtcPreparedStatement.java:307)
at com.ataccama.dqc.io.jdbc.writer.FlatCommitStrategy.executeBatch(FlatCommitStrategy.java:115)
at com.ataccama.dqc.io.jdbc.writer.BatchWriter.executeBatch(BatchWriter.java:54)
at com.ataccama.dqc.io.jdbc.writer.BatchWriter.flush(BatchWriter.java:98)
at com.ataccama.dqc.tasks.jdbc.execute.SqlExecuteQueryProcessor.finish(SqlExecuteQueryProcessor.java:106)
at com.ataccama.dqc.tasks.jdbc.execute.SQLStepInstanceBase$SimpleProcessingStrategy.run(SQLStepInstanceBase.java:249)
at com.ataccama.dqc.tasks.jdbc.execute.SQLStepInstanceBase.run(SQLStepInstanceBase.java:136)
at com.ataccama.dqc.processor.internal.runner.ComplexStepNode.runNode(ComplexStepNode.java:69)
at com.ataccama.dqc.processor.internal.runner.RunnableNode.run(RunnableNode.java:28)
at com.ataccama.dqc.commons.threads.AsyncExecutor$RunningTask.run(AsyncExecutor.java:131)at java.lang.Thread.run(Thread.java:745)

[注意:使用 - 调用 PII。Kc11_seach()。]

有什么想法或其他有益的建议吗?

标签: sqljdbcsnowflake-cloud-data-platform

解决方案


Snowflake JDBC 驱动程序当前不支持执行任何可能返回值的 SQL 语句,作为PreparedStatement::executeBatch(…)Attacama 在后台使用的调用的一部分。这是因为批处理调用处理无法处理来自多个执行的 SQL 查询中的一个或多个返回的值。

由于 aCALL PROCEDURE() 可能返回值,驱动程序将其视为可能生成结果的语句并抛出不受支持的语句错误。

要通过 Attacama 调用过程,请使用不使用PreparedStatement::executeBatch(…)下面的 JDBC 调用的不同组件。


推荐阅读