2017-08-21 1 views
0

Je voudrais créer une vue en utilisant U-SQL. Le nom de la vue peut uniquement être défini lors de la compilation à l'aide de la fonction DECLARE.Créer une vue avec l'identifiant comme variable sur u-sql

Visual Studio lance une erreur de syntaxe lorsque j'essaie d'utiliser la variable dans l'instruction create view.

Y a-t-il une solution de contournement pour cela?

Répondre

0

U-SQL ne prend pas en charge U-SQL dynamique à ce stade mais si vous pensez que cela est une caractéristique importante manquante, vous pouvez poster une demande de fonctionnalité ici:

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

On dirait qu'il est déjà une demande similaire, vous pouvez voter pour here. Pour résoudre ce problème, vous pouvez générer l'U-SQL dynamiquement, puis exécuter le script séparément, soit manuellement, soit en utilisant l'un des SDK, par exemple en utilisant PowerShell, .net. Un exemple simple:

//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); 

D'autres exemples de U-SQL dynamique (ou plus précisément, U-SQL généré dynamiquement) sont here et here.