在ETL工作中可以用作中间数据源的内容是什么?

时间:2018-10-09 17:54:05

标签: google-bigquery etl talend

我正在创建一个ETL管道,该管道使用各种来源并将数据发送到Big Query。对于我的用例,Talend无法在一项工作中同时处理关系数据库和非关系数据库组件,因此,这是我目前的工作方式:

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

我正在使用定界文本文件/ csv作为中间数据存储来实现此目的。由于数据的机密性很重要,并且解决方案还需要扩展以处理数百万行,因此我应该使用什么作为中间源。关系数据库会有所帮助吗?或定界文件足够好吗?还是我可以使用的其他东西?

PS-作业完成后,我将删除这些文件,但担心安全性,直到作业运行为止,尽管它将在安全的云体系结构上运行。 请对此发表您的看法。

2 个答案:

答案 0 :(得分:1)

在数据仓库体系结构中,使过渡层具有持久性通常是一个好习惯。这不仅为您提供了将数据沿袭追溯到源头的功能,还可以在业务规则发生变化时从登台点重新加载最终模型,并全面概述了数据从各个方面经过的转换步骤。从着陆到报告的方式。

我还将考虑更改您的设计,并在BigQuery中将过渡层保留在其自己的数据集中,而不仅仅是在处理后删除文件。

由于这只是ETL / ELT的操作层,而不是最终用户报告,因此您将只为存储支付大部分费用。

现在,回到您的问题并考虑当前的设计,您可以在Google Cloud Storage中创建存储桶并将转换文件保存在其中。它提供了所需的所有安全性和加密,并且您可以完全控制权限。 Big Query似乎可以与Cloud Storage一起使用,您甚至可以直接从Cloud Console中从Storage文件中加载表。

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

简而言之。该过程将是。

public dirs: Array<any> = [{
  origin: { lat: 6.8403134, lng: 80.0021128 },
  destination: { lat: 6.71532762, lng: 80.06215197 },
  renderOptions: { polylineOptions: { strokeColor: '#f00' } },
}, {
  origin: { lat: 6.4319639, lng: 79.9983415 },
  destination: { lat: 6.73906232, lng: 80.15640132 },
  renderOptions: { polylineOptions: { strokeColor: '#0f0' } },
}];

答案 1 :(得分:0)

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

这有可能在单个SQL中重塑数据(转换为数组),过滤出列/行并执行转换。