Я хочу создать работу, которая будет работать, скажем, в 2 часа ночи каждое утро. Это задание должно создать таблицу BigQuery, прочитав мои файлы из корзины Cloud Storage. Как я могу этого добиться?
Какой формат файла? Как вы генерируете имя таблицы? Сколько у вас файлов? Вы хотите добавить к существующим таблицам или усечь их? — person nsk schedule 21.05.2020
Файлы экспортируются из хранилища (.export_metadata). Это мои экспортные подколлекции firestore. У меня есть 4 подколлекции. Каждая из этих подколлекций содержит по 419 документов. Я хочу обрезать существующую таблицу и перезагрузить ее. — person nsk schedule 21.05.2020
Вы можете напрямую импортировать резервную копию хранилища данных в BigQuery. Настройте задание загрузки с исходным форматом, равным
DATASTORE_BACKUP
(да даже для firestore) и writeDisposition вWRITE_TRUNCATE
Вы можете обернуть это в облачную функцию. Вы можете использовать непосредственно API или клиентские библиотеки. Если вам нужен образец кода, сообщите мне свой язык, я посмотрю, что я могу для вас сделать.
ИЗМЕНИТЬ
Вам необходимо импортировать эти зависимости в свой package.json.
Затем здесь функция со значениями статики. Вы можете создать что-то более динамичное, если хотите (например, прочитав параметр функции).
А затем разверните свою функцию следующим образом (здесь, в частном режиме)
Мне нужна помощь в написании облачной функции. Можете ли вы дать мне образец облачной функции, которую я могу использовать для выполнения команды bq load? Приведенная ниже команда bq load работает через интерфейс командной строки: bq —location = asia-east1 load \ —replace —source_format = DATASTORE_BACKUP \ firestore.nric_test \ gs: //gcp_firestore_ae1/export_20200521/all_namespaces/kind_nric_img_imgata_namespaces. — person nsk; 21.05.2020
Какой язык вы предпочитаете? Идти? Узел? Python? Скоро Java, но я тоже могу! — person nsk; 21.05.2020
Узел или Java в порядке — person nsk; 22.05.2020
Отредактировано версией Node @NehaShaikh — person nsk; 22.05.2020
Большое спасибо @guillaume blaquiere! — person nsk; 23.05.2020
есть идеи, как я могу запланировать ежедневное выполнение этой функции и экспорт данных в мой набор данных BigQuery в asia-east1? Мне нужно создать и запустить эту облачную функцию в местоположении asia-east1. Однако в настоящее время я вижу, что asia-east1 не поддерживается облачными функциями
@guillaume blaquiere — person nsk; 26.05.2020
Вам все равно, где запускается функция! Функция просто запускает задачу BigQuery для импорта данных из GCS в таблицу. Расположение функции не имеет значения! — person nsk; 26.05.2020
У меня есть еще 2 вопроса: 1. Когда я тестирую приведенный выше код как облачную функцию, он выдает ошибку: Ошибка: выполнение функции не выполнено. Подробности: res.send не является функцией 2. Как настроить ежедневное выполнение этой функции? @guillaume blaquiere — person nsk; 26.05.2020
Как вы тестируете функцию? Локально? На облачной функции? Если на месте, вы можете показать мне, как вы это делаете? — person nsk; 26.05.2020
Я тестирую облачную функцию — person nsk; 26.05.2020
Он отлично работает на моей стороне. Вы уверены, что у вас нет ошибки? В моем примере это не рассматривается. — person nsk; 26.05.2020
После того, как я закомментирую строку: res.send (
Job ${job.id} completed.
); функциональный тест успешен для облачных функций — person nsk; 26.05.2020Таблица BigQuery, созданная с помощью этой облачной функции, добавляет дополнительный ключ «. app ‘,’ ключ. путь ‘,’ ключ. kind ‘,’ ключ. имя ‘,’ ключ. id ‘для каждого из моих полей типа данных’ Record ‘. Все они имеют нули. Я не хочу иметь эти дополнительные поля для каждого типа данных «Запись». Есть ли способ удалить их из моей таблицы BigQuery? Подробную схему BigQuery см. На странице stackoverflow.com/questions/62254007. @guillaume blaquiere — person nsk; 08.06.2020
@guillaumeblaquiere могу ли я получить версию для Python? — person nsk; 18.08.2020
@soheshdoshi, Создайте новый вопрос и я смогу адаптировать код на Python. Это невозможно в комментариях, и это не связано с вопросом здесь! — person nsk; 18.08.2020