我正在尝试使用templateSuffix将数据流式传输到Big Query,并使用Java API将数据附加到表名称 但我得到以下例外:
com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 Bad Request
{
"code" : 400,
"errors" : [ {
"domain" : "global",
"location" : "suffix",
"locationType" : "other",
"message" : "Table name should only contain _, a-z, A-Z, or 0-9.",
"reason" : "invalid"
} ],
"message" : "Table name should only contain _, a-z, A-Z, or 0-9."
}
我使用API作为:
String tableName = "testTable$201701"; // 201701 is partition_id
TableDataInsertAllRequest request = new TableDataInsertAllRequest()
.setIgnoreUnknownValues(true)
.setRows(rows);
// add a template suffix
request.setTemplateSuffix(templateSuffix);
return bigquery
.tabledata()
.insertAll(projectId, datasetId, tableName, request)
.execute();
表上只有templateSuffix或只有日期分区才能正常工作。但不是两者在一起。任何想法如何解决这个问题?
答案 0 :(得分:1)
有两个单独的用例 - 将数据流式传输到每日分片表并将数据流式传输到每日分区表
每日date-sharded tables是那些每天都有单独表格的day partitioned table,而template table是一个表,但是在“内部”分区
您可以在其中任何一个流式传输
要实现流式传输 - 表必须存在。因此,为了避免为每个新的一天创建新表 - 使用{{3}}(如果您有分区表,则不需要)。
因此,要么流式传输到日分区表的特定分区,要么流式传输以使用模板表分隔每日分片表
不是两个在同一时间!