首页 > 解决方案 > 如何在 Google BigQuery 中“橡皮戳”bq 加载事件?

问题描述

我有以下文件结构

0916/
  day09/
    part001.file.orc
    ...
  day14/
    part001.file.orc
    ...
0923/
  day09/
    part001.file.orc
    ...
  day10/
    part001.file.orc
    ...
  day15/
    part001.file.orc
    ...

发生这种情况是因为数据“摄取”可能在首次上传到存储后几天完成,导致一小部分day09仍然上传到0923.

我曾经bq load ...从存储上传到 BQ,但我想保留一些数据来源的“签名”或“橡皮图章”,例如,在 orc 中有架构,但还要添加一个带有父文件夹的列,所以架构是

field1
field2
...
source

对于该特定行,源将是 0916, 0930。这可以以某种方式完成吗?

标签: pythongoogle-bigquery

解决方案


我认为这不可能作为 的一部分bq load,除非该列被添加到实际数据中。

我会切换到一个三步过程:

  1. bq load首先将数据加载到临时表。
  2. bq query运行从临时表到目标表的查询,添加额外的字段。WRITE_APPEND如果要添加到表或分区,可以通过查询来完成。
  3. bq rm删除临时表。

查询附加源示例:

SELECT 
  *,
  "0923" AS source
FROM staging_table

推荐阅读