#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 дней.
некоторые ограничения здесь:
- Поток данных не может быть использован, поскольку он не поддерживается автономной средой выполнения интеграции, а использование Azure IR не одобрено моей компанией
- не удается ввести другие компоненты, такие как Synapse или SQL sever, в качестве промежуточного сервера
- не удается использовать databrick notebook.
- столбца 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.