【问题标题】:Azure Data Factory Input dataset with sqlReaderQuery as source以 sqlReaderQuery 作为源的 Azure 数据工厂输入数据集
【发布时间】:2017-09-22 20:05:43
【问题描述】:
我们正在使用 .net API 创建 Azure 数据工厂管道。在这里,我们使用 sqlReaderQuery 提供输入数据源。通过这种方式,这个查询可以使用多个表。
所以问题是我们不能从这个查询中提取任何单个表,并在 Dataset 中将 tableName 作为 typeProperty,如下所示:
"typeProperties": {
"tableName": "?"
}
创建数据集时会抛出异常,因为 tableName 是必需的。在这种情况下我们不想提供 tableName 吗?有没有其他方法可以做同样的事情?
我们还在数据集中提供结构。
【问题讨论】:
标签:
azure
azure-data-factory
【解决方案1】:
不幸的是,你不能在本地做到这一点。您需要为每个表部署一个数据集。 Azure 数据工厂在执行时间之前为每个活动生成切片。在不知道表名的情况下,数据工厂在生成这些输入切片时会失败。
如果要从多个表中读取数据,则使用存储过程作为数据集的输入。在存储过程中进行连接和输入整形。
您还可以通过构建一个动态的自定义活动来解决这个问题,例如,在数据库级别运行。执行此操作时,您将使用虚拟输入数据集和通用输出数据集并自己控制大部分过程。
【解决方案2】:
这个属性是强制性的有点麻烦,特别是如果您提供了...ReaderQuery。对于 Oracle 副本,我使用 sys.dual 作为表名,这是 Oracle 中的一种内置虚拟表。在 SQL Server 中,您可以使用其中一个系统视图或设置一个虚拟表。