Создайте представление с идентификатором в качестве переменной на u-sql

Я хотел бы создать представление с помощью U-SQL. Имя представления можно определить только во время компиляции с помощью функции DECLARE.

Visual Studio выдает синтаксическую ошибку, когда я пытаюсь использовать переменную в инструкции создания представления.

Есть ли обходной путь для этого?


person Absolute Beginner    schedule 21.08.2017    source источник


Ответы (1)


На данный момент U-SQL не поддерживает динамический U-SQL, хотя, если вы считаете, что это важная недостающая функция, вы можете опубликовать запрос функции здесь:

https://feedback.azure.com/forums/327234-data-lake

Похоже, что уже есть аналогичный запрос, за который вы можете проголосовать здесь.

В качестве обходного пути вы можете динамически сгенерировать 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);

Другими примерами динамического U-SQL (или, точнее, динамически сгенерированного U-SQL) являются здесь и здесь.

person wBob    schedule 21.08.2017