我们面临的挑战是以下挑战:
在Azure SQL数据库中,我们有多个表,这些表具有以下表名:table_num其中num只是一个整数。这些表是动态创建的,因此表的数量可以变化。 (从表_1,表_2到表_N)所有表具有相同的列。
作为U-SQL脚本文件的一部分,我们希望对所有这些表执行相同的查询,并使用所有这些查询的组合结果生成输出csv文件。
我们尝试了几件事:
U-SQL不允许循环,因此我们考虑在Azure SQL数据库中创建一个视图,该视图将使用某种游标来组合所有表。然后,U-SQL文件将查询该视图(使用外部源)。但是,只能通过函数在Azure SQL数据库中创建视图,而函数不能执行动态SQL甚至不能调用存储过程...
我们没有找到直接从U-SQL调用外部数据源存储过程的方法
我们不想每次添加新表时都更新U-SQL作业...
例如,是否可以通过自定义提取器在U-SQL中执行此操作?还有其他想法吗?
答案 0 :(得分:0)
我能想到的一种解决方案是使用Azure Data Factory (v2)来协助实现这一目标。
您可以使用以下活动创建管道:
如果您很少或没有使用ADF v2的经验,请记住花一些时间来了解它,但是一旦您学会了,您就不会后悔。拥有GUI来创建管道是一个不错的收获。
编辑:正如@wBob提到的另一种(容易得多)的解决方案是,以某种方式创建一个包含所有行的表,因为所有动态生成的表都具有相同的架构。例如,您可以创建一个存储过程来填充此表。