【问题标题】:Stored procedure execution from Cloud Datafusion从 Cloud Datafusion 执行存储过程
【发布时间】:2020-03-05 14:38:22
【问题描述】:

我正在尝试使用 Datafusion Bigquery Execute 执行存在 bigquery 的存储过程,即从 Big query 执行 SQL 命令调用该过程。管道因 Null 异常而失败。Bigquery 是否仅执行以运行 SQL 命令而不用于调用过程或函数。

谢谢,

【问题讨论】:

    标签: google-bigquery google-groups google-cloud-data-fusion cdap


    【解决方案1】:

    Bigquery 存储过程使用不同的调用签名,如此处所述 https://www.google.com/amp/s/cloudblog.withgoogle.com/products/data-analytics/command-and-control-now-easier-in-bigquery-with-scripting-and-stored-procedures/amp/

    请注意,该功能仍处于测试阶段,未来可能会发生变化。 我在该示例之后发现的一件事是通过 jdbc 我必须将所有语句作为一个 Bloc 执行,而不是一个一个地执行

    DECLARE target_employee_id INT64 DEFAULT 9;
    DECLARE employee_hierarchy ARRAY<INT64>;
    CALL dataset.GetEmployeeHierarchy(target_employee_id, employee_hierarchy)
    SELECT target_employee, employee_hierarchy;
    

    【讨论】:

    • 我在 Bigquery 中声明了一个没有参数的过程,并尝试使用 Cloud Datafusion Bigquery 执行组件 SQL 命令调用相同的过程。代码:创建或替换过程 proc_name 开始更新表 set empid=40 end; ..然后使用 call proc_name 调用。我可以在 Bigquery 工具中执行这些语句。但是当从 Datafusion 调用相同的调用语句时,它会因 Null 异常而失败。任何人都可以帮助解决这个问题。
    • 我认为它实际上是在执行更新,只是驱动程序正在寻找不存在的结果集。尝试在调用语句后添加一个虚拟选择语句以确认
    • 我可以通过在调用语句中添加项目名称.datasetname.tablename 来执行 Datafusion 的过程。谢谢您的帮助。
    猜你喜欢
    • 2011-11-07
    • 2012-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-14
    • 2011-08-31
    • 1970-01-01
    • 2010-09-15
    相关资源
    最近更新 更多