Azure Data Factory V2 在触发管道时使用昨天的日期 运行

Azure Data Factory V2 using yesterdays date when triggering a pipeline run

我有一个 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": []
        }
    }
}

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

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

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

当运行这份工作时,您是否也在使用Auto-generated IR或Self-Hosted IR?