在BigQuery中封装复杂代码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在BigQuery中封装复杂代码相关的知识,希望对你有一定的参考价值。

我最近不得不从其他BQ表中生成BQ表。逻辑相当复杂,我最终编写了一个复杂的SQL语句。

在Oracle SQL中,我会编写一个PL / SQL过程,将逻辑分解为单独的部分(最常见的是合并语句)。在某些情况下,我会将一些代码封装到函数中。生成的过程将是一系列DML语句,易于阅读和维护。

但是BQ没有类似的东西。 UDF只是临时的,不能存储在-say-视图中。

问题:我正在寻找使复杂的BQ SQL代码更具模块化和可读性的方法。有什么方法可以做到这一点吗?

答案

目前可用的选项是使用WITH Clause

WITH子句包含一个或多个已命名的子查询,其输出充当临时表,后续SELECT语句可以在任何子句或子句中引用

我仍然认为User-Defined Functions是一个非常好的选择。 JS和SQL UDF在BigQuery中可用,并且从已知的BigQuery团队正在努力引入permanent UDF即将推出

同时,您可以将JS UDF的主体存储为js库,并使用OPTIONS部分在UDF中引用它。请参阅上面的参考资料中的Including external libraries

以上是关于在BigQuery中封装复杂代码的主要内容,如果未能解决你的问题,请参考以下文章

代码片段使用复杂的 JavaScript 在 UIWebView 中插入 HTML?

VSCode自定义代码片段14——Vue的axios网络请求封装

VSCode自定义代码片段14——Vue的axios网络请求封装

VSCode自定义代码片段14——Vue的axios网络请求封装

VsCode 代码片段-提升研发效率

关于代码片段的时间复杂度