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