如何使用ADF的参数在文件夹中为所有文件运行U-SQL



不能将"在"参数中传递给u-sql以使用文件夹中的所有文件。

在我的ADF管道中,我有以下参数设置:

"parameters": {
    "in": "$$Text.Format('stag/input/{0:yyyy}/{0:MM}/{0:dd}/*.csv', SliceStart)",
    "out": "$$Text.Format('stag/output/{0:yyyy}/{0:MM}/{0:dd}/summary.csv"
}

和U-SQL脚本进行提取:

@couponlog =
    EXTRACT 
    Id int,
    [Other columns here]
FROM @in
USING Extractors.Csv(skipFirstNRows:1);

但是我在执行过程中找不到文件。文件存在于数据湖中,但我不知道将其作为参数传递的正确语法。

我确定有很多解决问题的方法,但是我发现的是,而不是从ADF管道中传递参数,而是更容易使用虚拟列。在我的情况下 v_date

@couponlog =
    EXTRACT 
    Id int,
    [Other columns here],
    v_date DateTime
FROM "stag/input/{v_date:yyyy}/{v_date:MM}/{v_date:dd}/{*}.csv"
USING Extractors.Csv(skipFirstNRows:1);

使用此u-sql脚本找到了所有文件

我正在使用ADF输入的日期毫无麻烦。我仅通过日期部分,然后在USQL中格式化:

"parameters": {
  "in": "$$Text.Format('{0:yyyy}/{0:MM}/{0:dd}/', SliceStart)"
}

然后在USQL中:

DECLARE @inputPath = "path/to/file/" + @in + "{*}.csv";
DECLARE @outputPath = "path/to/file/" + @in + "output.csv";

这些变量然后根据需要在脚本中使用。

我在ADF中使用此输入参数来读取带有虚拟列(文件)的文件夹中的所有文件,以检索文件的名称

"parameters": {
    "in": "$$Text.Format('storage/folder/{0:yyyy}-{0:MM}/{1}.csv', SliceStart, '{file:*}')",
    "out": "$$Text.Format('otherFolder/{0:yyyy}-{0:MM}/result.txt', SliceStart)"
}

相关的U-SQL

@sales =
    EXTRACT column1 string,
            column2 decimal,
            file string
    FROM @in
    USING Extractors.Csv(silent : true);

相关内容

  • 没有找到相关文章