【发布时间】:2016-08-08 11:37:39
【问题描述】:
希望为当前管理大量 excel/csv 文件的部门团队实施一个简单的数据存储。我们将让他们准备文件并将它们以 CSV 格式放入 GCS 存储桶中,然后将外部 BQ 表指向此(一切都很好)。
但是,如果他们运行查询并查看一些数据,然后想查找该数据实际是从哪里提取的,我们如何找出(假设文件名中没有上下文线索)哪个文件包含行( s) 有问题?
【问题讨论】:
标签: google-bigquery
希望为当前管理大量 excel/csv 文件的部门团队实施一个简单的数据存储。我们将让他们准备文件并将它们以 CSV 格式放入 GCS 存储桶中,然后将外部 BQ 表指向此(一切都很好)。
但是,如果他们运行查询并查看一些数据,然后想查找该数据实际是从哪里提取的,我们如何找出(假设文件名中没有上下文线索)哪个文件包含行( s) 有问题?
【问题讨论】:
标签: google-bigquery
您可以使用 _FILE_NAME 伪列来查看外部表的行所属的文件。请注意,伪列仅适用于外部表。示例:
bq query --external_table_definition=externalTable::AVRO=gs://mybucket/f* 'SELECT _FILE_NAME as f FROM externalTable'
【讨论】:
Invalid field name "_FILE_NAME". Field names are not allowed to start with the (case-insensitive) prefixes _PARTITION, _TABLE_, _FILE_ and _ROW_TIMESTAMP
之前添加一个函数,比如lower() 会给出输出而不是错误“无效的字段名称“_FILE_NAME”
试试这个:
SELECT lower(_FILE_NAME) as f FROM externalTable'
【讨论】: