我们使用.NET API创建Azure数据出厂管道。在这里,我们使用SQLReaderQuery提供输入数据源。根据此查询,可以使用多个表。因此,问题是我们不能从此查询中提取任何单个表,并在数据集中给出Tablename作为Typeproperty,如下所示:
"typeProperties": {
"tableName": "?"
}
在创建数据集时,它会引发异常,因为tablename是强制性的。在这种情况下,我们不想提供tablename?还有其他选择吗?我们还在数据集中提供结构。
不幸的是,您无法本地这样做。您需要为每个表部署一个数据集。Azure数据工厂在执行时间之前为每个活动生产切片。在不知道表名称的情况下,数据工厂在生产这些输入片时会失败。
如果要从多个表中读取,请使用存储过程作为数据集的输入。在存储过程中进行连接并输入成型。
您还可以通过在数据库级别上构建动态自定义活动来解决此问题。执行此操作时,您将使用虚拟输入数据集和通用输出数据集,并自己控制大部分过程。
这有点令人讨厌,该属性是强制性的,尤其是如果您提供了...读者。对于Oracle副本,我使用sys.dual作为表名称,这是Oracle中的一种内置虚拟表。在SQL Server中,您可以使用系统视图之一或设置虚拟表。