如何在通过Azure数据工厂将数据从Azure Cosmos DB复制到ADLS Gen 2时设置输出路径

如何在通过Azure数据工厂将数据从Azure Cosmos DB复制到ADLS Gen 2时设置输出路径,azure,azure-data-factory,azure-data-factory-2,Azure,Azure Data Factory,Azure Data Factory 2,我有以下格式的cosmos DB集合: { "deviceid": "xxx", "partitionKey": "key1", ..... "_ts": 1544583745 } 我正在使用Azure Data Factory将数据从Cosmos DB复制到ADLS Gen 2。如果我使用“复制”活动进行复制,则非常简单。然而,我主要关心的是ADLS Gen 2

我有以下格式的cosmos DB集合:

{
    "deviceid": "xxx",
    "partitionKey": "key1",
    .....
    "_ts": 1544583745
}
我正在使用Azure Data Factory将数据从Cosmos DB复制到ADLS Gen 2。如果我使用“复制”活动进行复制,则非常简单。然而,我主要关心的是ADLS Gen 2的输出路径。我们的需求表明,我们需要具有特定格式的输出路径。以下是要求的示例:

outerfolder/version/code/deviceid/year/month/day
现在,由于deviceid、年、月、日都在有效负载本身中,我无法找到使用它们的方法,只能创建一个查找活动并在复制活动中使用查找活动的输出

下面是我如何使用dataset属性设置Output文件夹的:

我正在COSMOSDB上使用SQLAPI来查询数据


有没有更好的方法可以做到这一点?

我认为你的方法可行,但不是最干净的。我要做的是在管道内为每个变量创建一个不同的变量:版本、代码、设备ID等。然后,在查找之后,您可以分配变量,最后执行引用管道变量的复制活动

它可能看起来有点多余,但想想两年后有人或你不得不修改管道,如果你不在或忘记了,这种方式可以清楚地说明它是如何工作的,以及你应该修改什么


希望这有帮助

谢谢你。但是每当我在变量下的名称下使用set变量activity时,下拉列表中没有任何内容。如何设置?在使用set变量之前,必须在管道中创建变量。只需在任何活动之外单击,并在管道中创建变量。我还想询问是否有方法避免使用查找活动,并从复制活动本身获取变量。源查询使用SQL API并具有数据。我可以直接使用它吗?我不认为您可以避免查找:可能使用外部的东西并将参数传递给管道,但是您仍然会遇到API。