BigqueryIO Невозможно записать в таблицу с разделением по дате

Я следую инструкциям в следующем посте, чтобы написать таблицу с разделением по датам в BigQuery. Я использую сериализуемую функцию для сопоставления окна с расположением раздела, используя $ синтаксис и я получаю следующую ошибку:

Invalid table ID \"table$19700822\". 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;
      }
    }));

1 ответ

Решение

Убедитесь, что таблица, к которой вы пытаетесь получить доступ, уже существует. Вы не можете создать таблицу с "$" в ней, и вы используете "создать при необходимости", так что ваш код может в конечном итоге создать таблицу в дополнение к попытке записи в нее.

Другие вопросы по тегам