Google 标准 SQL UDF - 写入 BigQuery
Posted
技术标签:
【中文标题】Google 标准 SQL UDF - 写入 BigQuery【英文标题】:Google Standard SQL UDF - writing to BigQuery 【发布时间】:2017-03-27 20:11:08 【问题描述】:我的问题是关于从 BigQuery 标准 SQL UDF 写入 BigQuery。
我有一个要求,我必须在标准 SQL 中进行一些计算。在这些计算之后,我必须将这些计算数据保存到 BigQuery。
从标准 SQL UDF 将数据插入 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查看更多信息
【讨论】:
以上是关于Google 标准 SQL UDF - 写入 BigQuery的主要内容,如果未能解决你的问题,请参考以下文章
JS UDF 返回标准 SQL / BigQuery 的结构并创建两列
如何使用标准 BIP 参数在 BI Publisher 中调用 SQL Server 存储过程
使用外部 UDF 库运行 BigQuery Standard SQL