【问题标题】:Google Standard SQL UDF - writing to BigQueryGoogle 标准 SQL UDF - 写入 BigQuery
【发布时间】:2017-03-27 20:11:08
【问题描述】:

我的问题是关于从 BigQuery 标准 SQL UDF 写入 BigQuery。

我有一个要求,我必须在标准 SQL 中进行一些计算。在这些计算之后,我必须将这些计算数据保存到 BigQuery。

从标准 SQL UDF 将数据插入 BigQuery 的标准方法是什么?

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    基本上,您可以使用 UDF 发出一行或多行。在标准 UDF 中,如果要发出行,则必须发出 Array 和 Struct。

    Migration guide 中有一个示例将数据添加到不存在的列。

    向下滚动至:Functions operate on values rather than rows。在旧版 SQL 中,JavaScript 函数对表中的行进行操作。在标准 SQL 中,如上例所示,JavaScript 函数对值进行操作。要使用标准 SQL 将行值传递给 JavaScript 函数,请定义一个函数,该函数采用与表相同的行类型的结构。

    如果您最终发出一个包含重复数据的结构,您可以将查询结果写入新表。那是你的插入。

    这意味着您需要以这样的方式创建查询结果,将查询结果写入目标表,并成为您的插入。由于 BQ 不提供来自 UDF 的严格的 INSERT 声明。

    【讨论】:

      【解决方案2】:

      从标准 SQL UDF 中将数据插入大查询的标准方法是什么

      no way 可以从 UDF 本身将数据插入 BigQuery
      将 UDF 视为任何其他常规函数,但您可以使用 JavaScript 或 SQL 创建自己的函数。
      您可能知道 - 这些没有任何允许保存到 BigQuery 的 BigQuery 函数。
      相反,您可以将查询结果保存到目标表中 - 即 BigQuery 中的 standard way

      以下是相关的 UDF 限制,让您了解在 UDF 中什么是不可行的

      • DOM 对象 Window、Document 和 Node 以及需要它们的函数不受支持。
      • 不支持依赖本机代码的 JavaScript 函数。
      • JavaScript 中的按位运算仅处理最重要的 32 位。
      • 由于其不确定性,调用用户定义函数的查询不能使用缓存结果。
      • 您不能引用 UDF 中的表。

      https://cloud.google.com/bigquery/docs/reference/standard-sql/user-defined-functions查看更多信息

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-02-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-12
        相关资源
        最近更新 更多