Copia de datos con Azure Table Storage como origen o destino mediante Azure Data Factory o Synapse Analytics
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 más información sobre cómo iniciar una nueva evaluación gratuita!
En este artículo se resume el uso de la actividad de copia en canalizaciones de Azure Data Factory y Synapse Analytics para copiar datos con Azure Table Storage como origen y destino. El documento se basa en el artículo de introducción a la actividad de copia que describe información general de esta actividad.
Nota
Se recomienda usar el módulo Azure Az de PowerShell para interactuar con Azure. Para comenzar, consulte Instalación de Azure PowerShell. Para más información sobre cómo migrar al módulo Az de PowerShell, consulte Migración de Azure PowerShell de AzureRM a Az.
Funcionalidades admitidas
Este conector de Azure Table Storage es compatible con las siguientes capacidades:
Funcionalidades admitidas | IR | Puntos de conexión privados administrados de Synapse (versión preliminar) |
---|---|---|
Actividad de copia (origen/receptor) | ① ② | ✓ Exclusión de cuenta de almacenamiento V1 |
Actividad de búsqueda | ① ② | ✓ Exclusión de cuenta de almacenamiento V1 |
① Azure Integration Runtime ② Entorno de ejecución de integración autohospedado
Puede copiar datos desde cualquier almacén de datos de origen admitido a Table Storage. También puede copiar datos de Table Storage en cualquier almacén de datos receptor admitido. Consulte la tabla de almacenes de datos compatibles para ver una lista de almacenes de datos que la actividad de copia admite como orígenes o receptores.
En concreto, este conector de Azure Table Storage permite copiar datos utilizando las autenticaciones de clave de cuenta y firma de acceso compartido de servicio.
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 de Azure Table Storage mediante la interfaz de usuario
Siga estos pasos para crear un servicio vinculado de Azure Table Storage 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 Table y seleccione el conector de Azure Table Storage.
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 proporciona información sobre las propiedades que se usan para definir entidades específicas de Azure Table Storage.
Propiedades del servicio vinculado
Este conector de Azure Table Storage admite los siguientes tipos de autenticación. Consulte las secciones correspondientes para más información.
- Autenticación de clave de cuenta
- Autenticación con firma de acceso compartido
- Autenticación de identidad administrada asignada por el sistema
- Autenticación de identidad administrada asignada por el usuario
Autenticación de clave de cuenta
Puede crear un servicio vinculado de Azure Storage mediante la clave de cuenta. Proporciona al servicio acceso global a Storage. Se admiten las siguientes propiedades.
Propiedad | Descripción | Obligatorio |
---|---|---|
type | La propiedad type debe establecerse en AzureTableStorage. | Sí |
connectionString | Especifique la información necesaria para conectarse a Storage para la propiedad connectionString. 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 | El entorno de ejecución de integración que se usará para conectarse al almacén de datos. Puede usar los entornos Integration Runtime (autohospedado) (si el almacén de datos se encuentra en una red privada) o Azure Integration Runtime. Si no se especifica, se usará Azure Integration Runtime. | No |
Nota
Si estaba usando el servicio vinculado de tipo "AzureStorage", todavía se admite tal cual, pero es preferible que use este nuevo tipo "AzureTableStorage" a partir de ahora.
Ejemplo:
{
"name": "AzureTableStorageLinkedService",
"properties": {
"type": "AzureTableStorage",
"typeProperties": {
"connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;AccountKey=<accountkey>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Ejemplo: Almacenamiento de la clave de cuenta en Azure Key Vault
{
"name": "AzureTableStorageLinkedService",
"properties": {
"type": "AzureTableStorage",
"typeProperties": {
"connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;",
"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 con firma de acceso compartido
También puede crear un servicio vinculado de Storage mediante una firma de acceso compartido. Esto proporciona al servicio acceso restringido o limitado por el tiempo a todos los recursos o a algunos específicos del almacenamiento.
Una firma de acceso compartido ofrece acceso delegado a recursos en la cuenta de almacenamiento. Puede utilizarla para conceder a un cliente permisos limitados para objetos en su cuenta de almacenamiento durante un período específico y con un conjunto determinado de permisos. No tiene que compartir las claves de acceso de su cuenta. La firma de acceso compartido es un URI que incluye en sus parámetros de consulta toda la información necesaria para el acceso autenticado a un recurso de almacenamiento. Para obtener acceso a los recursos de almacenamiento con la firma de acceso compartido, el cliente solo tiene que pasar la firma de acceso compartido al método o constructor adecuados. Para obtener más información sobre las firmas de acceso compartido, consulte Uso de firmas de acceso compartido (SAS): Comprender el modelo de firma de acceso compartido.
Nota
Ahora se admiten firmas de acceso compartido de servicio y firmas de acceso compartido de cuenta. Para obtener más información sobre las firmas de acceso compartido, consulte Otorgar acceso limitado a recursos de Azure Storage con firmas de acceso compartido (SAS).
Sugerencia
Puede ejecutar los siguientes comandos de PowerShell para generar una firma de acceso compartido de servicio para la cuenta de almacenamiento. Reemplace los marcadores de posición y conceda el permiso necesario.
$context = New-AzStorageContext -StorageAccountName <accountName> -StorageAccountKey <accountKey>
New-AzStorageContainerSASToken -Name <containerName> -Context $context -Permission rwdl -StartTime <startTime> -ExpiryTime <endTime> -FullUri
Para usar la autenticación con firma de acceso compartido, se admiten las siguientes propiedades.
Propiedad | Descripción | Obligatorio |
---|---|---|
type | La propiedad type debe establecerse en AzureTableStorage. | Sí |
sasUri | Especifique el URI de SAS del URI de firma de acceso compartido a la tabla. Marque este campo como SecureString para almacenarlo de forma segura. También puede colocar el token de SAS en Azure Key Vault para aprovechar la rotación automática y quitar la parte del token. Consulte los siguientes ejemplos y el artículo Almacenamiento de credenciales en Azure Key Vault con información detallada. |
Sí |
connectVia | El entorno de ejecución de integración que se usará para conectarse al almacén de datos. Puede usar los entornos Azure Integration Runtime autohospedado (si el almacén de datos se encuentra en una red privada) o Azure Integration Runtime. Si no se especifica, se usará Azure Integration Runtime. | No |
Nota
Si estaba usando el servicio vinculado de tipo "AzureStorage", todavía se admite tal cual, pero es preferible que use este nuevo tipo "AzureTableStorage" a partir de ahora.
Ejemplo:
{
"name": "AzureTableStorageLinkedService",
"properties": {
"type": "AzureTableStorage",
"typeProperties": {
"sasUri": {
"type": "SecureString",
"value": "<SAS URI of the Azure Storage resource e.g. https://<account>.table.core.windows.net/<table>?sv=<storage version>&st=<start time>&se=<expire time>&sr=<resource>&sp=<permissions>&sip=<ip range>&spr=<protocol>&sig=<signature>>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Ejemplo: Almacenamiento de la clave de cuenta en Azure Key Vault
{
"name": "AzureTableStorageLinkedService",
"properties": {
"type": "AzureTableStorage",
"typeProperties": {
"sasUri": {
"type": "SecureString",
"value": "<SAS URI of the Azure Storage resource without token e.g. https://<account>.table.core.windows.net/<table>>"
},
"sasToken": {
"type": "AzureKeyVaultSecret",
"store": {
"referenceName": "<Azure Key Vault linked service name>",
"type": "LinkedServiceReference"
},
"secretName": "<secretName>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Cuando cree un URI de firma de acceso compartido, tenga en cuenta lo siguiente:
- Establezca los permisos de lectura y escritura adecuados en los objetos, en función de cómo se use el servicio vinculado (lectura, escritura, lectura y escritura).
- Establezca la hora de expiración adecuadamente. Asegúrese de que el acceso a los objetos de Storage no expirará durante el período activo de la canalización.
- El URI debe crearse en el nivel correcto de la tabla en función de la necesidad.
Autenticación de identidad administrada asignada por el sistema
Una factoría de datos o una canalización de Synapse se pueden asociar a una identidad administrada asignada por el sistema para recursos de Azure, que representa ese recurso para la autenticación en otros servicios de Azure. Puede usar esta identidad administrada asignada por el sistema para la autenticación de Azure Table Storage. Para obtener más información sobre las identidades administradas para los recursos de Azure, vea Identidades administradas para recursos de Azure.
Para usar la autenticación de identidad administrada asignada por el sistema, siga estos pasos:
Recupere la información de identidad administrada asignada por el sistema; para ello, copie el valor del identificador de objeto de identidad administrada asignada por el sistema generado junto con la factoría o el área de trabajo de Synapse.
Conceda el permiso de identidad administrada en Azure Table Storage. Para más información sobre los roles, vea este artículo.
- Como origen, en Control de acceso (IAM), conceda al menos el rol Lector de datos de Table Storage.
- Como receptor, en control de acceso (IAM), conceda al menos el rol Colaborador de datos de Table Storage.
Estas propiedades son compatibles con un servicio vinculado de Azure Table Storage:
Propiedad | Descripción | Obligatorio |
---|---|---|
type | La propiedad type se debe establecer en AzureTableStorage. | Sí |
serviceEndpoint | Especifique el punto de conexión de servicio de Azure Table Storage con el patrón https://<accountName>.table.core.windows.net/ . |
Sí |
connectVia | El entorno de ejecución de integración que se usará para conectarse al almacén de datos. Puede utilizar Azure Integration Runtime. Si no se especifica, se usará Azure Integration Runtime. | No |
Nota:
La autenticación de identidad administrada asignada por el sistema solo se admite en Azure Integration Runtime.
Ejemplo:
{
"name": "AzureTableStorageLinkedService",
"properties": {
"type": "AzureTableStorage",
"typeProperties": {
"serviceEndpoint": "https://<accountName>.table.core.windows.net/"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Autenticación de identidad administrada asignada por el usuario
Una factoría de datos se puede asignar con una o varias identidades administradas asignadas por el usuario. Puede usar esta identidad administrada asignada por el usuario para la autenticación de Azure Table Storage, lo que permite acceder y copiar datos desde o hacia Azure Table Storage. Para obtener más información sobre las identidades administradas para recursos de Azure, consulte Identidades administradas para recursos de Azure
Para usar la autenticación de identidad administrada asignada por el usuario, siga estos pasos:
Cree una o varias identidades administradas asignadas por el usuario y conceda permiso en Azure Table Storage. Para más información sobre los roles, vea este artículo.
- Como origen, en Control de acceso (IAM), conceda al menos el rol Lector de datos de Table Storage.
- Como receptor, en control de acceso (IAM), conceda al menos el rol Colaborador de datos de Table Storage.
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 un servicio vinculado de Azure Table Storage:
Propiedad | Descripción | Obligatorio |
---|---|---|
type | La propiedad type se debe establecer en AzureTableStorage. | Sí |
serviceEndpoint | Especifique el punto de conexión de servicio de Azure Table Storage con el patrón https://<accountName>.table.core.windows.net/ . |
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. Puede usar los entornos Azure Integration Runtime autohospedado (si el almacén de datos se encuentra en una red privada) o Azure Integration Runtime. Si no se especifica, se usará Azure Integration Runtime. | No |
Ejemplo:
{
"name": "AzureTableStorageLinkedService",
"properties": {
"type": "AzureTableStorage",
"typeProperties": {
"serviceEndpoint": "https://<accountName>.table.core.windows.net/",
"credential": {
"referenceName": "credential1",
"type": "CredentialReference"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Propiedades del conjunto de datos
Si desea ver una lista completa de las secciones y propiedades disponibles para definir conjuntos de datos, consulte el artículo sobre conjuntos de datos. En esta sección se proporciona una lista de las propiedades que admite el conjunto de datos de Azure Table.
Para copiar datos con Azure Table como origen o destino, establezca la propiedad type del conjunto de datos en AzureTable. Se admiten las siguientes propiedades.
Propiedad | Descripción | Obligatorio |
---|---|---|
type | La propiedad type del conjunto de datos debe establecerse en AzureTable. | Sí |
tableName | Nombre de la tabla en la instancia de base de datos de Table Storage a la que hace referencia el servicio vinculado. | Sí |
Ejemplo:
{
"name": "AzureTableDataset",
"properties":
{
"type": "AzureTable",
"typeProperties": {
"tableName": "MyTable"
},
"schema": [],
"linkedServiceName": {
"referenceName": "<Azure Table storage linked service name>",
"type": "LinkedServiceReference"
}
}
}
Inferencia de esquema por parte del servicio
En los almacenes de datos sin esquemas como Azure Table, el servicio deduce el esquema de una de las maneras siguientes:
- Si especifica la asignación de columnas en la actividad de copia, el servicio usará la lista de columnas de origen para recuperar los datos. En este caso, si una fila no contiene un valor para una columna, se proporciona un valor nulo para ella.
- Si no especifica la asignación de columnas en la actividad de copia, el servicio deduce el esquema usando la primera fila de los datos. En este caso, si la primera fila no contiene el esquema completo (por ejemplo, algunas columnas tienen un valor nulo), algunas columnas se pierden en el resultado de la operación de copia.
Propiedades de la actividad de copia
Si desea ver una lista completa de las secciones y propiedades disponibles para definir actividades, consulte el artículo sobre canalizaciones. En esta sección se proporciona una lista de las propiedades que admiten el receptor y el origen de Azure Table.
Azure Table como tipo de origen
Si va a copiar datos desde Azure Table Storage, establezca el tipo de origen de la actividad de copia en AzureTableSource. En la sección source de la actividad de copia se admiten las siguientes propiedades.
Propiedad | Descripción | Obligatorio |
---|---|---|
type | La propiedad type del origen de la actividad de copia tiene que establecerse en AzureTableSource. | Sí |
AzureTableSourceQuery | Utilice la consulta personalizada de Table Storage para leer los datos. La consulta de origen consiste en una asignación directa desde la opción de consulta $filter , compatible con Azure Table Storage. Obtenga más información sobre la sintaxis en este documento y consulte los ejemplos de la siguiente sección de azureTableSourceQuery. |
No |
azureTableSourceIgnoreTableNotFound | Indica si se debe permitir la excepción de la tabla no existir. Los valores válidos son True y False (valor predeterminado). |
No |
ejemplos de azureTableSourceQuery
Nota
Se agota el tiempo de espera de la operación de consulta de Azure Table en 30 segundos según impone Azure Table service. Aprenda a optimizar la consulta en el artículo Diseño de consulta.
Si quiere filtrar los datos por una columna de tipo datetime, consulte este ejemplo:
"azureTableSourceQuery": "LastModifiedTime gt datetime'2017-10-01T00:00:00' and LastModifiedTime le datetime'2017-10-02T00:00:00'"
Si quiere filtrar los datos por una columna de tipo cadena, consulte este ejemplo:
"azureTableSourceQuery": "LastModifiedTime ge '201710010000_0000' and LastModifiedTime le '201710010000_9999'"
Si usa el parámetro de canalización, convierta el valor de fecha y hora al formato apropiado de acuerdo con los ejemplos anteriores.
Azure Table como tipo de receptor
Para copiar datos a la Tabla de Azure, establezca el tipo de receptor de la actividad de copia en AzureTableSink. En la sección sink de la actividad de copia se admiten las siguientes propiedades.
Propiedad | Descripción | Obligatorio |
---|---|---|
type | La propiedad type del receptor de la actividad de copia debe establecerse en AzureTableSink. | Sí |
azureTableDefaultPartitionKeyValue | Valor predeterminado de la clave de la partición que puede usar el receptor. | No |
azureTablePartitionKeyName | Especifique el nombre de la columna cuyos valores se usan como claves de partición. Si no se especifica, se utiliza "AzureTableDefaultPartitionKeyValue" como clave de la partición. | No |
azureTableRowKeyName | Especifique el nombre de la columna cuyos valores se usan como claves de fila. Si no se especifica, use un GUID para cada fila. | No |
azureTableInsertType | Modo de insertar datos en la tabla de Azure. Esta propiedad controla si los valores de las filas existentes en la tabla de salida con claves de partición y de fila coincidentes se van a reemplazar o a combinar. Los valores permitidos son: merge (valor predeterminado) yreplace. Esta configuración aplica en el nivel de fila, no en el nivel de tabla. Ninguna opción elimina filas de la tabla de salida que no existen en la entrada. Consulte los temas Insert or Merge Entity (Insertar o combinar entidad) e Insert or Replace Entity (Insertar o remplazar entidad) para más información acerca de cómo funcionan estas opciones (combinación y reemplazo). |
No |
writeBatchSize | Inserta datos en Azure Table cuando se alcanza el valor de writeBatchSize o writeBatchTimeout. Los valores permitidos son: enteros (número de filas). |
No (el valor predeterminado es 10 000) |
writeBatchTimeout | Inserta datos en Azure Table cuando se alcanza el valor de writeBatchSize o writeBatchTimeout. Los valores permitidos son intervalos de tiempo. Un ejemplo es "00:20:00" (20 minutos). |
No (el valor predeterminado es 90 segundos; el tiempo de expiración predeterminado del cliente de almacenamiento) |
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 |
Ejemplo:
"activities":[
{
"name": "CopyToAzureTable",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<Azure Table output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "AzureTableSink",
"azureTablePartitionKeyName": "<column name>",
"azureTableRowKeyName": "<column name>"
}
}
}
]
azureTablePartitionKeyName
Asigne una columna de origen a una de destino con la propiedad "translator" para poder usar la columna de destino como azureTablePartitionKeyName.
En el ejemplo siguiente, la columna de origen DivisionID se asigna a la columna de destino DivisionID:
"translator": {
"type": "TabularTranslator",
"columnMappings": "DivisionID: DivisionID, FirstName: FirstName, LastName: LastName"
}
El valor "DivisionID" se especifica como clave de partición.
"sink": {
"type": "AzureTableSink",
"azureTablePartitionKeyName": "DivisionID"
}
Asignación de tipos de datos de Azure Table Storage
Al copiar datos con Azure Table Storage como origen o destino, se utilizan las siguientes asignaciones de tipos de datos de Azure Table en los tipos de datos provisionales usados internamente en el servicio. Para más información acerca de la forma en que la actividad de copia asigna el tipo de datos y el esquema de origen al receptor, consulte el artículo sobre asignaciones de tipos de datos y esquema.
Al mover datos a y desde Azure Table, se usan las siguientes asignaciones definidas por Azure Table desde tipos OData de Azure Table a tipos .NET y viceversa.
Tipo de datos de Azure Table Storage | Tipo de datos de servicio provisional | Detalles |
---|---|---|
Edm.Binary | byte[] | Matriz de bytes de hasta 64 KB. |
Edm.Boolean | bool | Valor booleano. |
Edm.DateTime | DateTime | Valor de 64 bits expresado como hora universal coordinada (UTC). El intervalo admitido de DateTime comienza a la medianoche del 1 de enero de 1601 D.C. (E.C.), UTC. El intervalo finaliza el 31 de diciembre de 9999. |
Edm.Double | double | Valor de punto flotante de 64 bits. |
Edm.Guid | Guid | Identificador único global de 128 bits. |
Edm.Int32 | Int32 | Entero de 32 bits. |
Edm.Int64 | Int64 | Entero de 64 bits. |
Edm.String | String | Valor codificado mediante UTF-16. Los valores de cadena pueden tener hasta 64 KB. |
Propiedades de la actividad de búsqueda
Para obtener información detallada sobre las propiedades, consulte Actividad de búsqueda.
Contenido relacionado
Para obtener una lista de almacenes de datos que la actividad de copia admite como orígenes y receptores, vea Almacenes de datos que se admiten.