在ADF V2中-如何为S3数据集动态将日期(“ yyyyMMdd”))附加到文件名中

时间:2019-08-29 16:38:09

标签: azure-pipelines azure-data-factory-2

我目前正在自动化ADFv2中的管道,其中源数据位于S3中。每天都会创建一个新文件,其结构为“ data_20180829.csv”

我尝试在复制数据活动的fileName字段中检测动态内容以实现此目的。但是,即使我尝试使用@ {concat('data _','20180829.csv')}之类的简单方法(应该解析为正确的值),该源也会失败。

是否可以查看动态内容将解决的内容?

2 个答案:

答案 0 :(得分:0)

这应该只是在数据集中设置文件名表达式的问题,例如

Azure Data Factory dataset settings

请注意,设置是在数据集上完成的,而不是在“复制”活动级别上进行的。还要注意,通过将utcnow函数与formatDateTime结合使用,可以使表达式更加动态,例如:

@concat('data_',formatDateTime(utcnow(),'yyyMMdd_HHmmss'),'.csv')

请注意格式字符串的大小写。大写字母MM以两位数格式表示月份。 HH是24小时制的小时。格式字符串的完整列表为here

数据集的json看起来像这样:

{
    "name": "DelimitedText3",
    "properties": {
        "linkedServiceName": {
            "referenceName": "linkedService2",
            "type": "LinkedServiceReference"
        },
        "annotations": [],
        "type": "DelimitedText",
        "typeProperties": {
            "location": {
                "type": "AzureBlobStorageLocation",
                "fileName": {
                    "value": "@concat('data_',formatDateTime(utcnow(),'yyyMMdd_HHmmss'),'.csv')",
                    "type": "Expression"
                },
                "container": "ang"
            },
            "columnDelimiter": ",",
            "escapeChar": "\\",
            "quoteChar": "\""
        },
        "schema": [
            {
                "type": "String"
            },
            {
                "type": "String"
            },
            {
                "type": "String"
            },
            {
                "type": "String"
            }
        ]
    }
}

答案 1 :(得分:0)

只是扩展wBob所说的。如果要使用foo_YYYY \ MM \ DD \之类的结构,则可以始终使用

{{1}}