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

如何通过BigQuery Client API动态创建Array<String>及BQ例程参数

解决BigQuery客户端动态创建例程时的数组类型定义问题
  • 用bigquery.ArrayType构造数组类型
    别直接用bigquery.enums里的array枚举值,而是用客户端提供的ArrayType类包装基础类型,这样能生成BigQuery认可的数组类型标识。示例:

    from google.cloud import bigquery
    
    # 构造INT64数组类型
    int_array_type = bigquery.ArrayType(bigquery.enums.SqlTypeNames.INT64)
    # 构造STRING数组类型
    string_array_type = bigquery.ArrayType(bigquery.enums.SqlTypeNames.STRING)
    

    创建例程参数时,直接传入这个构造好的类型对象就行。

  • 直接写类型字符串
    要是习惯用字符串指定类型,BigQuery的数组格式是ARRAY<基础类型>,比如:

    # INT64数组的字符串标识
    int_array_str = "ARRAY<INT64>"
    # STRING数组的字符串标识
    string_array_str = "ARRAY<STRING>"
    

    把这个字符串赋值给参数的parameter_type字段,BigQuery也能正确识别。

  • 完整的例程创建示例
    下面是一个动态创建带数组参数的标量函数例程的完整代码:

    from google.cloud import bigquery
    
    client = bigquery.Client()
    
    # 定义包含数组类型的参数列表
    routine_params = [
        bigquery.RoutineParameter(
            name="input_ids",
            parameter_type=bigquery.ArrayType(bigquery.enums.SqlTypeNames.INT64),
            mode="IN"
        ),
        bigquery.RoutineParameter(
            name="input_strings",
            parameter_type="ARRAY<STRING>",
            mode="IN"
        )
    ]
    
    # 配置例程
    routine_config = bigquery.Routine(
        routine_type="SCALAR_FUNCTION",
        language="SQL",
        definition_body="""
            CREATE FUNCTION `{project}.{dataset}.test_array_func`(input_ids ARRAY<INT64>, input_strings ARRAY<STRING>)
            RETURNS STRING
            LANGUAGE SQL
            AS $$
                SELECT CONCAT('IDs count: ', ARRAY_LENGTH(input_ids), ', Strings count: ', ARRAY_LENGTH(input_strings))
            $$
        """.format(project=client.project, dataset="your_dataset")
    )
    
    # 执行创建(如果已存在则覆盖)
    routine = client.create_routine(
        "your_project.your_dataset.test_array_func",
        routine_config,
        exists_ok=True
    )
    

内容的提问来源于stack exchange,提问作者Harshith S H

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 05:35:14