我想使用U-SQL创建一个视图。视图名称只能在编译时使用DECLARE函数定义。
当我尝试在create view语句中使用该变量时,Visual Studio会抛出语法错误。
有解决方法吗?
答案 0 :(得分:0)
此时U-SQL不支持动态U-SQL,但如果您认为这是一个重要的缺失功能,您可以在此处发布功能请求:
https://feedback.azure.com/forums/327234-data-lake
看起来已经有类似的请求可以投票给here。
作为一种变通方法,您可以动态生成U-SQL,然后手动或使用其中一个SDK单独运行脚本,例如使用Powershell,.net。一个简单的例子:
//Dynamic U-SQL
DECLARE @viewName string = "dbo.vw_yourViewName";
// Create dynamic U-SQL
@usql =
SELECT *
FROM ( VALUES
( "USE DATABASE yourDatabase;"),
( String.Format("DROP VIEW IF EXISTS {0};", @viewName)),
( String.Format("CREATE VIEW IF NOT EXISTS {0} AS EXTRACT col1 int, col2 string, col3 string, col4 string, col5 string FROM \"/input/input44.txt\" USING Extractors.Csv();", @viewName))
) AS x (usql);
// Output the statements in the correct sort order
OUTPUT @usql
TO "/output/dynamic.usql"
USING Outputters.Text(delimiter:' ', quoting:false);