副本中的正则表达式附加列 Activity Azure 数据工厂
Regex Additional Column in Copy Activity Azure Data Factory
我正在尝试解析复制 Activity 的“其他列”部分中的 $$FILEPATH
值。
文件路径的格式为:time_period=202105/part-12345.parquet。我只想要文件路径的“202105”部分。我无法对其进行硬编码,因为还有其他 time_period 个文件夹。
我试过 this(来自下面的 link):@{substring($$FILEPATH, add(indexOf($$FILEPATH, '='),1),sub(indexOf($$FILEPATH, '/'),6))}
但我收到一条错误消息 Unrecognized expression: $$FILEPATH
我能想到的唯一其他事情是使用:1) 获取元数据 Activity + 对于每个 Activity 或 2) 可能尝试在 DataFlow
中执行此操作
$$FILEPATH
是保存文件路径的保留变量。您不能使用 $$FILEPATH
.
添加动态表达式
您必须创建一个变量来根据需要存储文件夹名称,然后在附加列中动态传递它。
下面是我试过的。
- 由于您的文件夹名称不是静态的,因此使用
Get Metadata
activity. 获取文件夹名称
获取元数据输出:
- 将输出传递给
ForEach
activity 以循环所有文件夹。
- 在管道级别添加一个变量来存储文件夹名称。
在ForEach
activity中添加set variable
activity从文件夹名称中提取日期部分并将值添加到变量。
@substring(item().name, add(indexof(item().name, '='),1), sub(length(item().name), add(indexof(item().name, '='),1)))
设置变量的输出:
- 在源数据集中,参数化path/filename以动态传递它们。
- 在设置变量和 select 源数据集之后添加
copy data
activity。
a) 将 ForEach
activity 的 当前项目名称 作为文件路径传递。在这里,我将文件名硬编码为 *.parquet
以从该路径复制所有文件(这仅在所有文件具有相同结构时有效)。
b) 在附加列下,添加一个新列,为新列命名,在值下,select 到 添加动态内容 并添加现有变量。
- 在复制数据接收器中添加接收器数据集。我添加了 Azure SQL table 作为我的接收器。
- 在 Mapping 中,将文件名(新列)添加到映射中。
- 当你运行管道时,ForEachactivity运行s Get Metadataactivity中的项目数activity。
输出:
我正在尝试解析复制 Activity 的“其他列”部分中的 $$FILEPATH
值。
文件路径的格式为:time_period=202105/part-12345.parquet。我只想要文件路径的“202105”部分。我无法对其进行硬编码,因为还有其他 time_period 个文件夹。
我试过 this(来自下面的 link):@{substring($$FILEPATH, add(indexOf($$FILEPATH, '='),1),sub(indexOf($$FILEPATH, '/'),6))}
但我收到一条错误消息 Unrecognized expression: $$FILEPATH
我能想到的唯一其他事情是使用:1) 获取元数据 Activity + 对于每个 Activity 或 2) 可能尝试在 DataFlow
中执行此操作$$FILEPATH
是保存文件路径的保留变量。您不能使用 $$FILEPATH
.
您必须创建一个变量来根据需要存储文件夹名称,然后在附加列中动态传递它。
下面是我试过的。
- 由于您的文件夹名称不是静态的,因此使用
Get Metadata
activity. 获取文件夹名称
获取元数据输出:
- 将输出传递给
ForEach
activity 以循环所有文件夹。
- 在管道级别添加一个变量来存储文件夹名称。
在
ForEach
activity中添加set variable
activity从文件夹名称中提取日期部分并将值添加到变量。@substring(item().name, add(indexof(item().name, '='),1), sub(length(item().name), add(indexof(item().name, '='),1)))
设置变量的输出:
- 在源数据集中,参数化path/filename以动态传递它们。
- 在设置变量和 select 源数据集之后添加
copy data
activity。
a) 将 ForEach
activity 的 当前项目名称 作为文件路径传递。在这里,我将文件名硬编码为 *.parquet
以从该路径复制所有文件(这仅在所有文件具有相同结构时有效)。
b) 在附加列下,添加一个新列,为新列命名,在值下,select 到 添加动态内容 并添加现有变量。
- 在复制数据接收器中添加接收器数据集。我添加了 Azure SQL table 作为我的接收器。
- 在 Mapping 中,将文件名(新列)添加到映射中。
- 当你运行管道时,ForEachactivity运行s Get Metadataactivity中的项目数activity。
输出: