同一数据流中能否将data flow sink作为源?Azure Synapse场景问询
首先明确结论:无法通过Sink排序在同一个Data Flow中实现你的需求。
原因如下:
- Azure Synapse Data Flow的Sink排序仅约束最终写入Sink的执行顺序,所有Source的读取操作、中间转换逻辑都会在数据流启动时并行执行,不会等待某一个Sink写入完成后再触发另一个Source的读取。
- 你设计的流程中,和Sink1对应同一张表的Source3会在数据流启动时就读取表中数据,此时Sink1的写入操作还未执行,因此Source3拿到的始终是本次写入前的旧数据,不可能获取到本次刚写入的新增学生数据。
推荐两种可行的实现方案:
- 拆分两个独立的Data Flow活动放到Pipeline中,通过活动依赖控制执行顺序:第一个Data Flow仅负责写入Students表,执行成功后再运行第二个Data Flow,第二个Data Flow中读取已完成写入的Students表做关联,再写入StudentsClasses表。
- 若希望减少数据流数量,可在同一个数据流中使用缓存转换替代跨Sink依赖:将生成学生数据的分支先做缓存处理,一路分支直接写入Students表(Sink1),另一路分支直接用缓存的本次新增学生数据和班级数据做关联,再写入StudentsClasses表,该方式无需重复读取数据库表,执行效率更高,也能保证数据一致性。
内容的提问来源于stack exchange,提问作者Volume999
相关产品推荐
相关产品推荐

