BigQuery表列

问题描述 投票:0回答:2

我在json之下

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

我将如何定义attribute_values列?

目前我定义为String并在通过Dataflow插入时出错

"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
  }
google-bigquery google-cloud-dataflow
2个回答
1
投票

我将如何定义attribute_values列?

您可以按如下方式创建表格:

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

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

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'])
);

enter image description here

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


0
投票

您有一个带有attribute_value列的BQ表和数据类型字符串,现在您想要更改该列的数据类型。您可以选择2个选项

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

请查看此文档Changing a column data type以获取更多详细信息

© www.soinside.com 2019 - 2024. All rights reserved.