Google bigquery 在ETL作业中使用什么作为中间数据源?

Google bigquery 在ETL作业中使用什么作为中间数据源?,google-bigquery,etl,talend,Google Bigquery,Etl,Talend,我正在创建一个ETL管道,它使用各种源并将数据发送到大查询。对于我的用例,Talend无法在一个作业中同时处理关系数据库组件和非关系数据库组件,因此我目前的做法如下: 作业1——从源(SQL Server、API等)获取数据,对其进行转换,并将转换后的数据存储在分隔文件(文本或csv)中 作业1——使用作业1中分隔文件中存储的转换数据作为源,然后根据大查询进行转换并发送 我使用分隔文本文件/csv作为中间数据存储来实现这一点。由于数据的机密性很重要,而且解决方案还需要可扩展以处理数百万行,我应该

我正在创建一个ETL管道,它使用各种源并将数据发送到大查询。对于我的用例,Talend无法在一个作业中同时处理关系数据库组件和非关系数据库组件,因此我目前的做法如下:

作业1——从源(SQL Server、API等)获取数据,对其进行转换,并将转换后的数据存储在分隔文件(文本或csv)中 作业1——使用作业1中分隔文件中存储的转换数据作为源,然后根据大查询进行转换并发送

我使用分隔文本文件/csv作为中间数据存储来实现这一点。由于数据的机密性很重要,而且解决方案还需要可扩展以处理数百万行,我应该使用什么作为中间数据源。关系数据库有帮助吗?还是分隔文件足够好?或者其他我能用的东西

PS-我会在作业完成后立即删除这些文件,但担心在作业运行之前的安全性,尽管会在安全的云架构上运行。
请分享您对此的看法。

在数据仓库体系结构中,将暂存层持久化通常是一种好的做法。这使您能够将数据沿袭追溯到源代码,在业务规则更改时能够从暂存点重新加载最终模型,并全面了解数据从着陆到报告的整个过程中所经历的转换步骤

我也会考虑更改你的设计,让后台层在BigQuy自身的数据集下持久化,而不是在处理后删除文件。 因为这只是ETL/ELT的一个操作层,而不是最终用户报告,所以您将只为大部分存储付费

现在,回到你的问题,考虑到你目前的设计,你可以在谷歌云存储中创建一个存储桶,并将你的转换文件保存在那里。它提供您所需的所有安全性和加密,您可以完全控制权限。大查询似乎与云存储一起工作,您甚至可以直接从云控制台从存储文件加载表

从各方面考虑,无论您选择什么方向,我建议您存储用于加载表的文件,而不是删除它们。你的最终报告迟早会有问题/失败,你可能需要追溯到源头进行调查

简而言之。这一过程将是成功的

|---Extract and Transform---|----Load----|
  Source  ---> Cloud Storage --> BigQuery

我将使用ELT而不是ETL:按原样加载源数据,并使用SQL函数在Bigquery中进行转换


这允许在一个SQL中重塑数据(转换为数组)、过滤列/行并执行转换

这正是我正在做的。因为大查询不支持触发器,所以在为某个应用程序提供服务时,我使用视图来保持数据的更新。有什么方法可以提高视图查询的效率吗?