简体   繁体   English

如何在 BigQuery UDF 的 Select 语句中使用字符串参数?

[英]How to use string argument in Select statement in BigQuery UDF?

This is my code for Google BigQuery UDF.这是我的 Google BigQuery UDF 代码。

CREATE OR REPLACE FUNCTION `my_dataset.ST_EXTENT_TABLE`
(tableName STRING)
RETURNS STRUCT<xmin FLOAT64, ymin FLOAT64, xmax FLOAT64, ymax FLOAT64>
AS (
    WITH data AS ( SELECT geom FROM tableName)
    SELECT ST_EXTENT(geom) AS box FROM data
);

In "SELECT geom FROM tableName", tableName should be replaced with passed value.在“SELECT geom FROM tableName”中,tableName 应替换为传递的值。

Any idea?任何的想法?

According to your requirement, it is not possible to dynamically pass the table name in UDF.根据您的要求,无法在 UDF 中动态传递表名。 As an alternative you can write a dynamic sql query where you can pass the table name dynamically.作为替代方案,您可以编写一个动态 sql 查询,您可以在其中动态传递表名。 Using Execute Immediate you can execute those dynamic queries and get the result.使用立即执行,您可以执行这些动态查询并获得结果。

You can try the below sample query.您可以尝试以下示例查询。

Query:询问:

DECLARE query String;
SET
  query = '''with cte as (
    select filename from %s limit 10
)
select * from cte''';
EXECUTE IMMEDIATE
  FORMAT(query,"bigquery-public-data.bbc_news.fulltext")

Output: Output:

在此处输入图像描述

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM