请帮助解决将 TTL 插入 Cosmos DB 的问题

please help the issue with inserting TTL to Comsos DB

我对 Azure 数据工厂将 TTL 插入 cosmos db 有点纠结:

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

这里有一些限制:

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

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

所以 ADF 将通过错误:“文档的 'ttl' 属性 不能是非数字类型(如果有的话)。,Source=Microsoft.DataTransfer.DocumentDbManagement”

我尝试了所有方法将ttl 转换为整数数据类型,但没有用。 我感觉 Azure 将所有 'additional columns' 的数据类型更改为字符串,即使您将其设置为 int.

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

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

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