Mover datos con Azure Data Factory

Completado

Azure Data Factory es un servicio nativo para extraer datos, transformarlos y cargarlos en receptores y almacenes sin un servidor. Desde una perspectiva de integración de datos, esto significa que puede trasladar datos de un sistema de almacenamiento a otro, independientemente de los matices de cada uno, siempre que pueda transformar razonablemente los datos entre los distintos paradigmas de datos.

Configuración

Azure Cosmos DB for NoSQL está disponible como servicio vinculado en Azure Data Factory. Este tipo de servicio vinculado se admite como origen de ingesta de datos y como destino (receptor) de salida de datos. Para ambos, la configuración es idéntica. Asegúrese de habilitar la identidad administrada y los permisos de control de acceso basado en rol (RBAC) en la cuenta de Cosmos DB. Puede configurar el servicio mediante el Azure Portal o bien mediante un objeto JSON.

{
    "name": "<example-name-of-linked-service>",
    "properties": {
        "type": "CosmosDb",
        "typeProperties": {
            "accountEndpoint": "https://<cosmos-account-name>.documents.azure.com:443/",
            "authenticationType": "ManagedIdentity"
        }
    }
}

Lectura desde Azure Cosmos DB

En Azure Data Factory, al leer datos de Azure Cosmos DB for NoSQL, debemos configurar nuestro servicio vinculado como origen. Esta configuración lee los datos. Para configurar esta opción, debemos crear una consulta SQL de los datos que queremos leer. Por ejemplo, escribimos una consulta como SELECT id, categoryId, price, quantity, name FROM products WHERE price > 500 para filtrar los elementos del contenedor desde el que queremos leer desde Azure Cosmos DB for NoSQL a Azure Data Factory para transformarlos y, a continuación, cargarlos en el almacén de datos de destino.

En Azure Data Factory, nuestra actividad de origen tiene un objeto JSON de configuración que podemos usar para establecer propiedades como la consulta:

{
    "source": {
        "type": "CosmosDbSqlApiSource",
        "query": "SELECT id, categoryId, price, quantity, name FROM products WHERE price > 500",
        "preferredRegions": [
            "East US",
            "West US"
        ]        
    }
}

Escritura a Azure Cosmos DB

En Azure Data Factory, al almacenar datos de Azure Cosmos DB for NoSQL, debemos configurar nuestro servicio vinculado como receptor. Esta configuración carga los datos. Para configurar esta opción, debemos establecer nuestro comportamiento de escritura. Por ejemplo, es posible que siempre deseemos insertar los datos, o que deseemos hacer una operación upsert de los datos y sobrescribir los elementos que puedan tener un identificador único correspondiente (campo id).

Nuestra actividad de recepción también tenía un objeto JSON de configuración:

"sink": {
    "type": "CosmosDbSqlApiSink",
    "writeBehavior": "upsert"
}