【问题标题】:Can I retrieve filename for external table data in BigQuery?我可以在 BigQuery 中检索外部表数据的文件名吗?
【发布时间】:2016-08-08 11:37:39
【问题描述】:

希望为当前管理大量 excel/csv 文件的部门团队实施一个简单的数据存储。我们将让他们准备文件并将它们以 CSV 格式放入 GCS 存储桶中,然后将外部 BQ 表指向此(一切都很好)。

但是,如果他们运行查询并查看一些数据,然后想查找该数据实际是从哪里提取的,我们如何找出(假设文件名中没有上下文线索)哪个文件包含行( s) 有问题?

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    您可以使用 _FILE_NAME 伪列来查看外部表的行所属的文件。请注意,伪列仅适用于外部表。示例:

    bq query --external_table_definition=externalTable::AVRO=gs://mybucket/f* 'SELECT _FILE_NAME as f FROM externalTable'
    

    【讨论】:

    • 这种类型的信息是否有机会出现在文档中!?
    • 确实如此。这是一个无意的遗漏。我们很快就会解决这个问题。
    • 太棒了。在这种情况下,我会删除我的答案。
    • 只是一个更新——现在可以在官方文档中找到。 cloud.google.com/bigquery/…
    • 此功能是否已删除?我在文档上看不到它,我收到以下错误Invalid field name "_FILE_NAME". Field names are not allowed to start with the (case-insensitive) prefixes _PARTITION, _TABLE_, _FILE_ and _ROW_TIMESTAMP
    【解决方案2】:

    之前添加一个函数,比如lower() 会给出输出而不是错误“无效的字段名称“_FILE_NAME”

    试试这个:

    SELECT lower(_FILE_NAME) as f FROM externalTable'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 2021-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-07
      • 2010-09-05
      相关资源
      最近更新 更多