我们正在使用.net API创建Azure数据工厂管道。这里我们使用sqlReaderQuery提供输入数据源。通过这种方式,此查询可以使用多个表。 所以问题是我们无法从此查询中提取任何单个表,并在数据集中将tableName作为typeProperty提供,如下所示:
"typeProperties": {
"tableName": "?"
}
创建数据集时,它会抛出异常,因为tableName是必需的。在这种情况下,我们不想提供tableName?做同样的事情还有其他选择吗? 我们还在数据集中提供结构。
答案 0 :(得分:1)
不幸的是,你不能这样做。您需要为每个表部署数据集。 Azure Data Factory会在执行时间之前为每个活动生成切片。在不知道表名的情况下,数据工厂在生成这些输入切片时会失败。
如果要从多个表中读取数据,请使用存储过程作为数据集的输入。在存储过程中进行连接和输入整形。
您还可以通过构建一个在数据库级别运行的动态自定义活动来解决这个问题。执行此操作时,您将使用虚拟输入数据集和通用输出数据集,并自行控制大部分过程。
答案 1 :(得分:0)
这个属性是强制性的,有点令人讨厌,特别是如果你提供了一个... ReaderQuery。对于Oracle副本,我使用了sys.dual作为表名,这是Oracle中的一种内置虚拟表。在SQL Server中,您可以使用其中一个系统视图或设置虚拟表。