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

Rao*_*oot 3 google-cloud-storage google-bigquery

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

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

例如:

xxx_US_20170101.json.gz
xxx_GB_20170101.json.gz
xxx_DE_20170101.json.gz
Run Code Online (Sandbox Code Playgroud)

这是client_country_date.json.gz在那一刻,我有一个Ruby应用程序,读取文件,追加额外的数据令人费解的一些进程,然后将其写回到那个,然后导入到一个单一的日常表BigQuery中的客户端的文件。

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

Fel*_*ffa 6

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

在此处输入图片说明

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

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

#standardSQL
SELECT *, _FILE_NAME filename
FROM `project.dataset.table` 
Run Code Online (Sandbox Code Playgroud)

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

在此处输入图片说明