可以在不使用C#的情况下在U-SQL中实现循环(while / for)。如果不是,任何人都可以共享c#语法来实现u-sql中的循环。
我正在从特定日期提取文件到日期,但是现在我通过手动编写文件路径来解压缩。
DROP VIEW IF EXISTS dbo.ReadingConsolidated;
CREATE VIEW IF NOT EXISTS dbo.ReadingConsolidated
AS
EXTRACT
ControllerID int?,
sensorID int?,
MeasureDate DateTime,
Value float
FROM
"adl://datalake.azuredatalakestore.net/2015/7/1/Reading.csv",
"adl://datalake.azuredatalakestore.net/2015/7/2/Reading.csv",
"adl://datalake.azuredatalakestore.net/2015/7/3/Reading.csv",
"adl://datalake.azuredatalakestore.net/2015/7/4/Reading.csv",
"adl://datalake.azuredatalakestore.net/2015/7/5/Reading.csv",
"adl://datalake.azuredatalakestore.net/2015/7/6/Reading.csv",
"adl://datalake.azuredatalakestore.net/2015/7/7/Reading.csv"
注意:这些文件存在于不同的文件夹中。
使用循环可以进行上述操作吗?
答案 0 :(得分:2)
执行此操作的正确方法是使用virtual columns,然后依赖partition elimination,以便实际只读取匹配谓词的文件(您可以在job graph中确认)。
CREATE VIEW IF NOT EXISTS dbo.ReadingConsolidated
AS
EXTRACT
ControllerID int?,
ParameterID int?,
MeasureDate DateTime,
Value float,
date DateTime
FROM
"adl://datalake.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");