Azure 流分析查询 - 进行合并
Posted
技术标签:
【中文标题】Azure 流分析查询 - 进行合并【英文标题】:Azure Stream Analytics Query - Doing a Merge 【发布时间】:2019-03-22 08:31:03 【问题描述】:美好的一天
我有一个应用程序,它通过 Azure EventHub 通过 Azure SQL 数据库中的 Azure 流分析传递数据。此数据来自每隔几分钟从 Cost Recovery Software 写入的文件,其中包含最新的完整帐户列表。
我想确保当文件中的所有数据都通过此过程时,会发生某种形式的 MERGE,仅更新现有帐户并插入不存在的帐户。确保不会创建重复帐户。
我不确定流分析是否是将数据从 EventHub 馈送到 SQL 的最佳选择。
流程示例:
【问题讨论】:
更新:我已经阅读了更多内容,数据工厂似乎是进行 UPSERT 的好方法 但是这不像流分析那样实时 您可能希望使用 Azure 函数来执行 Upsert 【参考方案1】:使用 Azure 流分析和 SQL Azure DB,可以通过以下方式完成:
-
将 ASA 数据输出到 SQL 到第一个表,它将是一个“登陆表”
Create a trigger 在 SQL 中执行从登陆表到最终表的合并。
或者,如果您使用 Cosmos DB 作为输出,Azure 流分析本机支持 upsert,因此可以直接从 ASA 完成。
如果您有任何其他问题和反馈,请告诉我们。
谢谢,
JS
【讨论】:
【参考方案2】:根据您的描述,您仍然可以使用 Azure 数据工厂来实现您的实时要求。
1.创建Event Hub Trigger Azure Function。请看C# example。
2.在 Azure 数据工厂中创建管道。
3.在该管道中,创建 Azure Function Activity 以配置您的事件中心触发函数 url 和参数。
4.在Azure Function Activity之后创建Copy Activity,将源作为Azure Function Activity输出的数据。
5.将 sink 设为 SQL 数据库并创建存储过程进行 upsert 合并业务。请关注blog 中的详细信息。
【讨论】:
那么 UPSERT 还是发生在 Azure SQL 中? @LordRofticus 是的,有什么担心吗? 我可能没有抓住重点,但当 Upsert SP 执行我想做的事情时,似乎需要很多 Azure 组件(并且它们只传输数据)。这意味着我也可以直接调用 SP,将记录值作为参数发送给它,让它检查是否存在这样的记录,然后决定 INSERT/UPDATE。 @LordRofticus 是的,但是您仍然需要 Azure Tirgger Function 和 ADF 来实现自动作业,对吗?以上是关于Azure 流分析查询 - 进行合并的主要内容,如果未能解决你的问题,请参考以下文章