Azure数据工厂:如何在没有容器名称情况下从@triggerBody().folderPath中获取新文件的位置?

m1m5dgzv  于 2022-12-14  发布在  其他
关注(0)|答案(2)|浏览(310)

创建存储事件触发器时,在@triggerBody().folderPath中找到触发事件的文件的路径。但是,该路径还包含容器名称。我希望通过在数据流通配符路径选项中使用@triggerBody().folderPath来动态设置数据流输入文件夹。此选项已设置容器名称。如何获取 * 不带 * 容器名称的文件路径?

ilmyapht

ilmyapht1#

  1. Negative到Manage页面,然后单击事件触发器的代码按钮。

2.更改参数代码

"parameters": {
            "folderpath": "@triggerBody().folderPath"
        }

"parameters": {
            "folderpath": "@substring(triggerBody().folderPath,add(indexof(triggerBody().folderPath,'/'),1),sub(length(triggerBody().folderPath),add(indexof(triggerBody().folderPath,'/'),1)))"
        }

然后,您可以在参数中获取文件夹路径。

t98cgbkg

t98cgbkg2#

如果需要将@triggerBody().folderPath用于 * 源数据集 *,只需省略File path选项的File system字段:

如果省略File system字段,则会自动假定它是Directory字段的第一个组件,它与@triggerBody().folderPath的输出相匹配。请注意,在上面的屏幕截图中,我已将触发器配置为从触发器参数设置管道参数,然后我将从源数据集引用管道参数。
我仍然不明白如何为sink数据集设置正确的路径,因为我想复制到一个不同的blob存储文件系统。我想我仍然需要使用other answer中的hack。

编辑

我发现了一个更直接的方法来剥离路径中的前n个目录:

@join(skip(split(@triggerBody().folderPath, '/'), 1), '/')

说明:
首先,我们在/分隔符处拆分路径,然后跳过第一项,最后,用/作为连接字符将所有项连接起来。

相关问题