Copia y transformación de datos en Azure Cosmos DB for NoSQL mediante Azure Data Factory
SE APLICA A: Azure Data Factory Azure Synapse Analytics
Sugerencia
Pruebe Data Factory en Microsoft Fabric, una solución de análisis todo en uno para empresas. Microsoft Fabric abarca todo, desde el movimiento de datos hasta la ciencia de datos, el análisis en tiempo real, la inteligencia empresarial y los informes. Obtenga información sobre cómo iniciar una nueva evaluación gratuita.
En este artículo se explica el uso de la actividad de copia en Azure Data Factory para copiar datos con Azure Cosmos DB for NoSQL como origen y destino, y el uso de Data Flow para transformarlos en Azure Cosmos DB for NoSQL. Para obtener más información, lea los artículos de introducción para Azure Data Factory y Azure Synapse Analytics.
Nota
Este conector solo admite Azure Cosmos DB for NoSQL. Para Azure Cosmos DB for MongoDB, consulte Conector de Azure Cosmos DB for MongoDB. Actualmente, no se admiten otros tipos de API.
Funcionalidades admitidas
Este conector de Azure Cosmos DB for NoSQL es compatible con las capacidades siguientes:
Funcionalidades admitidas | IR | Puntos de conexión privados administrados de Synapse (versión preliminar) |
---|---|---|
Actividad de copia (origen/receptor) | ① ② | ✓ |
Flujo de datos de asignación (origen/receptor) | ① | ✓ |
Actividad de búsqueda | ① ② | ✓ |
① Azure Integration Runtime ② Entorno de ejecución de integración autohospedado
Para la actividad de copia, este conector de Azure Cosmos DB for NoSQL admite lo siguiente:
- Copie datos desde y hacia Azure Cosmos DB for NoSQL mediante la clave, la entidad de servicio o las identidades administradas para las autenticaciones de recursos de Azure.
- Escriba en Azure Cosmos DB como insert o upsert.
- Importe y exporte documentos JSON tal cual, o copie datos desde o hacia un conjunto de datos tabular. Entre los ejemplos se incluyen una base de datos SQL y un archivo CSV. Para copiar documentos tal cual desde archivos JSON o hacia estos, o desde otra colección de Azure Cosmos DB o hacia esta, consulte Importación y exportación de documentos JSON.
Las canalizaciones de Synapse y Data Factory se integran con la biblioteca BulkExecutor de Azure Cosmos DB para proporcionar el mejor rendimiento de escritura en Azure Cosmos DB.
Sugerencia
El vídeo de migración de datos le guía por los pasos para copiar datos desde Azure Blob Storage hasta Azure Cosmos DB. En el vídeo también se describen consideraciones sobre la optimización del rendimiento para la ingesta de datos a Azure Cosmos DB en general.
Introducción
Para realizar la actividad de copia con una canalización, puede usar una de los siguientes herramientas o SDK:
- La herramienta Copiar datos
- Azure Portal
- El SDK de .NET
- El SDK de Python
- Azure PowerShell
- API REST
- La plantilla de Azure Resource Manager
Creación de un servicio vinculado a Azure Cosmos DB mediante la interfaz de usuario
Siga estos pasos para crear un servicio vinculado a Azure Cosmos DB en la interfaz de usuario de Azure Portal.
Vaya a la pestaña Administrar del área de trabajo de Azure Data Factory o Synapse y seleccione Servicios vinculados; luego haga clic en Nuevo:
Busque Azure Cosmos DB for NoSQL y seleccione el conector de Azure Cosmos DB for NoSQL.
Configure los detalles del servicio, pruebe la conexión y cree el nuevo servicio vinculado.
Detalles de configuración del conector
En las secciones siguientes se proporcionan detalles sobre las propiedades que puede usar para definir entidades específicas de Azure Cosmos DB for NoSQL.
Propiedades del servicio vinculado
El conector de Azure Cosmos DB for NoSQL admite los siguientes tipos de autenticación. Consulte las secciones correspondientes para más información:
- Autenticación de clave
- Autenticación de entidad de servicio
- Autenticación de identidad administrada asignada por el sistema
- Autenticación de identidad administrada asignada por el usuario
Autenticación de clave
Propiedad | Descripción | Obligatorio |
---|---|---|
type | La propiedad type debe establecerse en CosmosDb. | Sí |
connectionString | Especifique la información necesaria para conectarse a la base de datos de Azure Cosmos DB. Nota: Debe especificar la información de la base de datos en la cadena de conexión como se muestra en los ejemplos siguientes. También puede colocar la clave de cuenta en Azure Key Vault y extraer la configuración accountKey de la cadena de conexión. Consulte los siguientes ejemplos y el artículo Almacenamiento de credenciales en Azure Key Vault con información detallada. |
Sí |
connectVia | Instancia de Integration Runtime que se usará para conectarse al almacén de datos. Se puede usar Azure Integration Runtime o un entorno de ejecución de integración autohospedado (si el almacén de datos se encuentra en una red privada). Si no se especifica esta propiedad, se usa el valor predeterminado de Azure Integration Runtime. | No |
Ejemplo
{
"name": "CosmosDbSQLAPILinkedService",
"properties": {
"type": "CosmosDb",
"typeProperties": {
"connectionString": "AccountEndpoint=<EndpointUrl>;AccountKey=<AccessKey>;Database=<Database>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Ejemplo: Almacenamiento de la clave de cuenta en Azure Key Vault
{
"name": "CosmosDbSQLAPILinkedService",
"properties": {
"type": "CosmosDb",
"typeProperties": {
"connectionString": "AccountEndpoint=<EndpointUrl>;Database=<Database>",
"accountKey": {
"type": "AzureKeyVaultSecret",
"store": {
"referenceName": "<Azure Key Vault linked service name>",
"type": "LinkedServiceReference"
},
"secretName": "<secretName>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Autenticación de entidad de servicio
Nota
Actualmente, la autenticación de la entidad de servicio no se admite en el flujo de datos.
Antes de usar la autenticación de entidad de servicio, siga estos pasos.
Registro de una aplicación en la Plataforma de identidad de Microsoft. Para aprender cómo, consulte Inicio rápido: Registrar una aplicación con la plataforma de identidad de Microsoft. Anote estos valores; los usará para definir el servicio vinculado:
- Identificador de aplicación
- Clave de la aplicación
- Id. de inquilino
Conceda a la entidad de servicio el permiso adecuado. Consulte ejemplos sobre el funcionamiento del permiso en Azure Cosmos DB en Listas de control de acceso en archivos y directorios. Más concretamente, cree una definición de roles y asigne el rol a la entidad de servicio a través del identificador de objeto de la entidad de servicio.
Estas propiedades son compatibles con el servicio vinculado:
Propiedad | Descripción | Obligatorio |
---|---|---|
type | La propiedad type debe establecerse en CosmosDb. | Sí |
accountEndpoint | Especifique la dirección URL del punto de conexión de la cuenta para la instancia de Azure Cosmos DB. | Sí |
database | Especifique el nombre de la base de datos. | Sí |
servicePrincipalId | Especifique el id. de cliente de la aplicación. | Sí |
servicePrincipalCredentialType | Tipo de credencial que se usará para la autenticación de entidades de servicio. Los valores válidos son ServicePrincipalKey y ServicePrincipalCert. | Sí |
servicePrincipalCredential | Credencial de entidad de servicio. Al usar ServicePrincipalKey como tipo de credenciales, especifique la clave de la aplicación. Marque este campo como SecureString para almacenarlo de forma segura, o bien haga referencia a un secreto almacenado en Azure Key Vault. Cuando use ServicePrincipalCert como credencial, haga referencia a un certificado en Azure Key Vault y asegúrese de que el tipo de contenido del certificado sea PKCS #12. |
Sí |
tenant | Especifique la información del inquilino (nombre de dominio o identificador de inquilino) en el que reside la aplicación. Para recuperarlo, mantenga el puntero del mouse en la esquina superior derecha de Azure Portal. | Sí |
azureCloudType | Para la autenticación de la entidad de servicio, especifique el tipo de entorno de nube de Azure en el que está registrada la aplicación de Microsoft Entra. Los valores permitidos son AzurePublic, AzureChina, AzureUsGovernment y AzureGermany. De forma predeterminada, se usa el entorno de nube del servicio. |
No |
connectVia | El entorno de ejecución de integración que se usará para conectarse al almacén de datos. Si el almacén de datos está en una red privada, se puede usar Azure Integration Runtime o un entorno de ejecución de integración autohospedado. Si no se especifica, se usa el valor predeterminado de Azure Integration Runtime. | No |
Ejemplo: uso de la autenticación de claves de entidad de servicio
También puede almacenar la clave de entidad de servicio en Azure Key Vault.
{
"name": "CosmosDbSQLAPILinkedService",
"properties": {
"type": "CosmosDb",
"typeProperties": {
"accountEndpoint": "<account endpoint>",
"database": "<database name>",
"servicePrincipalId": "<service principal id>",
"servicePrincipalCredentialType": "ServicePrincipalKey",
"servicePrincipalCredential": {
"type": "SecureString",
"value": "<service principal key>"
},
"tenant": "<tenant info, e.g. microsoft.onmicrosoft.com>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Ejemplo: uso de la autenticación de certificados de entidad de servicio
{
"name": "CosmosDbSQLAPILinkedService",
"properties": {
"type": "CosmosDb",
"typeProperties": {
"accountEndpoint": "<account endpoint>",
"database": "<database name>",
"servicePrincipalId": "<service principal id>",
"servicePrincipalCredentialType": "ServicePrincipalCert",
"servicePrincipalCredential": {
"type": "AzureKeyVaultSecret",
"store": {
"referenceName": "<AKV reference>",
"type": "LinkedServiceReference"
},
"secretName": "<certificate name in AKV>"
},
"tenant": "<tenant info, e.g. microsoft.onmicrosoft.com>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Autenticación de identidad administrada asignada por el sistema
Nota:
Actualmente, la autenticación de identidad administrada asignada por el sistema se admite en flujos de datos mediante el uso de propiedades avanzadas en formato JSON.
Una canalización de Data Factory o de Synapse se puede asociar con una identidad administrada asignada por el sistema para recursos de Azure que represente esa instancia de servicio concreta. Puede usar directamente esta identidad administrada para la autenticación de Azure Cosmos DB, de manera similar a como usa su propia entidad de servicio. Permite que este recurso designado acceda a datos y los copie desde o hacia la instancia de Azure Cosmos DB.
Para usar identidades administradas asignadas por el sistema para la autenticación de recursos de Azure, siga estos pasos.
Recupere la información de la identidad administrada asignada por el sistema mediante la copia del valor del id. del objeto de identidad administrada que se ha generado junto con el servicio.
Conceda el permiso adecuado de identidad administrada asignada por el sistema. Consulte ejemplos sobre el funcionamiento del permiso en Azure Cosmos DB en Listas de control de acceso en archivos y directorios. Más concretamente, cree una definición de roles y asigne el rol a la identidad administrada asignada por el sistema.
Estas propiedades son compatibles con el servicio vinculado:
Propiedad | Descripción | Obligatorio |
---|---|---|
type | La propiedad type debe establecerse en CosmosDb. | Sí |
accountEndpoint | Especifique la dirección URL del punto de conexión de la cuenta para la instancia de Azure Cosmos DB. | Sí |
database | Especifique el nombre de la base de datos. | Sí |
connectVia | El entorno de ejecución de integración que se usará para conectarse al almacén de datos. Si el almacén de datos está en una red privada, se puede usar Azure Integration Runtime o un entorno de ejecución de integración autohospedado. Si no se especifica, se usa el valor predeterminado de Azure Integration Runtime. | No |
subscriptionId | Especifique la identificación de suscripción de la instancia de Azure Cosmos DB | No para la actividad de copia, Sí para el flujo de datos de asignación |
tenantId | Especifique la identificación de inquilino de la instancia de Azure Cosmos DB | No para la actividad de copia, Sí para el flujo de datos de asignación |
resourceGroup | Especifique el nombre del grupo de recursos para la instancia de Azure Cosmos DB | No para la actividad de copia, Sí para el flujo de datos de asignación |
Ejemplo:
{
"name": "CosmosDbSQLAPILinkedService",
"properties": {
"type": "CosmosDb",
"typeProperties": {
"accountEndpoint": "<account endpoint>",
"database": "<database name>",
"subscriptionId": "<subscription id>",
"tenantId": "<tenant id>",
"resourceGroup": "<resource group>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Autenticación de identidad administrada asignada por el usuario
Nota:
Actualmente, la autenticación de identidad administrada asignada por el usuario se admite en flujos de datos mediante el uso de propiedades avanzadas en formato JSON.
Una canalización de Data Factory o de Synapse se puede asociar con una identidad administrada asignada por el usuario para recursos de Azure que represente esa instancia de servicio concreta. Puede usar directamente esta identidad administrada para la autenticación de Azure Cosmos DB, de manera similar a como usa su propia entidad de servicio. Permite que este recurso designado acceda a datos y los copie desde o hacia la instancia de Azure Cosmos DB.
Para usar identidades administradas asignadas por el usuario para la autenticación de recursos de Azure, siga estos pasos.
Cree una o varias identidades administradas asignadas por el usuario y conceda a la identidad administrada asignada por el usuario los permisos adecuados. Consulte ejemplos sobre el funcionamiento del permiso en Azure Cosmos DB en Listas de control de acceso en archivos y directorios. Más concretamente, cree una definición de roles y asigne el rol a la identidad administrada asignada por el usuario.
Asigne una o varias identidades administradas asignadas por el usuario a la factoría de datos y cree credenciales para cada identidad administrada asignada por el usuario.
Estas propiedades son compatibles con el servicio vinculado:
Propiedad | Descripción | Obligatorio |
---|---|---|
type | La propiedad type debe establecerse en CosmosDb. | Sí |
accountEndpoint | Especifique la dirección URL del punto de conexión de la cuenta para la instancia de Azure Cosmos DB. | Sí |
database | Especifique el nombre de la base de datos. | Sí |
credentials | Especifique la identidad administrada asignada por el usuario como objeto de credencial. | Sí |
connectVia | El entorno de ejecución de integración que se usará para conectarse al almacén de datos. Si el almacén de datos está en una red privada, se puede usar Azure Integration Runtime o un entorno de ejecución de integración autohospedado. Si no se especifica, se usa el valor predeterminado de Azure Integration Runtime. | No |
subscriptionId | Especifique la identificación de suscripción de la instancia de Azure Cosmos DB | No para la actividad de copia, Sí para el flujo de datos de asignación |
tenantId | Especifique la identificación de inquilino de la instancia de Azure Cosmos DB | No para la actividad de copia, Sí para el flujo de datos de asignación |
resourceGroup | Especifique el nombre del grupo de recursos para la instancia de Azure Cosmos DB | No para la actividad de copia, Sí para el flujo de datos de asignación |
Ejemplo:
{
"name": "CosmosDbSQLAPILinkedService",
"properties": {
"type": "CosmosDb",
"typeProperties": {
"accountEndpoint": "<account endpoint>",
"database": "<database name>",
"credential": {
"referenceName": "credential1",
"type": "CredentialReference"
},
"subscriptionId": "<subscription id>",
"tenantId": "<tenant id>",
"resourceGroup": "<resource group>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Propiedades del conjunto de datos
Para ver una lista completa de las secciones y propiedades disponibles para definir conjuntos de datos, consulte Conjuntos de datos y servicios vinculados.
Se admiten las siguientes propiedades con el conjunto de datos de Azure Cosmos DB for NoSQL:
Propiedad | Descripción | Obligatorio |
---|---|---|
type | La propiedad type del conjunto de datos debe establecerse en CosmosDbSqlApiCollection. | Sí |
collectionName | Nombre de la colección de documentos de Azure Cosmos DB. | Sí |
Si usa un conjunto de datos de tipo "DocumentDbCollection", se sigue admitiendo tal cual para la compatibilidad con versiones anteriores de la actividad de copia y búsqueda y no se admite para Data Flow. Se sugiere usar el nuevo modelo de aquí en adelante.
Ejemplo
{
"name": "CosmosDbSQLAPIDataset",
"properties": {
"type": "CosmosDbSqlApiCollection",
"linkedServiceName":{
"referenceName": "<Azure Cosmos DB linked service name>",
"type": "LinkedServiceReference"
},
"schema": [],
"typeProperties": {
"collectionName": "<collection name>"
}
}
}
Propiedades de la actividad de copia
En esta sección se proporciona una lista de las propiedades que admiten el origen y el receptor de Azure Cosmos DB for NoSQL. Para ver una lista completa de las secciones y propiedades que hay disponibles para definir actividades, consulte Canalizaciones.
Azure Cosmos DB for NoSQL como origen
Para copiar datos desde Azure Cosmos DB for NoSQL, establezca el tipo de origen de la actividad de copia en DocumentDbCollectionSource.
La sección source de la actividad de copia admite las siguientes propiedades:
Propiedad | Descripción | Obligatorio |
---|---|---|
type | La propiedad type1 del origen de la actividad de copia debe establecerse en CosmosDbSqlApiSource. | Sí |
Query | Especifique la consulta de Azure Cosmos DB para leer datos. Ejemplo: SELECT c.BusinessEntityID, c.Name.First AS FirstName, c.Name.Middle AS MiddleName, c.Name.Last AS LastName, c.Suffix, c.EmailPromotion FROM c WHERE c.ModifiedDate > \"2009-01-01T00:00:00\" |
No Si no se especifica, se ejecuta la instrucción SQL: select <columns defined in structure> from mycollection |
preferredRegions | Lista preferida de regiones a las que se conectará cuando recupere los datos de Azure Cosmos DB. | No |
pageSize | Número de documentos por página del resultado de la consulta. El valor predeterminado es "-1", que significa el uso del tamaño de página dinámica del servicio hasta 1000. | No |
detectDatetime | Determina si se debe detectar datetime a partir de los valores de cadena de los documentos. Los valores permitidos son: True (valor predeterminado) y False. | No |
Si utiliza el origen de tipo "DocumentDbCollectionSource", todavía se admite tal cual para la compatibilidad con versiones anteriores. Se recomienda utilizar el nuevo modelo en el futuro, que proporciona funcionalidades más enriquecidas para copiar datos de Azure Cosmos DB.
Ejemplo
"activities":[
{
"name": "CopyFromCosmosDBSQLAPI",
"type": "Copy",
"inputs": [
{
"referenceName": "<Cosmos DB for NoSQL input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "CosmosDbSqlApiSource",
"query": "SELECT c.BusinessEntityID, c.Name.First AS FirstName, c.Name.Middle AS MiddleName, c.Name.Last AS LastName, c.Suffix, c.EmailPromotion FROM c WHERE c.ModifiedDate > \"2009-01-01T00:00:00\"",
"preferredRegions": [
"East US"
]
},
"sink": {
"type": "<sink type>"
}
}
}
]
Al copiar datos de Azure Cosmos DB, a menos que desee exportar documentos JSON tal cual, el procedimiento recomendado es especificar la asignación en la actividad de copia. El servicio respeta la asignación especificada en la actividad: si una fila no contiene un valor para una columna, se proporciona un valor NULL para el valor de la columna. Si no especifica una asignación, el servicio deduce el esquema mediante la primera fila de los datos. Si la primera fila no contiene el esquema completo, algunas columnas se pueden perder en el resultado de la operación de la actividad.
Azure Cosmos DB for NoSQL como receptor
Para copiar datos en Azure Cosmos DB for NoSQL, establezca el tipo de receptor de la actividad de copia en DocumentDbCollectionSink.
La sección sink de la actividad de copia admite las siguientes propiedades:
Propiedad | Descripción | Obligatorio |
---|---|---|
type | La propiedad type del receptor de la actividad de copia tiene que establecerse en CosmosDbSqlApiSink. | Sí |
writeBehavior | Describe cómo escribir datos en Azure Cosmos DB. Valores permitidos: insert y upsert. El comportamiento de upsert consiste en reemplazar el documento si ya existe un documento con el mismo identificador; en caso contrario, inserta el documento. Nota: El servicio genera automáticamente un id. para un documento si no se especifica un id. en el documento original o mediante la asignación de columnas. Esto significa que debe asegurarse de que, para que upsert funcione según lo esperado, el documento tenga un identificador. |
No (el valor predeterminado es insert) |
writeBatchSize | El servicio usa la biblioteca BulkExecutor de Azure Cosmos DB para escribir datos en Azure Cosmos DB. La propiedad writeBatchSize controla el tamaño de los documentos que el servicio proporciona a la biblioteca. Puede aumentar el valor de writeBatchSize para mejorar el rendimiento y reducir el valor si el documento tiene un tamaño grande: a continuación encontrará sugerencias. | No (el valor predeterminado es 10 000) |
disableMetricsCollection | El servicio recopila métricas, como las RU de Azure Cosmos DB, para la optimización del rendimiento de copia y la obtención de recomendaciones. Si le preocupa este comportamiento, especifique true para desactivarlo. |
No (el valor predeterminado es false ) |
maxConcurrentConnections | Número máximo de conexiones simultáneas establecidas en el almacén de datos durante la ejecución de la actividad. Especifique un valor solo cuando quiera limitar las conexiones simultáneas. | No |
Sugerencia
Para importar documentos JSON tal cual, consulte la sección Importar o exportar documentos JSON; para copiar de datos con formato tabular, consulte Migración de la base de datos relacional a Azure Cosmos DB.
Sugerencia
Azure Cosmos DB limita el tamaño de las solicitudes únicas a 2 MB. La fórmula es Tamaño de la solicitud = tamaño de documento único x tamaño de lote de escritura. Si aparece un error con el texto "El tamaño de solicitud es demasiado grande." , reduzca el valor de writeBatchSize
en la configuración del receptor de copia.
Si utiliza el origen de tipo "DocumentDbCollectionSink", todavía se admite tal cual para la compatibilidad con versiones anteriores. Se recomienda utilizar el nuevo modelo en el futuro, que proporciona funcionalidades más enriquecidas para copiar datos de Azure Cosmos DB.
Ejemplo
"activities":[
{
"name": "CopyToCosmosDBSQLAPI",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<Document DB output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "CosmosDbSqlApiSink",
"writeBehavior": "upsert"
}
}
}
]
Asignación de esquemas
Para copiar datos de Azure Cosmos DB en un receptor tabular o inverso, consulte Asignación de esquemas.
Propiedades de Asignación de instancias de Data Flow
Al transformar datos en el flujo de datos de asignación, puede leer y escribir en colecciones de Azure Cosmos DB. Para más información, vea la transformación de origen y la transformación de receptor en los flujos de datos de asignación.
Nota
Azure Cosmos DB sin servidor no es compatible con el flujo de datos de asignación.
Transformación de origen
La configuración específica de Azure Comos DB está disponible en la pestaña Source Options (Opciones de origen) de la transformación de origen.
Include system columns (Incluir las columnas del sistema): si el valor es true, id
, _ts
y otras columnas del sistema se incluirán en los metadatos del flujo de datos de Azure Cosmos DB. Al actualizar las colecciones, es importante incluirlas para poder tomar el id. de fila existente.
Page size (Tamaño de página): Número de documentos por página del resultado de la consulta. El valor predeterminado es "-1", que utiliza la página dinámica del servicio hasta 1000.
Rendimiento: establezca un valor opcional para el número de RU que desea aplicar a la colección de Azure Cosmos DB para cada ejecución de este flujo de datos durante la operación de lectura. El mínimo es de 400.
Preferred regions (Regiones preferidas): elija las regiones de lectura preferidas para este proceso.
Fuente de cambios: si el valor es "true", se obtienen datos de la fuente de cambios de Azure Cosmos DB. Esta actúa como un registro persistente y automático de los cambios realizados en un contenedor, en orden de ocurrencia, desde la última ejecución. Si establece esta opción en true, no establezca Infer drifted column types (Inferir tipos de columna desplazados) ni Allow schema drift (Permitir desfase de esquema) en true al mismo tiempo. Para obtener más información, consulte la sección Fuente de cambios en Azure Cosmos DB.
Presentación desde el principio: si el valor es "true", obtendrá la carga inicial de todos los datos de la instantánea en la primera ejecución y, en las siguientes ejecuciones, una captura de los datos modificados. Si el valor es false, la carga inicial se omitirá en la primera ejecución y se incluirá la captura de los datos modificados en las ejecuciones siguientes. Esta opción se corresponde con otra opción de la referencia de Azure Cosmos DB que tiene el mismo nombre. Para obtener más información, consulte la sección Fuente de cambios en Azure Cosmos DB.
Transformación de receptor
La configuración específica de Azure Cosmos DB está disponible en la pestaña Settings (Configuración) de la transformación de receptor.
Update method (Método de actualización): determina qué operaciones se permiten en el destino de la base de datos. El valor predeterminado es permitir solamente las inserciones. Para realizar las operaciones update, upsert o delete rows, se requiere una transformación de alteración de filas para etiquetar esas acciones. En el caso de las actualizaciones, upserts y eliminaciones, se debe establecer una o varias columnas de clave para determinar la fila que se va a modificar.
Collection action (Acción de colección): determina si se debe volver a crear la colección de destino antes de escribir.
- None (Ninguno): no se realizará ninguna acción en la colección.
- Recreate (Volver a crear): se quitará la colección y se volverá a crear.
Tamaño del lote: entero que representa el número de objetos que se escriben en la colección de Azure Cosmos DB en cada lote. Normalmente alcanza con comenzar con el tamaño de lote predeterminado. Para optimizar aún más este valor, tenga en cuenta lo siguiente:
- Azure Cosmos DB limita el tamaño de las solicitudes únicas a 2 MB. La fórmula es "tamaño de la solicitud = tamaño de documento único * tamaño de lote". Si aparece un error con el texto "El tamaño de solicitud es demasiado grande", reduzca el valor del tamaño de lote.
- Cuanto mayor sea el tamaño del lote, mejor será el rendimiento que podrá lograr el servicio y, al mismo tiempo, se asegurará de asignar RU suficientes para permitir la carga de trabajo.
Clave de partición: Escriba una cadena que represente la clave de partición de la colección. Ejemplo: /movies/title
Rendimiento: establezca un valor opcional para el número de RU que desea aplicar a la colección de Azure Cosmos DB para cada ejecución de este flujo de datos. El mínimo es de 400.
Write throughput budget (Presupuesto de capacidad de proceso de escritura): Entero que representa las RU que se quiere asignar a esta operación de escritura de Data Flow, del rendimiento total asignado a la colección.
Nota:
Para limitar el uso de RU, establezca el Cosmos DB Throughput(autoescala) en Manual.
Propiedades de la actividad de búsqueda
Para obtener información detallada sobre las propiedades, consulte Actividad de búsqueda.
Importación y exportación de documentos JSON
Puede utilizar este conector de Azure Cosmos DB for NoSQL para hacer lo siguiente con facilidad:
- Copiar documentos entre dos colecciones de Azure Cosmos DB tal cual.
- Importar documentos JSON desde varios orígenes a Azure Cosmos DB, incluido Azure Blob Storage, Azure Data Lake Store y otros almacenes basados en archivos compatibles con Azure Data Factory.
- Exportar documentos JSON de una colección de Azure Cosmos DB a varios almacenes basados en archivos.
Para lograr una copia independiente del esquema:
- Cuando use la herramienta Copiar datos, seleccione la opción Export as-is to JSON files or Azure Cosmos DB collection (Exportar tal cual a archivos JSON o colección de Azure Cosmos DB).
- Cuando use la creación de actividades, elija el formato JSON con el almacén de archivos correspondiente para el origen o el receptor.
Migración de la base de datos relacional a Azure Cosmos DB
Al migrar desde una base de datos relacional, por ejemplo de SQL Server a Azure Cosmos DB, la actividad de copia puede asignar fácilmente datos tabulares del origen a documentos JSON en Azure Cosmos DB. En algunos casos puede que desee rediseñar el modelo de datos para optimizarlo para los casos de uso de NoSQL según lo que se indica en Modelado de datos en Azure Cosmos DB, por ejemplo, para desnormalizar los datos mediante la inserción de todos los subelementos relacionados en un documento JSON. En este caso, consulte este artículo, que ofrece un tutorial sobre cómo lograrlo mediante la actividad de copia.
Fuente de cambios de Azure Cosmos DB
Azure Data Factory puede obtener datos de la fuente de cambios de Azure Cosmos DB si se habilita en la transformación del origen del flujo de datos de asignación. Con esta opción del conector, puede leer las fuentes de cambios y aplicar transformaciones antes de cargar los datos transformados en los conjuntos de datos de destino que elija. No es necesario usar Azure Functions para leer la fuente de cambios y escribir después las transformaciones personalizadas. Puede usar esta opción para mover datos de un contenedor a otro, preparar vistas de material basadas en la fuente de cambios para ajustarse a la finalidad prevista o automatizar la copia de seguridad o recuperación de contenedores en función de la fuente de cambios. También puede habilitar muchos otros casos de uso utilizando la funcionalidad de arrastrar y colocar objetos visuales de Azure Data Factory.
No debe cambiar el nombre de la canalización ni de la actividad para que ADF pueda registrar el punto de control y usted pueda obtener automáticamente los datos modificados desde la última ejecución. Si cambia el nombre de la canalización o de la actividad, el punto de control se restablecerá, por lo que tendría que empezar desde el principio u obtener los cambios que se realicen a partir de ese momento en la siguiente ejecución.
Cuando se depura la canalización, esta característica funciona igual. Tenga en cuenta que el punto de control se restablecerá cuando se actualice el explorador durante la ejecución de depuración. Cuando esté conforme con el resultado de la canalización obtenida a partir de la ejecución de depuración, podrá publicar y desencadenar la canalización. En el momento en que desencadene por primera vez la canalización publicada, la canalización se reiniciará automáticamente desde el principio o se obtendrán los cambios a partir de ese momento.
Siempre puede volver a ejecutar la canalización en la sección de supervisión. Si lo hace, siempre se capturarán los datos modificados a partir del punto de control anterior de la ejecución de la canalización seleccionada.
Además, el almacén analítico de Azure Cosmos DB ahora admite la captura de datos modificados (CDC) para la API de Azure Cosmos DB for NoSQL y la API de Azure Cosmos DB for Mongo DB (versión preliminar pública). El almacén analítico de Azure Cosmos DB le permite consumir de forma eficiente una fuente continua e incremental de datos modificados (insertados, actualizados y eliminados) del almacén analítico.
Contenido relacionado
Para obtener una lista de los almacenes de datos que la actividad de copia admite como orígenes y receptores, vea Almacenes de datos compatibles.