【发布时间】:2020-11-25 20:34:32
【问题描述】:
我对这些通过 azure 数据工厂向 cosmos db 插入 TTL 感到有点挣扎:
要求: 来源:ADLS Gen2 parquet 文件(不是 csv,必须是 parquet) 目标:COMSMOS 数据库 需要使用附加名称值对将 paquet 文件中的所有记录添加到 Comsmos DB 中,例如:“ttl”:7776000 业务想要cosmos db中的每条记录90天,容器级别的TTL设置为2年,但是对于ADLS parquet的记录,它必须在项目级别设置90天。
这里有一些限制:
- 无法使用数据流,因为它不支持自托管集成运行时,并且使用 Azure IR 没有我公司批准的安全性
- 不能将 Synapse 或 SQL 服务器等其他组件作为临时服务器引入
- 无法使用 databrick 笔记本。
- ttl 列不在 parquet 文件中,必须在复制活动期间添加
所以,我正在尝试使用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 将出现错误:“Document's 'ttl' property must not be non-digital type if any.,Source=Microsoft.DataTransfer.DocumentDbManagement”
我尝试了所有将 ttl 转换为整数数据类型的方法,但都是徒劳的。 我感觉 Azure 将所有“附加列”的数据类型更改为字符串,即使您将其设置为 int。
请帮助我将 TTL 作为 int 插入 cosmos DB,非常感谢!
【问题讨论】:
标签: azure-cosmosdb azure-data-factory parquet azure-data-lake-gen2 azure-data-factory-pipeline