我有多个U-SQL脚本,我在每个U-SQL脚本的顶部使用filename变量。有没有办法我们可以将输入和输出文件夹定义到任何配置文件,并读取该变量,常量或任何与Extract
和OUTPUT
@tab1 =
EXTRACT f1 string,
f2 string
FROM **<path from config file>**
USING Extractors.Csv(skipFirstNRows:1);
答案 0 :(得分:1)
目前,U-SQL支持基本URI的概念,但目前硬编码为默认的ADLS帐户的根目录。您可以提交请求以将基URI设置为http://aka.ms/adlfeedback处的其他值,或者使用一些脚本参数化来自行构建。由于脚本可以有许多输入或输出位置,因此将其作为系统配置选项会增加太多的复杂性。
您可以按如下方式参数化您的U-SQL脚本:
// if you want to parameterize the whole path
DECLARE EXTERNAL @in = "/default/input.csv";
// if you have standard output path that you want to optionally overwrite and a user specified output file
DECLARE EXTERNAL @outdir = "/defaultoutput";
DECLARE EXTERNAL @outfile = "output.csv";
DECLARE @out = @outdir + "/" + @outfile;
@data = EXTRACT .... FROM @in USING ....;
...
OUTPUT @res TO @out USING ...;
以上内容也可以包含在程序中并存储在帐户中。
注意:我们正致力于在没有U-SQL语句的情况下对声明和引用进行分组,并将它们存储在元数据中以供将来重用。这将有助于您的方案减少锅炉板#34;。
提交时,您可以使用
添加实际路径DECLARE @in = "/actual/input.csv";
DECLARE @outfile = "myoutput.csv";
//... rest of script or invocation of Procedure.
wBob的回复中的ADF示例正在为您做前缀。其他工具和SDK目前正在定义他们的参数传递模型(除了你自己做前置)。
这是否满足您的需求?
答案 1 :(得分:0)
可以使用Azure数据工厂按here和here运行参数化的U-SQL查询。输入和输出文件夹参数化的管道示例启动:
{
"name": "ComputeEventsByRegionPipeline",
"properties": {
"description": "This is a pipeline to compute events for en-gb locale and date less than 2012/02/19.",
"activities": [
{
"type": "DataLakeAnalyticsU-SQL",
"typeProperties": {
"scriptPath": "adlascripts\\SearchLogProcessing.txt",
"scriptLinkedService": "StorageLinkedService",
"degreeOfParallelism": 3,
"priority": 100,
"parameters": {
"in": "/input/SearchLog.tsv",
"out": "/output/Result.tsv"
}
},
...
您可以在部署ADF作业时阅读配置文件,例如使用Powershell。