python - 如何在 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。这可以以某种方式完成吗?
解决方案
我认为这不可能作为 的一部分bq load
,除非该列被添加到实际数据中。
我会切换到一个三步过程:
bq load
首先将数据加载到临时表。bq query
运行从临时表到目标表的查询,添加额外的字段。WRITE_APPEND
如果要添加到表或分区,可以通过查询来完成。bq rm
删除临时表。
查询附加源示例:
SELECT
*,
"0923" AS source
FROM staging_table
推荐阅读
- ruby-on-rails - 在 Heroku 中部署 rails App 时无法检测到 rake 任务
- nginx - nginx grpc_pass 仅适用于 root
- c++ - 为什么具有不同调用约定的函数仍然可以相互调用?
- c# - 在类中为 C# 中的 linq 查询创建一个匿名对象
- python - Redis 密钥过期后更新 ttl
- python - Groupby,排序和加入
- sql - 使用 SQL 在 XML 中导入字段不起作用
- c# - 由于引用错误,Xamarin 项目未启动
- python - Matplotlib 在同一图形上绘制堆积条形图和折线图
- c# - 为什么我的 Wix CustomAction 尝试使用错误的 DLL 版本并抛出 CustomActionException?