突触数据流中的展平活动中的动态“展开依据”

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

我有三个在数据层次结构方面相似的 XML 文件。在 Synapse 数据流中使用展平活动时是否可以使用动态“展开依据”?我尝试创建一个参数来保存“展开方式”文本。当我在“展开依据”部分中使用该参数,然后单击“输入列”中的“重置”时,“输入列”部分中没有显示任何内容。我希望在“数据预览”选项卡中看到数据,但当我尝试预览它时,它抛出了错误“flatten1”(第 16 行/第 8 列):unrollby 应该是没有任何表达式的列路径”。我阅读文章“Dynamic Flatten - Data Flow ADF”,但仍不清楚动态“Unroll by”的工作原理。

[First file](https://i.stack.imgur.com/FZhJc.png) => first file
[Second file](https://i.stack.imgur.com/oSfWk.png) => second file
[Third file](https://i.stack.imgur.com/WdWHa.png) => thrid file
azure google-cloud-dataflow apache-synapse
1个回答
0
投票

由于您的源文件具有相同的结构,您可以通过使用数据集参数和for循环来实现您的要求。

首先为源xml数据集的文件名创建一个字符串类型的数据集参数,并在文件路径中使用,如下所示。这里我的源文件来自 ADLS gen2。将此数据集提供给数据流。

enter image description here

将文件名列表传递给 for 循环,并在 for 循环内进行数据流活动,将 xml 文件名传递给数据集参数,如下所示

enter image description here

像这样构建您的数据流。扁平化转换需要一个模式才能在数据流的调试中工作。

因此,导入源映射中的模式,但它会询问源数据集文件名参数值。由于每个文件的结构都相同,因此只需传递 3 个文件中的任何一个文件名,架构就会被导入。

enter image description here

在展平设置中使用此架构来展平阵列。

enter image description here

这将提供示例文件的数据预览。

enter image description here

要对所有源文件执行此操作,您需要调试管道。提供您的接收器数据集并执行管道。在这里,我使用数据流参数将每个源 xml 文件转换为单独的接收器文件,这些是结果文件。

enter image description here

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