簡體   English   中英

Azure數據工廠(ADFv2)-如何處理USQL作業中不同文件夾中的多個輸入文件

[英]Azure data factory (ADFv2) - how to process multiple input files from different folder in a USQL job

我們需要使用Azure數據工廠和USQL處理來自不同文件夾的多個文件。

這是我們擁有的文件夾結構

年->月->日

每個日期都有一個文件夾,例如1,2,3 ... 31。 要求是從特定文件夾中讀取文件,並將其傳遞給USQL進行分析處理。 我們需要處理多個日期的數據。 數據工廠中有什么方法可以讀取多個文件夾中的數據。

示例:我需要讀取特定月份的日期,1,7和10的數據。 我不想讀取該月的所有文件

如果您遇到了上述情況的解決方案,請告訴我們。

就在這里。 您應該使用虛擬列。 示例:您的文件只有column1和column2。

PATH1 = / yourFolder /十一分之二千零一十八/ 1 / FILE.CSV

PATH2 = / yourFolder /十分之二千零十八/ 25 / FILE.CSV

DECLARE date1 = new DateTime(2018,11,1);
DECLARE date2 = new DateTime(2018,10,25);
@inputData = EXTRACT column1 string,
column2 string, 
FileDate DateTime //this is virtual column
FROM "/yourFolder/{FileDate:yyyy}/{FileDate:MM}/{FileDate:dd}/file.csv"
USING Extractors.Text(delimiter:';',skipFirstNRows:1);
@res = SELECT * FROM @inputData WHERE FileDate == date1 AND FileDate ==date2;

這樣,您可以使用虛擬列管理文件夾結構。 當然,如果要從某個日期范圍等獲取文件,則可以使用BETWEEN。HTH

PS您可以將參數從ADF發送到USQL存儲過程,我只是給出了一個如何使用特定文件的示例。

下面的代碼工作。 如上所述。

DECLARE EXTERNAL @startDate字符串=“ 2018-08-01”; //將從ADF DECLARE EXTERNAL @endDate string =“ 2018-08-31”;傳遞值; //值將從ADF傳遞

DECLARE @report_start_date DateTime = DateTime.ParseExact(@startDate,“ yyyy-MM-dd”,CultureInfo.InvariantCulture); DECLARE @report_end_date DateTime = DateTime.ParseExact(@endDate,“ yyyy-MM-dd”,CultureInfo.InvariantCulture);

DECLARE @ INPUT_FILE = @ valueFromADF +“ / {date:yyyy} / {date:M} / {date:d} / {filename} .txt”;

@dataAsString =提取值字符串,日期DateTime FROM @INPUT_FILE使用Extractors.Text(delimiter:'\\ n'); @dataAsStrings = SELECT * FROM @dataAsString在@report_start_date和@report_end_date之間的日期;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM