Загрузка данных в разделенную таблицу Biqquery через Google Dataflow / Beam с помощью write_truncate

Таким образом, существующая настройка, которую мы использовали для создания новой таблицы на каждый день, отлично работала с » WRITE_TRUNCATE «, однако, когда мы обновили наш код, чтобы использовать секционированную таблицу, несмотря на наше задание потока данных, оно не будет работать с write_truncate.

Он работает отлично, с настройкой записи, установленной как «WRITE_APPEND» (насколько я понял, из beam, возможно, он пытается удалить table, а затем воссоздать его), поскольку я предоставляю декоратор таблицы, он не может создать новую таблицу.

Пример фрагмента с использованием кода Python:

beam.io.Write('Write({})'.format(date), beam.io.BigQuerySink(output_table_name + '$' + date, create_disposition=beam.io.BigQueryDisposition.CREATE_NEVER, write_disposition=beam.io.BigQueryDisposition.WRITE_TRUNCATE)

что дает ошибку:

Идентификаторы таблиц должны быть буквенно-цифровыми.

поскольку он пытался воссоздать таблицу, и мы указываем декоратор раздела в аргументе.

Вот некоторые из вещей, которые я пробовал:

  1. Обновление write_disposition как WRITE_APPEND, хотя оно работает, не выполняет цели, поскольку повторное выполнение для той же даты приведет к дублированию данных.
  2. С использованием

bq --apilog /tmp/log.txt load --replace --source_format=NEWLINE_DELIMITED_JSON 'table.$20160101' sample_json.json

команда, чтобы увидеть, могу ли я наблюдать какие-либо журналы о том, как на самом деле работает усечение, на основе ссылка, которую я нашел.

  1. Пробовал некоторые другие ссылки, но это как хорошо использует WRITE_APPEND.

Есть ли способ записи в многораздельную таблицу из задания потока данных с использованием метода write_truncate?

Сообщите мне, если требуются какие-либо дополнительные сведения. Спасибо

Ошибка при создании таблицы с помощью декоратора раздела может быть ошибкой. Позвольте мне проверить и вернуться к вам.   —  person Sirius    schedule 22.02.2017

Можете ли вы предоставить трассировку стека для ваших «идентификаторов таблиц должны быть буквенно-цифровыми»?   —  person Sirius    schedule 22.02.2017

Я проконсультировался с разработчиком IO. Похоже, сейчас это не поддерживается. : /   —  person Sirius    schedule 22.02.2017

См. также:  Невозможно подключить базу данных SQL Azure из Python с помощью Key Vault Secret

Спасибо за ответ, Пабло :), я только надеялся, что он не удалит таблицу для TRUNCATE, а просто очистит все строки для этого раздела, но я полагаю, что это не работает таким образом луч.   —  person Sirius    schedule 22.02.2017

Понравилась статья? Поделиться с друзьями:
IT Шеф
Комментарии: 1
  1. Sirius

    Похоже, в настоящее время это не поддерживается. Благодарим @Pablo за информацию, полученную от разработчика IO.

    Согласно документации по Beam на странице Github, их страница JIRA будет уместным запросить такую ​​функцию. Я бы порекомендовал подать здесь запрос функции и разместить ссылку в комментарии здесь, чтобы другие участники сообщества могли продолжить и выразить свою поддержку.

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: