我们设置了自动FTP流程,每天将数据文件导入Google Cloud 端存储 .
我想设置一个每日自动化作业,将此csv上传到一个bigquery表中 .
做这个的最好方式是什么?我目前的第一个想法是设置一个app引擎实例,其中包含每天运行python脚本的cron作业 . 有更好的解决方案吗?
Background Cloud Function用Cloud Storage trigger是您最好的选择!
您可以将其设置为监视新文件的特定存储桶,并在触发触发器时执行加载脚本
忘了提 - Cloud 功能支持(截至目前)只有node.js用于编写脚本 - 这通常不是问题,只是想提一下:o)
类似于米哈伊尔答案的方法 - 但代码更多:
使用Google Cloud Functions,您可以在每次收到新文件时自动执行BigQuery:
在https://console.cloud.google.com/functions/add创建新功能
将"bucket"指向一个接收文件 .
Codewise,在 package.json 中导入BigQuery:
package.json
{ "dependencies": { "@google-cloud/bigquery": "^0.9.6" } }
在 index.js 上,您可以以任何适当的方式对新文件执行操作:
index.js
var bigQuery = BigQuery({ projectId: 'your-project-id' }); exports.processFile = (event, callback) => { console.log('Processing: ' + JSON.stringify(event.data)); query(event.data); callback(); }; var BigQuery = require('@google-cloud/bigquery'); function query(data) { const filename = data.name.split('/').pop(); const full_filename = `gs://${data.bucket}/${data.name}` // if you want to run a query: query = '...' bigQuery.query({ query: query, useLegacySql: false }); };
2 回答
Background Cloud Function用Cloud Storage trigger是您最好的选择!
您可以将其设置为监视新文件的特定存储桶,并在触发触发器时执行加载脚本
忘了提 - Cloud 功能支持(截至目前)只有node.js用于编写脚本 - 这通常不是问题,只是想提一下:o)
类似于米哈伊尔答案的方法 - 但代码更多:
使用Google Cloud Functions,您可以在每次收到新文件时自动执行BigQuery:
在https://console.cloud.google.com/functions/add创建新功能
将"bucket"指向一个接收文件 .
Codewise,在
package.json
中导入BigQuery:在
index.js
上,您可以以任何适当的方式对新文件执行操作: