多日期数据加载到 BigQuery 分区表中

Posted

技术标签:

【中文标题】多日期数据加载到 BigQuery 分区表中【英文标题】:Multi-Date data Load into BigQuery Partitioned table 【发布时间】:2017-05-07 19:56:46 【问题描述】:

我正在尝试探索 BigQuery 将 CSV 文件(Doulbelick 展示数据)加载到 BigQuery 的分区表中的能力。我的用例包括: 1. 为我的客户(广告代理)30 个不同的客户从谷歌云存储中读取每日(每晚加载)转储(csv)到 BQ。每日转储可能包含前一天/前一周的数据。所有数据都应加载到各自的每日分区(进入 BQ)中,以便向各个客户提供每日报告。 2.这里的目的是建立一个分析系统,使广告代理能够运行“随着时间的推移和跨客户的趋势和模式”。

我是 BQ 的新手,因此试图了解它的 Schema 布局。 我应该创建一个包含每日分区的表(保存来自所有 50 个客户端/50 个每日负载 -csv 文件的数据)吗?是否需要提前创建好分区? 我应该为每个客户创建 50 个不同的表(按日期分区),以免遇到单个表选项的任何数据共享/安全问​​题吗? 我的客户想要一个成本最低的简单解决方案。

【问题讨论】:

为什么不直接使用新的传输服务呢?它会自动将您的所有 Doubleclick 数据加载到 BigQuery 中的分区表中。您不再需要手动滚动自己的管道(除非您有一些要求迫使您这样做)-cloud.google.com/bigquery/docs/doubleclick-publisher-transfer 谢谢格雷厄姆。感谢您的回复。我想到了数据传输服务。我认为 BQ 的“联合来源”选项会处理成本(考虑传输服务的成本比较)选项,因为您不会将数据暂存到 BQ 中,因为它可以直接从 GSC 中提取。 这里有一个简单的问题:有什么方法可以从 DoubleClick 获取示例文件(印象文件)。我正在尝试为我的 BQ 试用帐户设置数据传输服务。 但是在使用联合源时,您仍然需要为 GCS 中的查询和存储付费 - 而且性能会受到影响(联合源永远不会像原生表一样快)。联合源更多地设计用于较小的映射/引用,例如您可以加入以规范化数据的表。 WRT 对 Doubleclick 数据进行采样,请参见此处 -> ***.com/questions/42190253/… 知道了。非常感谢格雷厄姆。只是为了与您在同一页面上,您使用 Google DataFlow 进行数据摄取(和 ETL)而不是数据流服务......我对吗?我认为,我的用例非常简单。我有一次提取(为每个 csv 文件中具有 ~25GB 印象数据的每个客户提取一个夜间批处理文件)并将它们加载到 BQ 中。我想,您已经为此推荐了数据传输服务。 【参考方案1】:

如果您要使用传输服务(如评论中所述),则无需手动创建表。相反,转移服务会为您做到这一点。传输服务将安排日常工作并将数据加载到分区中。此外,如果有短暂的延迟(2-3 天),传输服务仍会提取数据。

【讨论】:

谢谢雪健。是的..我认识到了这个优势。我关心的一个问题是将多个日期数据加载到正确的分区中。看起来,我必须使用 DataFlow 逐行处理数据。我不知道该怎么做,因为我是 DataFlow 的新手。 是不是这样:读取整个 csv 文件(其中包含多个日期数据)并将其加载到 BigQuery 的分区表(比如说一个 STAGING 表)中。然后使用 DataFlow 服务从该分区进行逐行处理并将数据加载到另一个具有日期分区的表中? 我认为这个选项不仅会产生高成本(从 12TB 暂存表中逐行读取数据),而且还会引入一个额外的步骤,将正确的数据加载到正确的分区中。这样的额外步骤将延迟向企业报告的可用性……我的理解有误吗? 有什么方法可以从源(GCS 上的 CSV 文件)中逐行读取数据并将它们直接加载到预先创建的分区表中?

以上是关于多日期数据加载到 BigQuery 分区表中的主要内容,如果未能解决你的问题,请参考以下文章

列中的 BigQuery 日期分区

使用 python 将历史数据从谷歌云存储移动到日期分区的 bigquery 表

BigQuery:使用 DML 原子地替换日期分区

将分区(火花)镶木地板加载到 bigquery 表

在 2 TB 数据的 BigQuery 中进行日期分区的有效方法是啥?

对超过 4000 天数据的 bigquery 表进行分区?