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 serializar los datos de un almacén de datos a otro, independientemente de los matices de cada uno, siempre que pueda transformar razonablemente los datos entre cada paradigma de datos.

Configurar

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. Puede configurar el servicio mediante el Azure Portal o bien mediante un objeto JSON.

{
    "name": "<example-name-of-linked-service>",
    "properties": {
        "type": "CosmosDb",
        "typeProperties": {
            "connectionString": "AccountEndpoint=<cosmos-endpoint>;AccountKey=<cosmos-key>;Database=<cosmos-database>"
        }
    }
}

Sugerencia

Como alternativa, puede usar entidades de servicio o identidades administradas para conectarse a una cuenta de Azure Cosmos DB for NoSQL con Azure Data Factory.

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. Esto leerá los datos. Para configurar esto, debemos crear una consulta SQL de los datos en los que queremos leer. Por ejemplo, podemos escribir 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. Esto cargará nuestros datos. Para configurar esto, debemos establecer nuestro comportamiento de escritura. Por ejemplo, es posible que siempre deseemos insertar los datos, o es posible 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"
}