创建中间重复字符串,并在 BigQuery 中传递给 UDF

Posted

技术标签:

【中文标题】创建中间重复字符串,并在 BigQuery 中传递给 UDF【英文标题】:Create intermediate repeated string, and pass to UDF in BigQuery 【发布时间】:2015-11-04 20:30:36 【问题描述】:

我的最终目标是将重复的字符串字段传递到 BigQuery UDF,以创建可变参数 UDF 的形式。

有没有更好的办法:

SELECT output from myUDF(SELECT split(concat(field1, ':', field2, ...), ':') ...)

例如,如果能够有一个REPEATED 内置构造函数,那就太好了:

SELECT output from myUDF(SELECT REPEATED(field1, field2) as fields ...)

【问题讨论】:

我认为你应该把这个逻辑移到 UDF 中 很公平 - 但仍然会保留对 CONCAT 的调用,然后很容易忘记分隔符。 没有 CONCAT,你应该这样做 - 从 myUDF 中选择输出(选择 field1,field2 ...)。所有逻辑都转到 UDF。除非您首先需要进行聚合:) 具体示例将有助于解决此问题 【参考方案1】:

谢谢 - 我们一直在考虑在我们启动标量函数时对可变参数样式的支持是否有用。在我们规划该功能时,听到用户会发现这样一个引人注目的功能会很有帮助。

您发布的解决方法可能是您目前最好的选择。

【讨论】:

谢谢 - 事实上,这种可变参数样式 UDF 的动机是由于缺少标量函数:我想将相同的函数应用于来自不同表的多个公共字段(我将使用示例验证地址)。与其为每个输入模式编写一个 UDF,我更愿意构造一个“查找”子查询,它一次适用于所有地址字段,并提供“更正”的输出。尽管如此,拥有可变参数标量还是很有用的,因为我们可以沿不同的维度(例如按客户)验证多个地址(例如每个交易的地址)。

以上是关于创建中间重复字符串,并在 BigQuery 中传递给 UDF的主要内容,如果未能解决你的问题,请参考以下文章

传递方法作为参数[重复]

如何在 google bigquery 数据集中创建动态表并在 tableau 中访问?

如何拆分每 6 个字符的列数据并在 BigQuery 中形成一行

Bigquery:UNNEST 重复与展平表性能

Bigquery 中的多个重复结构

从外部表读取与加载数据并在 Bigquery 中读取