Google cloud platform 如何安排从BigQuery表到云存储的导出?
我已经成功地在BigQuery中安排了查询,结果保存为数据集中的表。我在中看到了很多关于调度数据传输到BigQuery或云存储的信息,但是我还没有找到任何关于调度从BigQuery表导出到云存储的信息Google cloud platform 如何安排从BigQuery表到云存储的导出?,google-cloud-platform,google-bigquery,google-cloud-storage,Google Cloud Platform,Google Bigquery,Google Cloud Storage,我已经成功地在BigQuery中安排了查询,结果保存为数据集中的表。我在中看到了很多关于调度数据传输到BigQuery或云存储的信息,但是我还没有找到任何关于调度从BigQuery表导出到云存储的信息 是否可以安排将BigQuery表导出到云存储,以便我可以进一步安排通过Google BigQuery Data Transfer Services将其发送给我?没有用于安排BigQuery表导出的托管服务,但一种可行的方法是将与结合使用 Cloud函数将包含从BigQuery表导出到云存储所需的代
是否可以安排将BigQuery表导出到云存储,以便我可以进一步安排通过Google BigQuery Data Transfer Services将其发送给我?没有用于安排BigQuery表导出的托管服务,但一种可行的方法是将与结合使用 Cloud函数将包含从BigQuery表导出到云存储所需的代码。有多种编程语言可供选择,如Python、Node.JS和Go 云调度程序将以cron格式定期向云函数发送HTTP调用,该函数将被触发并以编程方式运行导出 作为一个示例,更具体地说,您可以遵循以下步骤:
导入它。然后,您可以使用main.py中的以下代码创建从BigQuery到云存储的导出作业:
# Imports the BigQuery client library
from google.cloud import bigquery
def hello_world(request):
# Replace these values according to your project
project_name = "YOUR_PROJECT_ID"
bucket_name = "YOUR_BUCKET"
dataset_name = "YOUR_DATASET"
table_name = "YOUR_TABLE"
destination_uri = "gs://{}/{}".format(bucket_name, "bq_export.csv.gz")
bq_client = bigquery.Client(project=project_name)
dataset = bq_client.dataset(dataset_name, project=project_name)
table_to_export = dataset.table(table_name)
job_config = bigquery.job.ExtractJobConfig()
job_config.compression = bigquery.Compression.GZIP
extract_job = bq_client.extract_table(
table_to_export,
destination_uri,
# Location must match that of the source table.
location="US",
job_config=job_config,
)
return "Job with ID {} started exporting data from {}.{} to {}".format(extract_job.job_id, dataset_name, table_name, destination_uri)
在requirements.txt文件中指定客户端库依赖项
通过添加此行:
google-cloud-bigquery
01**0
将在每个星期天早上1点每周运行一次作业。这个
在实验方面非常有用
使用cron调度
选择HTTP作为目标,将URL设置为云
函数的URL(可通过选择云函数和
导航到触发器选项卡),并作为HTTP方法选择GET
创建后,通过按“立即运行”按钮,可以测试导出的方式
行为。但是,在执行此操作之前,请确保至少具有Cloud IAM角色,否则操作可能会因权限错误而失败。默认的应用程序引擎服务帐户的形式为YOUR\u PROJECT_ID@appspot.gserviceaccount.com
如果希望在不同的表上执行导出,
每次执行的数据集和存储桶,但本质上使用相同的云函数,您可以使用HTTPPOST
方法
而是将包含所述参数的主体配置为数据
将传递给云函数-尽管这意味着
代码中的一些小改动最后,创建作业时,您可以使用云函数返回的
作业ID
和bq
CLI,使用bq show-j
查看导出作业的状态。您可以选择Maxim答案的第二部分。提取表并将其存储到云存储的代码应该可以工作
但是,当您计划查询时,也可以在作业结束时发布消息。因此,如Maxim所述的调度器设置是可选的,您可以简单地
在执行提取之前,不要忘记检查。您还有很多关于计划查询的信息;如果要执行更多检查或要泛化函数,则此函数很有用
那么,关于SFTP传输的另一点。I(不支持sFTP和FTPs,因为我以前的公司只使用FTP协议!)。如果你的文件小于1.5Gb,我可以更新我的项目以添加SFTP支持,如果你想使用它。让我知道