我想在Google Big Query中启动一个数据仓库,但我不确定如何实际安排作业来将数据放入云中。
给出一些背景知识。我有一个托管在本地的MySQL数据库,目前我每天晚上都会做一个演示作为备份。我的想法是,我可以将这个转储发送到Google Cloud,并让它将数据导入Big Query。我认为我可以发送转储,然后可能使用云调度函数来运行打开转储并执行此操作的程序,但我不确定这些服务如何组合在一起。
我是Google Cloud的新手,所以如果有更好的方法来实现这一点,那么我很乐意改变我的行动计划。
提前谢谢。
发布于 2019-09-25 16:21:32
为此,您需要创建一个运行gsutil mb gs://BUCKET_NAME的云存储存储桶。
创建存储桶后,您需要使用finalize选项创建由存储桶触发的云函数。
您可以按照以下示例函数进行操作
'use strict';
const Storage = require('@google-cloud/storage');
const BigQuery = require('@google-cloud/bigquery');
// Instantiates a client
const storage = Storage();
const bigquery = new BigQuery();
/**
* Creates a BigQuery load job to load a file from Cloud Storage and write the data into BigQuery.
*
* @param {object} data The event payload.
* @param {object} context The event metadata.
*/
exports.loadFile = (data, context) => {
const datasetId = 'Your_Dataset_name';
const tableId = 'Your_Table_ID';
const jobMetadata = {
skipLeadingRows: 1,
writeDisposition: 'WRITE_APPEND'
};
// Loads data from a Google Cloud Storage file into the table
bigquery
.dataset(datasetId)
.table(tableId)
.load(storage.bucket(data.bucket).file(data.name), jobMetadata)
.catch(err => {
console.error('ERROR:', err);
});
console.log(`Loading from gs://${data.bucket}/${data.name} into ${datasetId}.${tableId}`);
};然后使用所需方案创建BigQuery数据集
现在,您可以将csv文件上传到存储桶中,您将在bigquery中看到上传的数据。
发布于 2019-09-25 16:55:07
由于新的EXTERNAL_QUERY已经上线,您可以从BigQuery查询云SQL实例,因此您现在最好的选择是:
从您的当前实例到云
通过这种方式可以实时访问关系数据库,如下所示:
您在BigQuery上运行的示例查询:
SELECT * EXTERNAL_QUERY(
'connection_id',
'''SELECT * FROM mysqltable AS c ORDER BY c.customer_id'');您甚至可以将Bigquery表与SQL表连接起来:
示例:
SELECT c.customer_id, c.name, SUM(t.amount) AS total_revenue,
rq.first_order_date
FROM customers AS c
INNER JOIN transaction_fact AS t ON c.customer_id = t.customer_id
LEFT OUTER JOIN EXTERNAL_QUERY(
'connection_id',
'''SELECT customer_id, MIN(order_date) AS first_order_date
FROM orders
GROUP BY customer_id''') AS rq ON rq.customer_id = c.customer_id
GROUP BY c.customer_id, c.name, rq.first_order_date;https://stackoverflow.com/questions/58093678
复制相似问题