【问题标题】:Azure Data Factory Exist TransformationAzure 数据工厂存在转换
【发布时间】:2020-08-17 16:18:18
【问题描述】:

有没有办法在比较两个表之后再使用Case函数?

我正在尝试基于 Exists 转换创建一个新列。在 sql 中我这样做:

(isnull (select 'YES' from sales where salesperson = t1.salesperson group by salesperson), 'NO')) AS registeredSales

T1 is personal.

或者我应该将表包含在连接流中,然后使用 case() 函数比较两列?

如果有其他方法可以比较这两个流,我会很高兴听到。

谢谢。

【问题讨论】:

  • 嗨@Luis Jacobo,我已经测试了我的答案并且它有效。我们可以使用派生列来生成新列。如果我的回答对你有帮助,请采纳(标记)为答案,非常感谢!

标签: azure-data-factory-2


【解决方案1】:

也可以比较数据湖中的平面文件。我们可以在数据流中使用derived column 来生成一个新列。

  1. 我创建了一个数据流演示,包含两个来源:CustomerSource(customer.csv 存储在 datalake2 中)和 SalesSource(sales.csv 存储在 datalake2 中,它只包含一列) 如下

  1. 然后我将两个来源与列 CustomerId 连接起来

  1. 然后我使用 Select 活动为 SalesSource 中的 CustomerId 提供别名

  1. DerivedColumn 中,我选择 Add column 并输入表达式 iifNull(SalesCustomerID, 'NO', 'YES') 以生成一个名为 'registeredSales' 的新列,如下所示:

  2. 结果的最后一列显示:

【讨论】:

  • 所有源都是数据湖中的平面文件,因此我无法在源定义中进行该查询。我可以使用相同的 iifnull() 函数以相同的方式连接两个源然后进行比较吗?
  • 您的文件是 csv 格式的吗?也可以比较,请看我更新的答案。
  • registeredSales 是新列,不是连接流的一部分,但您在该列中使用了表达式 iifNull(),当您尝试构建表达式时,找不到该列。跨度>
  • 我们可以生成由 DerivedColumn 活动创建的注册销售列。请查看我的更新答案。
猜你喜欢
  • 2018-10-29
  • 1970-01-01
  • 1970-01-01
  • 2021-11-24
  • 2022-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多