Google bigquery BigQuery数据转换的最佳方法

Google bigquery BigQuery数据转换的最佳方法,google-bigquery,etl,google-cloud-dataflow,Google Bigquery,Etl,Google Cloud Dataflow,我已经在BigQuery上存储了TB的数据,我想对它执行大量的数据转换 考虑到成本和性能,为了将来在BigQuery上使用这些数据,你们建议采用什么样的最佳方法来执行这些转换 我正在考虑几个选项: 1.从数据流读取原始数据,然后将转换后的数据加载回BigQuery? 2.直接从BigQuery执行吗 关于如何进行这项工作,您有什么想法吗?我写下了一些关于性能的最重要的事情,您可以找到关于使用数据流的问题的考虑因素 考虑性能的最佳实践: 选择文件格式: BigQuery支持各种各样的数据摄取文

我已经在BigQuery上存储了TB的数据,我想对它执行大量的数据转换

考虑到成本和性能,为了将来在BigQuery上使用这些数据,你们建议采用什么样的最佳方法来执行这些转换

我正在考虑几个选项:
1.从数据流读取原始数据,然后将转换后的数据加载回BigQuery?
2.直接从BigQuery执行吗


关于如何进行这项工作,您有什么想法吗?

我写下了一些关于性能的最重要的事情,您可以找到关于使用数据流的问题的考虑因素

考虑性能的最佳实践

  • 选择文件格式:
BigQuery支持各种各样的数据摄取文件格式。有些人自然会比其他人更快。在优化加载速度时,最好使用AVRO文件格式,它是二进制的、基于行的格式,允许拆分文件,然后与多个工作线程并行读取

从压缩文件(特别是CSV和JSON)加载数据要比以其他格式加载数据慢。原因是,由于Gzip的压缩是不可拆分的,所以需要将该文件加载到BQ中的一个插槽中,然后进行解压缩,最后并行化加载

**FASTER**
Avro(Compressed)
Avro(Uncompressed)
Parquet/ORC
CSV
JSON
CSV (Compressed)
JSON(Compressed
**SLOWER**
  • ELT/ETL:
将数据加载到BQ后,您可以考虑转换(ELT或ETL)。因此,一般来说,在可能的情况下,您希望选择ELT而不是ETL。BQ具有很强的可扩展性,可以处理大量数据的大型转换。ELT也相当简单,因为您可以编写一些SQL查询,转换一些数据,然后在表之间移动数据,而不必担心管理单独的ETL应用程序

  • 原始和暂存表:
一旦您开始将数据加载到BQ中,通常在您的仓库中,您将希望在发布到报告表之前利用原始表和临时表。原始表基本上包含完整的每日提取,或者他们正在加载的数据的完整负载。然后,暂存表基本上就是您的变更数据捕获表,所以您可以利用查询或DML将该数据添加到暂存表中,并拥有插入的所有数据的完整历史记录。最后,您的报告表将成为发布给用户的摄取

  • 使用数据流加速管道:
当您进入流式加载—非常复杂的批处理加载(实际上并不完全适合SQL),您可以利用数据流或数据融合来加速这些管道,并对这些数据执行更复杂的活动。如果你从流媒体开始,我建议你使用数据流模板——谷歌提供了从多个不同地方加载数据和移动数据的模板。您可以在DataFlow UI中找到这些模板,在
createjobfromtemplate
按钮中,您将找到所有这些模板。 如果您发现它基本上适合您的用例,但想做一点修改,那么所有这些模板都是开源的(因此您可以转到repo,修改代码以满足您的需要)

  • 分区:
BQ中的分区根据摄取时间或数据中的列,在磁盘上物理分割数据。高效地查询表中所需的部分。这提供了巨大的成本和性能优势,尤其是在大型事实表上。只要有事实表或时态表,就在日期维度上使用分区列

  • 群集经常访问的字段:
集群允许您对分区内的数据进行物理排序。因此,您可以通过一个或多个键进行聚类。这在正确使用时提供了巨大的性能优势

  • BQ保留:
它允许创建插槽的保留,将项目分配给这些保留,这样您就可以为某些类型的查询分配更多或更少的资源

考虑节约成本的最佳实践您可以在中找到


我希望它能对您有所帮助。

我写下了一些关于性能的最重要的事情,您可以找到关于使用数据流的问题的考虑因素

考虑性能的最佳实践

  • 选择文件格式:
BigQuery支持各种各样的数据摄取文件格式。有些人自然会比其他人更快。在优化加载速度时,最好使用AVRO文件格式,它是二进制的、基于行的格式,允许拆分文件,然后与多个工作线程并行读取

从压缩文件(特别是CSV和JSON)加载数据要比以其他格式加载数据慢。原因是,由于Gzip的压缩是不可拆分的,所以需要将该文件加载到BQ中的一个插槽中,然后进行解压缩,最后并行化加载

**FASTER**
Avro(Compressed)
Avro(Uncompressed)
Parquet/ORC
CSV
JSON
CSV (Compressed)
JSON(Compressed
**SLOWER**
  • ELT/ETL:
将数据加载到BQ后,您可以考虑转换(ELT或ETL)。因此,一般来说,在可能的情况下,您希望选择ELT而不是ETL。BQ具有很强的可扩展性,可以处理大量数据的大型转换。ELT也相当简单,因为您可以编写一些SQL查询,转换一些数据,然后在表之间移动数据,而不必担心管理单独的ETL应用程序

  • 原始和暂存表:
一旦您开始将数据加载到BQ中,通常在您的仓库中,您将希望在发布到报告表之前利用原始表和临时表。原始表基本上包含完整的每日提取,或者他们正在加载的数据的完整负载。圣