0

我对这些通过 azure 数据工厂向 cosmos db 插入 TTL 感到有点挣扎:

要求:来源:ADLS Gen2 parquet 文件(不是 csv,必须是 parquet)目标:COMSMOS DB 需要将 paquet 文件中的所有记录添加到 Comsmos DB 中,并带有附加的名称值对,例如:“ttl”:7776000 业务想要每条记录cosmos db 为 90 天,容器级别的 TTL 设置为 2 年,但是,对于来自 ADLS parquet 的记录,它必须在项目级别设置为 90 天。

这里有一些限制:

  1. 无法使用数据流,因为它不支持自托管集成运行时,并且使用 Azure IR 没有我公司批准的安全性
  2. 不能引入 Synapse 或 SQL 服务器等其他组件作为暂存服务器
  3. 不能使用databrick笔记本。
  4. ttl 列不在 parquet 文件中,必须在复制活动期间添加

所以,我正在尝试使用https://docs.microsoft.com/en-us/azure/data-factory/copy-activity-overview#add-additional-columns-during-copy建议 的附加列是我的设置:我在管道中添加了一个参数,它被设置为 int 数据类型。 在此处输入图像描述 在 源中添加附加列:在 此处输入图像描述 映射如下: 在此处输入图像描述

因此 ADF 将出现错误:“文档的 'ttl' 属性不得为非数字类型(如果有的话)。,Source=Microsoft.DataTransfer.DocumentDbManagement”

我尝试了所有将 ttl 转换为整数数据类型的方法,但都是徒劳的。我感觉 Azure 将所有“附加列”的数据类型更改为字符串,即使您将其设置为 int。

请帮助我可以将 TTL 作为 int 插入 cosmos DB,非常感谢!

4

1 回答 1

0

是的,即使您将其设置为 int,附加列的类型也会在源中更改为 String。

在此处输入图像描述

作为替代方案,您可以在 Azure 函数中创建 Cosmos DB 触发器并在其中添加“TTL”。

于 2020-11-25T08:45:38.980 回答