BigQuery的tableDataInsertAll请求insertId字段设置规则咨询
关于BigQuery tableDataInsertAllRequest的insertId字段问题解答
1. insertId不需要设置为目标列名,和表字段无绑定关系
insertId是BigQuery提供的行级去重标识,仅用于请求重试时避免重复写入数据,和你表的实际字段没有任何绑定要求。
你当前示例中将insertId填为固定字符串ClientID是错误用法:
- 如果你需要启用去重能力,应该将insertId设置为当前行的唯一标识值,比如本场景下对应ClientID的具体取值(如示例中的
55415),而不是列名 - 如果你不需要去重能力,该字段可以直接省略,不会影响正常写入
- 如果所有行都填写相同的insertId值,会导致后续请求的行被判定为重复数据被丢弃。
2. insertId和请求内JSON对象无强制关联要求
BigQuery不会校验insertId和json字段内的内容是否匹配,但是json字段的内容需要符合目标表的schema规则:
- 如果表schema中某字段设置为
REQUIRED(非空)模式,json中必须包含该字段且值类型匹配 - 如果字段为
NULLABLE(可空)模式,json中可以省略该字段,BigQuery会自动填充NULL值
正确写法参考
{ "kind": "bigquery#tableDataInsertAllRequest", "skipInvalidRows": false, "ignoreUnknownValues": false, "rows": [ { "insertId": "55415", // 填入当前行的唯一标识值即可,不需要和列名一致 "json": { "ClientID": "55415", "Client": "LANGA BRANCH", "Project": "Customer Visits", "Developer": "Bryan", "Hours": "300" } } ] }
内容的提问来源于stack exchange,提问作者user17311472
相关产品推荐
相关产品推荐

