Вам необходимо указать либо SELECT
, либо EXTRACT
. Поскольку вы извлекаете файлы, вы захотите использовать EXTRACT
.
Если я правильно понимаю ваш вопрос, вы хотите запускать различные сценарии U-SQL на основе имени файла.
Есть несколько способов сделать это:
1) использовать условия If в фабрике данных для вызова различных сценариев U-SQL на основе имени файла. Вложение операторов if позволит вам иметь более двух вариантов. Есть несколько функций для работы со строками , которые помогут вам в этом. Скажем, один путь - @item.Contains('a')
.
{
"name": "<Name of the activity>",
"type": "IfCondition",
"typeProperties": {
"expression": {
"value": "@item() == <file name>",
"type": "Expression"
}
"ifTrueActivities": [
{
"<U-SQL script = 1>"
}
],
"ifFalseActivities": [
{
"<U-SQL script 2>"
}
]
}
}
2) Второй вариант - использовать один скрипт U-SQL и выполнить разделение оттуда. Опять же, функции управления строками могут помочь с помощью сопоставления с образцом. В этом есть некоторое преимущество, поскольку организация может хранить уникальные сценарии в хранимых процедурах, а сценарий U-SQL просто проверяет переданное имя файла и вызывает соответствующий хранимый процесс.
//This would be added by data factory
DECLARE @fileName = "/Samples/Data/SearchLog.tsv";
IF @fileName == "/Samples/Data/SearchLog.tsv"
THEN
@searchlog =
EXTRACT UserId int,
Start DateTime,
Region string,
Query string,
Duration int?,
Urls string,
ClickedUrls string
FROM "/Samples/Data/SearchLog.tsv"
USING Extractors.Tsv();
OUTPUT @searchlog
TO @fileName
USING Outputters.Csv();
ELSE
@searchlog =
EXTRACT UserId int,
Start DateTime,
Region string,
Query string,
Duration int?,
Urls string,
ClickedUrls string
FROM @fileName
USING Extractors.Tsv();
OUTPUT @searchlog
TO "/output/SearchLogResult1.csv"
USING Outputters.Csv();
END;
Нужно подумать о том, что Data Lake Analytics будет более эффективна, если вы сможете объединить несколько файлов в один оператор. Вы можете иметь несколько операторов EXTRACT
и OUTPUT
. Я бы посоветовал вам изучить возможность использования сопоставления с образцом в ваших операторах EXTRACT
для разделения обработки U-SQL без необходимости использования цикла foreach в фабрике данных.