U-SQL은 파일을 추출하는 동안 디렉토리 및 파일 이름 패턴 일치를 지원합니다. 내가 알고 싶었던 것은 (맞춤 추출기를 구현하지 않고) ADLS에서 파일의 생성 날짜를 기반으로 패턴 일치를 지원합니다.U-SQL은 ADLS에서 생성 날짜를 기준으로 파일 추출을 지원합니까?
폴더에 몇 개월에 걸쳐 생성 된 파일이 포함되어 있다고 가정하면 (파일 이름에는 파일 이름의 일부로 날짜가 없음) 특정 달의 파일 만 가져 오는 방법이 있습니다.
U-SQL은 파일을 추출하는 동안 디렉토리 및 파일 이름 패턴 일치를 지원합니다. 내가 알고 싶었던 것은 (맞춤 추출기를 구현하지 않고) ADLS에서 파일의 생성 날짜를 기반으로 패턴 일치를 지원합니다.U-SQL은 ADLS에서 생성 날짜를 기준으로 파일 추출을 지원합니까?
폴더에 몇 개월에 걸쳐 생성 된 파일이 포함되어 있다고 가정하면 (파일 이름에는 파일 이름의 일부로 날짜가 없음) 특정 달의 파일 만 가져 오는 방법이 있습니다.
U-SQL EXTRACT 연산자는 파일에 대한 메타 데이터 (예 : 만든 날짜)를 인식하지 못하고 파일 이름 만 인식합니다.
현재 파일 메타 데이터 속성에 액세스하거나 사용할 수있는 방법이 없습니다. 투표 및 유스 케이스를 다음 의견 항목에 추가하십시오. https://feedback.azure.com/forums/327234-data-lake/suggestions/10948392-support-functionality-to-handle-file-properties-fr
아마도 .NET SDK를 사용하여 솔루션을 구축 할 수 있습니다. 다소 단순한 경우 PowerShell을 사용하여 날짜 시간 기준을 충족하는 모든 파일을 포함하는 파일을 만들 수 있습니다. 그런 다음 원하는대로 콘텐츠를 소비하십시오.
# Log in to your Azure account
Login-AzureRmAccount
# Modify variables as required
$DataLakeStoreAccount = "<yourDataLakeStoreAccountNameHere>";
$DataLakeAnalyticsAccount = <yourDataLakeAnalyticsAccountNameHere>";
$DataLakeStorePath = "/Samples/Data/AmbulanceData/"; #modify as desired
$outputFile = "Samples/Outputs/ReferenceGuide/filteredFiles.csv"; #modify as desired
$filterDate = "2016-11-22";
$jobName = "GetFiles";
# Query directory and build main body of script. Note, there is a csv filter.
[string]$body =
"@initial =
SELECT * FROM
(VALUES
" +
(Get-AzureRmDataLakeStoreChildItem -Account $DataLakeStoreAccount -Path $DataLakeStorePath |
Where {$_.Name -like "*.csv" -and $_.Type -eq "FILE"} | foreach {
"(""" + $DataLakeStorePath + $_.Name + """, (DateTime)FILE.CREATED(""" + $DataLakeStorePath + $_.Name + """)), `r`n" });
# formattig, add column names
$body =
$body.Substring(0,$body.Length-4) + "
) AS T(fileName, createDate);";
# U-SQL query and OUTPUT statement
[string]$output =
"
// filter results based on desired time frame
@filtered =
SELECT fileName
FROM @initial
WHERE createDate.ToString(""yyyy-MM-dd"") == ""$filterDate"";
OUTPUT @filtered
TO ""$outputFile""
USING Outputters.Csv();";
# bring it all together
$script = $body + $output;
#Execute job
$jobInfo = Submit-AzureRmDataLakeAnalyticsJob -Account $DataLakeAnalyticsAccount -Name $jobName -Script $script -DegreeOfParallelism 1
#check job progress
Get-AzureRmDataLakeAnalyticsJob -Account $DataLakeAnalyticsAccount -JobId $jobInfo.JobId -ErrorAction SilentlyContinue;
Write-Host "You now have a list of desired files to check @ " $outputFile