BigQuery Table 列

BigQuery Table Column

我有以下json

{attribute_values=[{key=PO, values=[234234, 21]}, {key=POReceipt, values=[ABC]}]} 

How i will define attribute_values Column?

目前我定义为字符串并在通过数据流插入时出错

"errorMessage": "{\n  \"errors\" : [ {\n    \"debugInfo\" : \"\",\n    \"location\" : \"attribute_values\",\n    \"message\" : \"Array specified for non-repeated field.\",\n    \"reason\" : \"invalid\"\n  } ],\n  \"index\" : 0\n}",
    "stacktrace": null
  }

How I will define attribute_values Column?

您可以按如下方式创建 table:

-- create table
 CREATE TABLE IF NOT EXISTS  `projectId.datasetId.tableName`
 (   
  attribute_values STRUCT <key String, values ARRAY<STRING>>
 )

您可以使用下面的 INSERT sql 示例来测试如何填充您的 table

INSERT INTO 
    `projectId.datasetId.tableName` (attribute_values)
values (
STRUCT <key String, values ARRAY<STRING>>('PO', ['234234', '21'])
);

INSERT INTO 
    `projectId.datasetId.tableName` (attribute_values)
values (
STRUCT <key String, values ARRAY<STRING>>('POReceipt', ['ABC'])
);

要通过代码执行此操作,您可以查看此 了解更多详细信息。

您有一个 BQ table,列 attribute_value 的数据类型为字符串,现在您想更改该列的数据类型。有2个选项可供选择

  1. 使用查询,选择 table 中的所有列,然后转换要更改的列,然后将其写入目标 table(尽管转换不允许您转换从字符串到 array/struct Casting)
  2. 导出您的数据(到 GCS)然后将其加载到新的 table

请查看此文档Changing a column data type了解更多详情