【问题标题】:please help the issue with inserting TTL to Comsos DB请帮助解决将 TTL 插入 Cosmos DB 的问题
【发布时间】: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天。

这里有一些限制:

  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 数据类型。 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


    【解决方案1】:

    是的,即使你把它设置为int,额外列的类型也会在源头改为String。

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

    【讨论】:

    • 谢谢史蒂夫。如果假设是正确的,那么不确定为什么 micrsoft 将所有附加列更改为字符串。也不确定是否可以在自托管 IR 中使用任何时间线数据流。
    猜你喜欢
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-25
    相关资源
    最近更新 更多