如何添加“字符串数组”作为BigQuery的架构值

Vik*_*ari 3 python google-bigquery google-cloud-platform

我想将字符串值数组存储在BigQuery的单个列中。为此,我需要先创建一个具有适当架构的表。用于阵列的模式标识符是ARRAY<T>其中T的数据类型。

例如:TINT64as 替换ARRAY<INT64>可在该列中存储64位整数数组。除了存储字符串值,我应该如何获得相同的效果?我已经尝试过STRINGVARCHARCHAR

只需提及:我正在使用最新的google-cloudpython包

BigQuery架构的文档参考

Vik*_*ari 6

为了添加具有数组数据的列,您需要将该列的模式定义为REPEATED。因此,示例模式最终为:

{
  'name': 'array_of_strings',
  'type': 'STRING',
  'mode': 'REPEATED'
},{
  'name': 'array_of_floats',
  'type': 'FLOAT',
  'mode': 'REPEATED'
}
Run Code Online (Sandbox Code Playgroud)

这使字段保留数组值。

注意:请注意,如果这是表的架构,则不能使用大查询的CSV导入功能,因为这是CSV文件格式的限制。您将需要使用jsonavro格式。

参考GitHub问题


Mik*_*ant 4

为此,我需要首先创建一个具有正确架构的表。

只需在 Web UI 中使用新的目标表运行即可 - 创建所需的架构

#standardSQL
SELECT ARRAY<STRING>[] AS array_of_strings
Run Code Online (Sandbox Code Playgroud)