【问题标题】:How to create a folder based on date using Data Factory?如何使用数据工厂根据日期创建文件夹?
【发布时间】:2015-11-24 19:06:56
【问题描述】:

我正在使用数据工厂,并且我有一个将数据从一个位置复制到另一个位置的活动。但是,我希望目标位置类似于“容器/年/月/日”,其中自动生成年、月和日。源地址和目标地址作为参数提供给我的工作,因此它们应该位于活动的参数部分。我被卡住了,不知道如何指定它们

【问题讨论】:

  • 如何将参数传递给活动?管道中的活动没有参数部分....

标签: azure cortana-intelligence azure-data-factory


【解决方案1】:

如果您使用的是直接复制活动,那么您可以像输入文件一样指定 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 Activity,那么您需要将参数作为 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))"
          }
        },

然后读取 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/的示例文档

【讨论】:

    猜你喜欢
    • 2021-01-01
    • 2013-05-08
    • 1970-01-01
    • 1970-01-01
    • 2020-06-23
    • 2021-04-14
    • 2021-09-06
    • 1970-01-01
    • 2019-06-24
    相关资源
    最近更新 更多