我正在从云存储和通过流媒体上传文件到BigQuery,我想知道当BigQuery完成加载表中的数据时,它是否可以调用我选择的端点。
例如,来自Storage的文件:
load_job = bq_client.load_table_from_uri(
source_uris=uri,
destination=destination_table,
job_config=job_config, endpoint="http://my-endpoint.com"
)
或者,例如,在流媒体中:
rows_to_insert = [
{ "name": "John", "age": 22},
{"name": "Will", "age": 33},
]
errors = bq_client.insert_rows_json(table_id, rows_to_insert, endpoint="http://my-endpoint.com)
在我的端点,我有一个python代码,我想在BigQuery中插入数据时执行。
插入数据(流或从存储)的代码不应该等待BigQuery确认数据已经插入,这应该由BigQuery调用端点来完成。
有办法做到这一点吗?
对于这个用例,您可以使用Eventarc。Eventarc根据审计日志捕获事件,并生成一个事件来调用Cloud Run和Cloud Functions V2(还有云工作流,还有更多端点即将到来)。
您必须在事件中检查状态是否为完成。您应该为每个状态更新接收一个事件。
另一个解决方案是从Cloud Workflow触发您的加载作业,并使用阻塞的BigQuery作业插入连接器等待加载作业结束,然后再进入下一步