BigQuery - Ежедневное обновление данных, как уменьшить перерывы в работе панели мониторинга Data Studio в процессе

У меня есть таблица BigQuery. Вся таблица будет обновляться каждый день. Итак, что я делаю сейчас, это

  • Загрузите самые свежие данные в облачное хранилище.
  • Удалить текущую таблицу
  • Создайте новую таблицу с таким же именем
  • Загрузите данные из Cloud Storage в новую таблицу (с таким же именем)

Проблемы в том, что у меня есть панель инструментов студии данных, использующая ту же таблицу, что и источник данных. Во время описанного выше процесса информационная панель будет прервана, например, будут отображаться пустые данные или меньше, когда они были просто удалены, но не завершили загрузку новых данных.

Какую простую передовую практику мне следует сделать, чтобы избежать прерывания работы панели инструментов студии данных?

Спасибо!


person searain    schedule 16.05.2019    source источник
comment
Не забудьте включить BI Engine для действительно быстрых результатов. В бета-версии.   -  person Felipe Hoffa    schedule 17.05.2019


Ответы (3)


Почему вы удаляете таблицу?

Вы можете полностью запустить загрузку с усечением.

$ bq help load

--[no]replace: If true erase existing contents before loading new data.
    (default: 'false')

Если вы используете API:

writeDisposition

[Необязательно] Задает действие, которое происходит, если целевая таблица уже существует. Поддерживаются следующие значения: WRITE_TRUNCATE: если таблица уже существует, BigQuery перезаписывает данные таблицы. [...]

person Felipe Hoffa    schedule 16.05.2019
comment
Спасибо! Прямо сейчас, как предлагает Джон ниже, я запускаю обновление рано утром, когда почти никто не пользуется панелью управления. Но все равно лучше не отвлекаться. При усечении и загрузке из облачного хранилища все равно будут прерывания, верно? Но я предполагаю, что это будет быстрее, чем удаление и загрузка, которые я использую сейчас. Или, как предложил Михаил, усечение, перезапись и усечение из BigQuery будут наименьшими помехами, верно? Мой старый способ - это удаление и потоковая передача (без промежуточного этапа облачного хранилища) новых данных. Прерывания были слишком долгими. - person searain; 17.05.2019
comment
Это атомарная операция в один шаг, если вы загружаете с усечением на - person Felipe Hoffa; 17.05.2019

Попробуйте ниже

  1. Не удалять начальную таблицу
  2. Загрузите данные из Cloud Storage в новую таблицу (с другим именем)
  3. Скопируйте новую таблицу в исходную с перезаписью / усечением
person Mikhail Berlyant    schedule 16.05.2019

Это может быть тривиальный ответ, но почему вы не можете добавить в свою таблицу что-то вроде столбца DateTimeAdded. Затем вместо удаления текущей таблицы и ее воссоздания просто добавьте новые данные из облачного хранилища с более новым значением DateTimeAdded, и как только это будет сделано, удалите все, что не является текущим DateTimeAdded?

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

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

person Jon    schedule 16.05.2019