副本活动期间动态追加日期时间到文件名或BLOB数据集指定名称时

问题描述 投票:0回答:3

我将文件保存到Blob存储在数据工厂V2,当我指定保存到我调用文件(例如)文件1的位置和它的blob保存为文件1,没有问题。但是,我可以使用动态内容功能于日期追加到文件名,以便它像file1_01-07-2019_14-30-00?(1月7日14:30:00,以防万一它读起来拗口)。可替代地,可以予输出的结果网络挂接活动到下一个活动(函数)的(文件名)?

谢谢。

blob azure-data-factory-2 dynamic-content
3个回答
1
投票

我不能让这没有直接编辑拷贝管道JSON文件工作(2018末 - 可能不再需要)。你需要拷贝管道JSON和设置在数据集中设置文件名参数定义的动态代码。

在数据集定义文件夹路径和/或文件名“参数”(点击“+新建”,并给他们你喜欢的任何名称)如sourceFolderPath,sourceFileName。

然后,在下“连接”的数据集包括在“文件路径”定义如下:@DataSet()sourceFolderPath和@DataSet()的“/”(见下文截图)的sourceFileName任一侧上。

在管道窗口的右上角拷贝管道点击“代码”,并查找下面的代码要通过动态文件名定义的“斑点”对象下 - 它的“参数”代码不包括其添加到的JSON并点击“完成”按钮 - 可能需要在“输入”,“输出”的代码或两者取决于你在你的流动所引用的动态文件 - 下面是其中输出包括在日期参数的示例文件夹路径和文件名(日期由触发参数设置):

  "inputs": [
     {
        "referenceName": "tmpDataForImportParticipants",
        "type": "DatasetReference"
     }
  ],
  "outputs": [
      {
         "referenceName": "StgParticipants",
         "type": "DatasetReference",
         "parameters": {
              "sourceFolderPath": {
                   "value": <derived value of folder path>,
                   "type": "Expression"
               },
               "sourceFileName": {
                    "value": <derived file name>,
                    "type": "Expression"
               }
          }
      }
  ]

文件夹路径的导出值可以是像下面这样 - 这导致YYYY / MM / DD的指定blobContainer内的文件夹路径:

“blobContainer / @ {FORMATDATETIME(管道()。parameters.windowStart, 'YYYY')} / {@ FORMATDATETIME(管道()。parameters.windowStart, 'MM')} / {@ FORMATDATETIME(管道()。parameters.windowStart , 'DD')}”

或它可以被硬编码例如“blobContainer /目录路径” - 不包括“/”在启动或定义的结束

导出的文件名可以是类似如下:

“@concat(串(管道()。参数.'_”,FORMATDATETIME(数据集()。WindowStartTime, 'MM-DD-yyyy_hh毫米-β'))>, 'TXT')”

您可以包括由触发例如设置任何参数一个ID值,通过包括管线()。参数帐户名称,等等。

Dynamic Dataset Parameters example

Dynamic Dataset Connection example


0
投票

您可以添加数据集参数,这样的WindowStartTime,其格式为2019-01-10T13:50:04.279Z。然后,你将有类似下面的动态文件名:@concat( 'file1_',FORMATDATETIME(数据集()WindowStartTime, 'MM-DD-yyyy_hh-MM-SS')。)。

要在副本活动中使用,你还需要增加一个管道参数。


0
投票

一旦你建立了副本活动,并选择您BLOB数据集作为水槽,你需要投入的WindowStartTime的值,这可以只是一个时间戳例如1900-01-01T13:00:00Z,或者你可以把一个管道参数到这一点。 enter image description here

有一个参数可能会更有帮助,如果你设定时间表触发,你就可以输入这个WindowStartTime时间戳由触发运行时。为此,您将使用@trigger()。scheduledTime作为触发参数WindowStartTime值。 https://docs.microsoft.com/en-us/azure/data-factory/concepts-pipeline-execution-triggers#trigger-type-comparison

© www.soinside.com 2019 - 2024. All rights reserved.