2017-01-03 54 views
3

我有多個U-SQL腳本,我在每個U-SQL腳本的頂部使用filename變量。有什麼辦法,我們可以定義輸入和輸出文件夾中的任何配置文件和讀取變量,常量或與ExtractOUTPUT用於輸入和輸出文件夾位置的配置文件

@tab1 = 
    EXTRACT f1 string, 
      f2 string 
    FROM **<path from config file>** 
    USING Extractors.Csv(skipFirstNRows:1); 

回答

0

使用他們的任何東西它可以運行使用Azure的參數化的U型SQL查詢數據工廠根據herehere。管道的例子在那裏開始的輸入和輸出文件夾參數化:

{ 
    "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您可以閱讀你的配置文件。

1

當前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目前正在開發定義它們的參數傳遞模型(超越了你自己預先設定的範圍)。

這是否滿足您的需求?