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

标签 google-bigquery google-cloud-storage

这是一个关于将数据文件从 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 进程,这些进程偶尔会在较大的文件上失败。

最佳答案

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

enter image description here

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

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

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

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

enter image description here

关于google-bigquery - 将文件名添加为导入 BigQuery 的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47325630/

相关文章:

google-cloud-platform - 使用云函数将数据加载到大查询表中,它正在附加到表中,我需要它来替换

Firebase 存储和云功能 - ECONNRESET

sql - BigQuery 比较 DATE 和 TIMESTAMP

google-bigquery - 更改 Bigquery 表中字段的数据类型?

python - BigQuery JSON 架构验证

google-app-engine - 匿名调用者没有 storage.objects.get

google-cloud-storage - 保护 Google 存储桶的惯用方法

json - 使用正确的引号从 Bigquery 导出表中的 JSON 值

google-bigquery - 单独的 JSON 文件中的 Terraform Bigquery 表架构