我有多個U-SQL腳本,我在每個U-SQL腳本的頂部使用filename變量。有什麼辦法,我們可以定義輸入和輸出文件夾中的任何配置文件和讀取變量,常量或與Extract
和OUTPUT
用於輸入和輸出文件夾位置的配置文件
@tab1 =
EXTRACT f1 string,
f2 string
FROM **<path from config file>**
USING Extractors.Csv(skipFirstNRows:1);
我有多個U-SQL腳本,我在每個U-SQL腳本的頂部使用filename變量。有什麼辦法,我們可以定義輸入和輸出文件夾中的任何配置文件和讀取變量,常量或與Extract
和OUTPUT
用於輸入和輸出文件夾位置的配置文件
@tab1 =
EXTRACT f1 string,
f2 string
FROM **<path from config file>**
USING Extractors.Csv(skipFirstNRows:1);
使用他們的任何東西它可以運行使用Azure的參數化的U型SQL查詢數據工廠根據here和here。管道的例子在那裏開始的輸入和輸出文件夾參數化:
{
"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您可以閱讀你的配置文件。
當前U-SQL支持基本URI的概念,但是它目前被硬編碼爲默認的ADLS帳戶的根目錄。您可以在http://aka.ms/adlfeedback上提出將基礎URI設置爲不同值的請求,或者使用一些腳本參數化來自行構建。由於腳本可以有很多輸入或輸出位置,因此將其作爲系統配置選項會增加太多的複雜性。
可以參數化你的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語句並將其存儲在元數據中以供將來重用的功能。這將有助於您減少「鍋爐板」的情況。
在提交你可以在前面加上
DECLARE @in = "/actual/input.csv";
DECLARE @outfile = "myoutput.csv";
//... rest of script or invocation of Procedure.
的ADF例子wBob的答覆的實際路徑是做預謀你。其他工具和SDK目前正在開發定義它們的參數傳遞模型(超越了你自己預先設定的範圍)。
這是否滿足您的需求?