BigqueryIO 无法写入日期分区 Table
BigqueryIO Unable to Write to Date-Partitioned Table
我正在按照以下 中的说明写入 BigQuery 中的日期分区 table。我正在使用可序列化函数将 window 映射到使用 $
语法的分区位置,但出现以下错误:
Invalid table ID \"table700822\". Table IDs must be alphanumeric (plus underscores) and must be at most 1024 characters long.
我是不是漏掉了什么?
编辑添加代码:
p.apply(Window.<TableRow>into(FixedWindows.of(Duration.standardDays(1))))
.apply(BigQueryIO.Write
.named("Write")
.withSchema(schema)
.withWriteDisposition(BigQueryIO.Write.WriteDisposition.WRITE_APPEND)
.withCreateDisposition(BigQueryIO.Write.CreateDisposition.CREATE_IF_NEEDED)
.to(new SerializableFunction<BoundedWindow, String>() {
public String apply(BoundedWindow window) {
String dayString = DateTimeFormat.forPattern("yyyyMMdd")
.withZone(DateTimeZone.UTC)
.print(((IntervalWindow) window).start());
return "project_id:dataset.table$" + dayString;
}
}));
确保您尝试访问的 table 已经存在。您不能创建其中包含“$”的 table,而您正在使用 "create if needed",因此您的代码可能最终会创建 table 除了尝试写入它。
我正在按照以下 $
语法的分区位置,但出现以下错误:
Invalid table ID \"table700822\". Table IDs must be alphanumeric (plus underscores) and must be at most 1024 characters long.
我是不是漏掉了什么?
编辑添加代码:
p.apply(Window.<TableRow>into(FixedWindows.of(Duration.standardDays(1))))
.apply(BigQueryIO.Write
.named("Write")
.withSchema(schema)
.withWriteDisposition(BigQueryIO.Write.WriteDisposition.WRITE_APPEND)
.withCreateDisposition(BigQueryIO.Write.CreateDisposition.CREATE_IF_NEEDED)
.to(new SerializableFunction<BoundedWindow, String>() {
public String apply(BoundedWindow window) {
String dayString = DateTimeFormat.forPattern("yyyyMMdd")
.withZone(DateTimeZone.UTC)
.print(((IntervalWindow) window).start());
return "project_id:dataset.table$" + dayString;
}
}));
确保您尝试访问的 table 已经存在。您不能创建其中包含“$”的 table,而您正在使用 "create if needed",因此您的代码可能最终会创建 table 除了尝试写入它。