将文件名添加为导入 BigQuery 的列?

Posted

技术标签:

【中文标题】将文件名添加为导入 BigQuery 的列?【英文标题】:Add filename as column on import to BigQuery? 【发布时间】:2017-11-16 09:13:49 【问题描述】:

这是一个关于将数据文件从 Google Cloud Storage 导入 BigQuery 的问题。

我有许多 JSON 文件,它们遵循严格的命名约定,以包含一些未包含在 JSON 数据本身中的关键数据。

例如:

xxx_US_20170101.json.gz
xxx_GB_20170101.json.gz
xxx_DE_20170101.json.gz

这是client_country_date.json.gz 目前,我在一个 Ruby 应用程序中有一些复杂的过程,它读取文件、附加附加数据,然后将其写回一个文件,然后将其导入到客户的单个每日表中在 BigQuery 中。

我想知道是否可以在导入 BigQuery 的过程中抓取和解析文件名?然后我可以删除复杂的 Ruby 进程,这些进程偶尔会在较大的文件上失败。

【问题讨论】:

您是否喜欢将客户端/文件名交叉连接到表? 【参考方案1】:

您可以定义一个指向您的文件的外部表:

请注意,表类型是“外部表”,它指向多个带有* glob 的文件。

现在您可以查询这些文件中的所有数据,并查询元列_FILE_NAME

#standardSQL
SELECT *, _FILE_NAME filename
FROM `project.dataset.table` 

您现在可以将这些结果保存到新的本机表中。

【讨论】:

这太好了,谢谢,费利佩。我刚刚在您发布时发现了这一点:) question....如果您将更多文件添加到存储桶文件夹,这会自动工作吗?

以上是关于将文件名添加为导入 BigQuery 的列?的主要内容,如果未能解决你的问题,请参考以下文章

使用空字典作为值将 JSON 文件加载到 BigQuery

无法在数据准备中的列中转义逗号

将 CSV 导入 BigQuery 中的表时无法添加字段

如何将 Avro 文件加载到具有“时间戳”类型的列的 BigQuery 表中

导入 excel .csv 文件并将其添加到 phpMyAdmin 的列中

如何在 bigquery 中使用 python 将数据添加到 RECORD 类型的列