Я использую фабрику данных, и у меня есть активность, которая копирует данные из одного местоположения в другое. Однако я хотел бы, чтобы место назначения было похоже на «контейнер/год/месяц/день», где автоматически генерируются год, месяц и день. Адрес источника и получателя присваивается моей задаче в качестве параметров, поэтому они должны находиться в аргументационной части действия. Я застрял и не знаю, как определить ихКак создать папку на основе даты с помощью Data Factory?
2
A
ответ
2
Если вы используете прямой Copy Activity, то вы можете указать путь к папке Blob таким же образом, что вы делаете для входного файла:
{
"name": "AzureBlobOutput",
"properties": {
"type": "AzureBlob",
"linkedServiceName": "StorageLinkedService",
"typeProperties": {
"folderPath": "mycontainer/myfolder/yearno={Year}/monthno={Month}/dayno={Day}/hourno={Hour}/",
"partitionedBy": [
{
"name": "Year",
"value": {
"type": "DateTime",
"date": "SliceStart",
"format": "yyyy"
}
},
{
"name": "Month",
"value": {
"type": "DateTime",
"date": "SliceStart",
"format": "%M"
}
},
{
"name": "Day",
"value": {
"type": "DateTime",
"date": "SliceStart",
"format": "%d"
}
},
{
"name": "Hour",
"value": {
"type": "DateTime",
"date": "SliceStart",
"format": "%H"
}
}
],
"format": {
"type": "TextFormat",
"columnDelimiter": "\t",
"rowDelimiter": "\n"
}
},
"availability": {
"frequency": "Hour",
"interval": 1
}
}
}
Взятые из образцов документации здесь https://azure.microsoft.com/en-us/documentation/articles/data-factory-azure-blob-connector/
Если вы используете пользовательский .NET активность, то вам нужно передать параметры в части ExtendedProperties внутри секции typeProperties JSON:
"typeProperties": {
"AssemblyName": "MyDotNetActivity.dll",
"EntryPoint": "MyDotNetActivityNS.MyDotNetActivity",
"PackageLinkedService": "StorageLinkedService",
"PackageFile": "customactivitycontainer/MyDotNetActivity.zip",
"extendedProperties": {
"SliceStart": "$$Text.Format('{0:yyyyMMddHH-mm}', Time.AddMinutes(SliceStart, 0))"
}
},
, а затем прочитать метаданные ExtendedProperties в вашем C# класса, как показано здесь:
public IDictionary<string, string> Execute(
IEnumerable<LinkedService> linkedServices,
IEnumerable<Dataset> datasets,
Activity activity,
IActivityLogger logger)
{
// to get extended properties (for example: SliceStart)
DotNetActivity dotNetActivity = (DotNetActivity)activity.TypeProperties;
string sliceStartString = dotNetActivity.ExtendedProperties["SliceStart"];
// to log all extended properties
IDictionary<string, string> extendedProperties = dotNetActivity.ExtendedProperties;
logger.Write("Logging extended properties if any...");
foreach (KeyValuePair<string, string> entry in extendedProperties)
{
logger.Write("<key:{0}> <value:{1}>", entry.Key, entry.Value);
}
....
Взятые из образцов документации здесь https://azure.microsoft.com/en-gb/documentation/articles/data-factory-use-custom-activities/
Как вы передать аргументы деятельности? нет раздела аргументов для активности в конвейере .... –