为什么没有在 Azure 数据工厂内联接收器中更新数据的选项

Why isn't there an option to upsert data in Azure Data Factory inline sink

我要解决的问题是在 Azure 数据工厂数据流中的接收器中插入 and/or 更新动态 tables。我已经设法获取了源数据,t运行按照我想要的方式对其进行格式化,然后将其发送到接收器。管道 运行 成功,它说它复制了 37 行(如预期的那样),但调查表明实际上没有数据存储在目标 table 中。这是因为接收器上的 Table 操作设置为 'None'。因此,在尝试修复最后一部分时,我似乎没有 'Create' 选项,但确实有 'Recreate' 选项(请参阅下面的接收器屏幕截图),这不是我想要的数据源最终只会更改数据。我需要创建 table(如果它不存在)然后更新插入数据的过程。 (重新创建删除 table 然后创建它)。 如果我将接收器类型从内联更改为数据集,那么我可以 select 插入和更新插入等选项,但这不是动态的,因为我需要 select 特定数据集。 那么有没有人遇到过同样的问题并且您是否设法在数据流中创建动态接收器,如果 table 不存在则创建它,然后插入数据。 我想我可以添加一个 Pre SQL 脚本来处理“如果 table 不存在则创建它”,但我仍然无法 select 使用内联 tables。

对于 CREATE TABLE IF NOT EXISTS 问题,我推荐在数据流之前在管道中执行的存储过程。

对于内联与数据集,您可以使数据集非常灵活:

因此仍然基于您的运行时 table 名称且没有模式,因此无需针对特定的 table。

对于 UPSERT 问题,请确保在 Sink 之前有一个 AlterRow activity: