You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在BigQuery中创建类型别名,实现UDF中结构体的复用?

在BigQuery中为结构体类型创建别名以复用在多个UDF中

完全可以通过DECLARE TYPE语句为复杂结构体创建类型别名,以此避免在多个UDF中重复编写完整的结构体定义,你给出的写法是正确的。

下面是一个可直接运行的完整示例:

-- 定义结构体类型别名
DECLARE TYPE mystruct = STRUCT<key STRING, value STRUCT<int_value INT64, float_value FLOAT64, string_value STRING>>;

-- 使用别名定义第一个临时函数
CREATE TEMP FUNCTION foo(x mystruct) 
RETURNS STRING
AS (
  CONCAT("Key: ", x.key, ", Int Value: ", CAST(x.value.int_value AS STRING))
);

-- 使用别名定义第二个临时函数
CREATE TEMP FUNCTION bar(x mystruct) 
RETURNS FLOAT64
AS (
  x.value.float_value * 2.0
);

-- 测试UDF调用
WITH sample_data AS (
  SELECT STRUCT("test_key" AS key, STRUCT(10 AS int_value, 3.14 AS float_value, "sample" AS string_value) AS value) AS data
)
SELECT foo(data) AS foo_result, bar(data) AS bar_result
FROM sample_data;

需要注意几个细节:

  • 该特性仅在BigQuery的脚本模式下生效,确保你的查询是作为脚本运行(而非单条查询)
  • 类型别名的作用域仅限当前脚本会话,同一段脚本内的所有临时函数都可以直接引用
  • 后续如果需要修改结构体结构,只需调整DECLARE TYPE语句中的定义,所有引用该别名的UDF都会自动适配,大幅减少重复修改的工作量

内容的提问来源于stack exchange,提问作者Adam B.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 14:49:53