пожалуйста, помогите решить проблему с вставкой TTL в Comsos DB

#azure-cosmosdb #azure-data-factory #parquet #azure-data-lake-gen2 #azure-data-factory-pipeline

#azure-cosmosdb #azure-data-factory #паркет #azure-data-lake-gen2 #azure-data-factory-конвейер

Вопрос:

Я немного борюсь с этим, вставляя TTL в cosmos db с помощью azure data factory:

Требование: источник: паркетные файлы ADLS Gen2 (не csv, должны быть паркетными) Цель: COMSMOS DB необходимо добавить все записи из файлов paquet в Comsmos DB с дополнительной парой имен и значений, например: «ttl»: 7776000 бизнесу нужна каждая запись в cosmos db на 90 дней, на уровне контейнера установлена настройка TTL на 2 года, однако для записей из ADLS parquet она имелаустанавливается на уровне элемента только на 90 дней.

некоторые ограничения здесь:

  1. Поток данных не может быть использован, поскольку он не поддерживается автономной средой выполнения интеграции, а использование Azure IR не одобрено моей компанией
  2. не удается ввести другие компоненты, такие как Synapse или SQL sever, в качестве промежуточного сервера
  3. не удается использовать databrick notebook.
  4. столбца ttl нет в файле parquet, его необходимо добавить во время копирования

итак, я пытаюсь использовать дополнительные столбцы, как предложено https://docs.microsoft.com/en-us/azure/data-factory/copy-activity-overview#add-additional-columns-during-copy вот моя настройка: я добавляю параметр в конвейер, он задается как тип данных int. введите описание изображения здесь добавьте дополнительный столбец в источник: введите описание изображения здесь сопоставление выглядит следующим образом: введите описание изображения здесь

таким образом, ADF выдает ошибку: «Свойство документа ‘ttl’ не должно иметь нецифрового типа, если таковой имеется.,Источник = Microsoft.dataTransfer.DocumentDbManagement»

Я перепробовал все способы перевода ttl в целочисленный тип данных, но тщетно. Я чувствую, что Azure изменяет тип данных на string для всех «дополнительных столбцов», даже если вы установили его как int.

Пожалуйста, помогите мне вставить TTL как int в cosmos DB, большое вам спасибо!

Ответ №1:

Да, даже если вы зададите его как int, тип дополнительного столбца будет изменен на String в источнике.

введите описание изображения здесь

В качестве альтернативы вы можете создать триггер Cosmos DB в функции Azure и добавить туда «TTL».

Комментарии:

1. Спасибо, Стив. Если предположение верно, не уверен, почему micrsoft изменяет все дополнительные столбцы как sttring. также не уверен, что какой-либо поток данных временной шкалы можно использовать в самостоятельном IR.