小编JW2*_*JW2的帖子

Airflow Pipeline CSV 到 BigQuery 并进行架构更改

背景

我需要设计一个 Airflow 管道来将 CSV 加载到 BigQuery 中。

我知道 CSV 的架构经常发生变化。加载第一个文件后,架构可能是

id | ps_1 | ps_1_value

当第二个文件到达并加载它时,它可能看起来像

id | ps_1 | ps_1_value | ps_1 | ps_2_value

问题

处理这个问题的最佳方法是什么?


我对此的第一个想法是

  1. 加载第二个文件
  2. 将架构与当前表进行比较
  3. 更新表,添加两列(ps_2、ps_2_value)
  4. 插入新行

我会在 PythonOperator 中执行此操作。

如果文件 3 进来并且看起来id | ps_2 | ps_2_value我会填写缺失的列并进行插入。

感谢您的反馈。

google-bigquery airflow

3
推荐指数
1
解决办法
5303
查看次数

BigQuery GENERATE_UUID() 和 CTE

这个行为让我有点惊讶。

当您在 CTE 中生成 uuid(以生成行 id 等)并在将来引用它时,您会发现它发生了变化。似乎generate_uuid()被调用了两次而不是一次。有人知道为什么 BigQuery 会出现这种情况吗?这叫什么?

我用来generate_uuid()创建一个row_id,并发现在我最终的连接中,因此没有发生任何匹配。我发现解决这个问题的最佳方法是从第一个 CTE 创建一个表,将 uuid 固定到位以供将来使用。

仍然好奇更多地了解这背后的原因和原因。

with _first as (

  select generate_uuid() as row_id
  
)
,_second as (

  select * from _first
  
)

select row_id from _first
union all
select row_id from _second
Run Code Online (Sandbox Code Playgroud)

database google-bigquery google-cloud-platform

3
推荐指数
1
解决办法
1762
查看次数