【问题标题】:Azure Data Factory V2 using yesterdays date when triggering a pipeline run触发管道运行时使用昨天日期的 Azure 数据工厂 V2
【发布时间】:2020-09-23 22:15:37
【问题描述】:

我有一个 Azure 数据工厂 (v2),用于每晚(UTC 凌晨 2 点)将数据库的内容备份到 Blob 存储区。但是,我希望文件的名称包含生成备份的月份 (dd),但它始终是前一天。

文件名是使用表达式生成的-

@{formatDateTime(pipeline().parameters.windowStart,'dd')}.json

例如,今天凌晨 3 点的跑步应该被称为23.json,但实际上它被称为22.json。凌晨 3 点是我在英国的预期运行时间,目前是 BST (UTC+1)

查看运行的参数,我可以看到windowStart确实是一天出来的。例如,23 日凌晨 2 点触发的今天运行有9/22/2020 2:00:00 AM

是否有人能够解释为什么数据工厂会以这种方式运行,并希望我能够使其按预期工作。

这是从数据工厂导出的触发器。

{
    "name": "Trigger_Copy_Transactions",
    "properties": {
        "annotations": [],
        "runtimeState": "Started",
        "pipeline": {
            "pipelineReference": {
                "referenceName": "Copy_Transactions",
                "type": "PipelineReference"
            },
            "parameters": {
                "windowStart": "@trigger().outputs.windowStartTime"
            }
        },
        "type": "TumblingWindowTrigger",
        "typeProperties": {
            "frequency": "Hour",
            "interval": 24,
            "startTime": "2020-08-24T02:00:00Z",
            "delay": "00:00:00",
            "maxConcurrency": 50,
            "retryPolicy": {
                "intervalInSeconds": 30
            },
            "dependsOn": []
        }
    }
}

【问题讨论】:

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


    【解决方案1】:

    您可以尝试的一件事是强制在您的 IR 运行所在的时区生成文件。例如,我们有一个自托管 IR,因此当我们生成文件时,它与 EST 时间不匹配。在那种情况下,我做了以下事情:

    @concat('File_name',formatDateTime(
    convertFromUtc(utcnow(),'Eastern Standard Time'),'yyyy-MM-dd'),'.txt')
    

    也许这样做会强制确定正确的日期?

    您在运行此作业时是否还使用自动生成的 IR 或自托管 IR?

    【讨论】:

    • 完美,谢谢,现在备份的名称完全符合我的预期。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-24
    • 1970-01-01
    • 2018-10-02
    • 2021-07-15
    相关资源
    最近更新 更多