Skip to content

bigquery.ArrayQueryParameter should be able to accept structs as elements of the array #2906

@tswast

Description

@tswast

I commented that setting the types on array query parameters needs to be recursive since the array could contain structs. Note that arrays cannot contain arrays (the workaround is to contain a struct which can then contain an array).

It's not clear how one would do this with the current ArrayQueryParameter constructor.

bigquery.ArrayQueryParameter(
    name='myarray', 
    type='STRUCT',  # Note: this isn't enough information to construct the type object.
    values=?  # What would go here? Dictionaries? That doesn't match other uses of StructQueryParameter.
)

Maybe we need to change how array query parameters are constructed? Maybe it should look more like the StructQueryParameter constructor?

bigquery.ArrayQueryParameter(name, *sub_params)

It'd be a pain for scalar values and the names would have to be ignored on the sub_params if provided, but it's more flexible.

An aside

I'd actually love if we could get rid of all the XQueryParameter classes and use lists, dicts, and ints, floats, etc. But I see that it might be ambiguous for some types especially DATETIME (no time zone) vs TIMESTAMP (stored as UTC time).

Metadata

Metadata

Labels

api: bigqueryIssues related to the BigQuery API.priority: p1Important issue which blocks shipping the next release. Will be fixed prior to next release.type: bugError or flaw in code with unintended results or allowing sub-optimal usage patterns.type: feature request‘Nice-to-have’ improvement, new feature or different behavior or design.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions