2016-12-08 6 views
1

C#を使用せずにU-SQLでループ(while/for)を実装することは可能です。そうでない場合は、誰でもu-sqlでループを実装するためにc#構文を共有できます。U-SQLでループを実装する方法

私は特定の日付から日付までファイルを抽出していますが、今は手動でファイルパスを書き込むことでこれを抽出しています。

DROP VIEW IF EXISTS dbo.ReadingConsolidated; 
CREATE VIEW IF NOT EXISTS dbo.ReadingConsolidated 
AS 

EXTRACT  
     ControllerID int?,   
     ParameterID int?, 
     MeasureDate DateTime, 
     Value float 

FROM 
"adl://eclwpsdatalake.azuredatalakestore.net/2015/7/1/Reading.csv", 
"adl://eclwpsdatalake.azuredatalakestore.net/2015/7/2/Reading.csv", 
"adl://eclwpsdatalake.azuredatalakestore.net/2015/7/3/Reading.csv", 
"adl://eclwpsdatalake.azuredatalakestore.net/2015/7/4/Reading.csv", 
"adl://eclwpsdatalake.azuredatalakestore.net/2015/7/5/Reading.csv", 
"adl://eclwpsdatalake.azuredatalakestore.net/2015/7/6/Reading.csv", 
"adl://eclwpsdatalake.azuredatalakestore.net/2015/7/7/Reading.csv" 

注:これらのファイルは別のフォルダにあります。

上記のことはループを使って可能ですか?

答えて

1

適切な方法は、virtual columnsを使用し、次にpartition eliminationを使用して、述語に一致するファイルのみが実際に読み取られるようにします(job graphで確認できます)。 //eclwpsdatalake.azuredatalakestore.net/ {日:YYYY}/{日付:M}行以下

CREATE VIEW IF NOT EXISTS dbo.ReadingConsolidated 
AS 

EXTRACT  
     ControllerID int?,   
     ParameterID int?, 
     MeasureDate DateTime, 
     Value float, 
     date DateTime 
    FROM 
    "adl://eclwpsdatalake.azuredatalakestore.net/{date:yyyy}/{date:M}/{date:d}/Reading.csv"; 


@res = 
    SELECT * FROM dbo.ReadingConsolidated 
    WHERE date BETWEEN DateTime.Parse("2015/07/01") AND DateTime.Parse("2016/07/07"); 
+0

が順番に実行時間」ADLを増加させるフォルダを、存在するすべてのファイルを拾っている/ {日付:d} /Reading.csv ";しかし、私はフォルダからいくつかのファイルが欲しい – Bond

関連する問題