【问题标题】:Automatic ETL data before loading to Bigquery加载到 Bigquery 之前的自动 ETL 数据
【发布时间】:2021-03-26 00:11:46
【问题描述】:
我每天或每周将 CSV 文件添加到 GCS 存储桶中,每个文件名包含(日期 + 特定参数)
文件包含架构(id + name)列,我们需要将这些文件自动加载/摄取到 bigquery 表中,以便最终表有 4 列(id、名称、日期、特定参数)
我们尝试过数据流模板,但无法从文件名中获取日期和特定参数到数据流
我们尝试了云功能(我们可以从文件名中获取日期和特定参数值),但在提取时无法将其添加到列中
有什么建议吗?
【问题讨论】:
标签:
google-bigquery
google-cloud-functions
google-cloud-storage
google-cloud-dataflow
【解决方案1】:
免责声明:我已针对使用 Cloud Workflows 的此类问题撰写了一篇文章。当您想提取文件名的一部分,以便稍后用作表定义时。
我们将创建一个 Cloud Workflow,将数据从 Google Storage 加载到 BigQuery。这篇链接的文章是有关如何使用工作流、连接任何 Google Cloud API、使用子工作流、数组、提取段以及调用 BigQuery 加载作业的完整指南。
假设我们在 Google 存储中拥有所有源文件。文件组织在存储桶、文件夹中,并且可以进行版本控制。
我们的工作流程定义将包含多个步骤。
(1) 我们将首先使用 GCS API 列出存储桶中的文件,使用文件夹作为过滤器。
(2) 对于每个文件,我们将进一步使用文件名中的部分用于 BigQuery 生成的表名。
(3) 工作流的最后一步是将 GCS 文件加载到指定的 BigQuery 表中。
我们将使用 BigQuery 查询语法从 URL 中解析和提取段,并将它们作为单行结果返回。这样,我们将学习如何从 BigQuery 查询和处理结果的中级课程。
包含大量代码示例的完整文章在这里:Using Cloud Workflows to load Cloud Storage files into BigQuery