Azure 数据工厂:如何在转换数据流中实现嵌套 sql 查询
Posted
技术标签:
【中文标题】Azure 数据工厂:如何在转换数据流中实现嵌套 sql 查询【英文标题】:Azure Datafactory: How to implement nested sql query in transformation data flow 【发布时间】:2022-01-10 21:06:21 【问题描述】:[![在此处输入图像描述][1]][1] 我有两个流 customer 和 customercontact。我是天蓝色数据工厂的新手。我只想知道数据流转换中的哪个活动会达到下面的sql查询结果。
(选择 * FROM客户联系方式 客户在哪里 (选择客户ID 来自客户) ORDER BY 时间戳 DESC 限制 1)
我可以利用 Exist 转换进行内部查询,但我需要一些帮助,了解如何在对客户联系数据进行排序后获取第一行。所以,基本上我正在寻找一种在数据流中添加 limit/Top/Offset 子句的方法.
【问题讨论】:
您的查询只会返回最近客户的联系方式..,您打算如何处理返回的联系记录? 是的,它将返回最近的客户联系方式。我已经加入了另一张桌子。我需要对上述查询进行数据流转换。 【参考方案1】:您可以通过不同的转换实现数据流中给定查询的转换。
对于排序,您可以使用排序转换。在这里您可以选择升序或降序。
对于前几条记录,您可以使用排名转换。
对于“IN”子句,您可以使用 Exists 转换。
参考 - https://docs.microsoft.com/en-us/azure/data-factory/data-flow-rank
这是我在 SQL 中作为源的示例数据
我使用了等级转换。
在排名转换后,又添加了一列,即 RankColumn。
现在只选择我使用过滤器行修饰符的前 1 条记录。我使用equals(RankColumn,1)
表达式来选择Top 1 记录。
现在终于使用 Sink 活动并运行管道。
【讨论】:
以上是关于Azure 数据工厂:如何在转换数据流中实现嵌套 sql 查询的主要内容,如果未能解决你的问题,请参考以下文章
在 Azure 数据工厂中使用复制数据活动将 xml 解析为 json 时如何删除转义字符?