Copia y transformación de datos en el servidor SFTP mediante Azure Data Factory o Azure 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 información sobre cómo iniciar una nueva evaluación gratuita.
En este artículo se describe cómo usar la actividad de copia para copiar datos desde el servidor FTP seguro (SFTP) y desde este, y cómo usar Data Flow para transformar datos en el servidor SFTP. Para obtener más información, lea el artículo de introducción para Azure Data Factory o Azure Synapse Analytics.
Funcionalidades admitidas
Este conector SFTP se admite para las siguientes características:
Funcionalidades admitidas | IR |
---|---|
Actividad de copia (origen/receptor) | ① ② |
Flujo de datos de asignación (origen/receptor) | ① |
Actividad de búsqueda | ① ② |
Actividad GetMetadata | ① ② |
Actividad de eliminación | ① ② |
① Azure Integration Runtime ② Entorno de ejecución de integración autohospedado
En concreto, el conector de SFTP admite:
- La copia de archivos desde y hacia el servidor SFTP mediante la autenticación Básica, de clave pública SSH o multifactor.
- La copia de archivos tal cual, o bien el análisis o generación de archivos con los códecs de compresión y los formatos de archivo compatibles.
Requisitos previos
Si el almacén de datos se encuentra en una red local, una red virtual de Azure o una nube privada virtual de Amazon, debe configurar un entorno de ejecución de integración autohospedado para conectarse a él.
Si el almacén de datos es un servicio de datos en la nube administrado, puede usar Azure Integration Runtime. Si el acceso está restringido a las direcciones IP que están aprobadas en las reglas de firewall, puede agregar direcciones IP de Azure Integration Runtime a la lista de permitidos.
También puede usar la característica del entorno de ejecución de integración de red virtual administrada de Azure Data Factory para acceder a la red local sin instalar ni configurar un entorno de ejecución de integración autohospedado.
Consulte Estrategias de acceso a datos para más información sobre los mecanismos de seguridad de red y las opciones que admite Data Factory.
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 SFTP mediante la interfaz de usuario
Siga estos pasos para crear un servicio vinculado SFTP 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 SFTP y seleccione el conector de SFTP.
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 se usan para definir entidades específicas de SFTP.
Propiedades del servicio vinculado
Se admiten las siguientes propiedades para el servicio vinculado de SFTP:
Propiedad | Descripción | Obligatorio |
---|---|---|
type | La propiedad type debe establecerse en Sftp. | Sí |
host | Nombre o dirección IP del servidor SFTP. | Sí |
port | Puerto en el que escucha el servidor SFTP. El valor permitido es un entero y el valor predeterminado es 22. |
No |
skipHostKeyValidation | Especifique si desea omitir la validación de claves de host. Los valores permitidos son true y false (predeterminado). |
No |
hostKeyFingerprint | Especifique la huella dactilar de la clave de host. | Sí, si "skipHostKeyValidation" está establecido en false. |
authenticationType | Especifique el tipo de autenticación. Los valores permitidos son: Basic, SshPublicKey y MultiFactor. Para conocer más propiedades, consulte la sección Uso de la autenticación básica. Para ver ejemplos de JSON, consulte la sección Uso de la autenticación de clave pública de SSH. |
Sí |
connectVia | El entorno de ejecución de integración que se usará para conectarse al almacén de datos. Para más información, consulte la sección Requisitos previos. Si no se especifica el entorno de ejecución de integración, el servicio usa la instancia predeterminada de Azure Integration Runtime. | No |
Uso de la autenticación básica
Para usar la autenticación básica, establezca la propiedad authenticationType en Básica y especifique las siguientes propiedades, además de las genéricas, del conector de SFTP que se introdujeron en la sección anterior:
Propiedad | Descripción | Obligatorio |
---|---|---|
userName | Usuario que tiene acceso al servidor SFTP. | Sí |
password | La contraseña para el usuario (userName). Marque este campo como SecureString para almacenarlo de forma segura, o bien haga referencia a un secreto almacenado en Azure Key Vault. | Sí |
Ejemplo:
{
"name": "SftpLinkedService",
"properties": {
"type": "Sftp",
"typeProperties": {
"host": "<sftp server>",
"port": 22,
"skipHostKeyValidation": false,
"hostKeyFingerPrint": "ssh-rsa 2048 xx:00:00:00:xx:00:x0:0x:0x:0x:0x:00:00:x0:x0:00",
"authenticationType": "Basic",
"userName": "<username>",
"password": {
"type": "SecureString",
"value": "<password>"
}
},
"connectVia": {
"referenceName": "<name of integration runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Uso de la autenticación de clave pública SSH
Para usar la autenticación de clave pública SSH, establezca la propiedad "authenticationType" en SshPublicKey y especifique las siguientes propiedades además de las genéricas del conector SFTP descritas en la última sección:
Propiedad | Descripción | Obligatorio |
---|---|---|
userName | Usuario que tiene acceso al servidor SFTP. | Sí |
privateKeyPath | Especifique una ruta de acceso absoluta al archivo de clave privada al que el entorno de ejecución de integración pueda acceder. Esto solo se aplica cuando se especifica un tipo autohospedado de un entorno de ejecución de integración en "connectVia". | Especifique privateKeyPath o privateKeyContent . |
privateKeyContent | Contenido de clave privada SSH codificada en Base64. La clave privada SSH debe tener el formato OpenSSH. Marque este campo como SecureString para almacenarlo de forma segura, o bien haga referencia a un secreto almacenado en Azure Key Vault. | Especifique privateKeyPath o privateKeyContent . |
passPhrase | Especifique la contraseña o la frase de contraseña para descifrar la clave privada si el archivo de clave o el contenido de clave está protegido por una frase de contraseña. Marque este campo como SecureString para almacenarlo de forma segura, o bien haga referencia a un secreto almacenado en Azure Key Vault. | Sí, si el archivo de clave privada o el contenido de clave está protegido por una frase de contraseña. |
Nota
El conector de SFTP solo admite una clave OpenSSH de RSA/DSA. Asegúrese de que el contenido del archivo de claves comienza por "-----BEGIN [RSA/DSA] PRIVATE KEY-----". Si el archivo de clave privada es un archivo con formato PPK, use la herramienta PuTTY para convertir del formato PPK a OpenSSH.
Ejemplo 1: Autenticación de SshPublicKey mediante el valor de filePath de clave privada
{
"name": "SftpLinkedService",
"properties": {
"type": "Sftp",
"typeProperties": {
"host": "<sftp server>",
"port": 22,
"skipHostKeyValidation": true,
"authenticationType": "SshPublicKey",
"userName": "xxx",
"privateKeyPath": "D:\\privatekey_openssh",
"passPhrase": {
"type": "SecureString",
"value": "<pass phrase>"
}
},
"connectVia": {
"referenceName": "<name of integration runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Ejemplo 2: Autenticación de SshPublicKey mediante contenido de clave privada
{
"name": "SftpLinkedService",
"type": "Linkedservices",
"properties": {
"type": "Sftp",
"typeProperties": {
"host": "<sftp server>",
"port": 22,
"skipHostKeyValidation": true,
"authenticationType": "SshPublicKey",
"userName": "<username>",
"privateKeyContent": {
"type": "SecureString",
"value": "<base64 string of the private key content>"
},
"passPhrase": {
"type": "SecureString",
"value": "<pass phrase>"
}
},
"connectVia": {
"referenceName": "<name of integration runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Usar la autenticación multifactor
Para utilizar la autenticación multifactor, que es una combinación de autenticación básica y de clave pública SSH, especifique la información de nombre de usuario, contraseña y clave privada descrita en las secciones anteriores.
Ejemplo: autenticación multifactor
{
"name": "SftpLinkedService",
"properties": {
"type": "Sftp",
"typeProperties": {
"host": "<host>",
"port": 22,
"authenticationType": "MultiFactor",
"userName": "<username>",
"password": {
"type": "SecureString",
"value": "<password>"
},
"privateKeyContent": {
"type": "SecureString",
"value": "<base64 encoded private key content>"
},
"passPhrase": {
"type": "SecureString",
"value": "<passphrase for private key>"
}
},
"connectVia": {
"referenceName": "<name of integration runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Propiedades del conjunto de datos
Para obtener una lista completa de las secciones y las propiedades disponibles para definir conjuntos de datos, consulte el artículo sobre conjuntos de datos.
Azure Data Factory admite los siguientes formatos de archivo. Consulte los artículos para conocer la configuración basada en el formato.
- Formato Avro
- Formato binario
- Formato de texto delimitado
- Formato Excel
- Formato JSON
- Formato ORC
- Formato Parquet
- Formato XML
Se admiten las siguientes propiedades para SFTP en el valor location
del conjunto de datos basado en formato:
Propiedad | Descripción | Obligatorio |
---|---|---|
type | La propiedad type de location en el conjunto de datos debe establecerse en SftpLocation. |
Sí |
folderPath | Ruta de acceso a la carpeta. Si quiere usar un carácter comodín para filtrar la carpeta, omita este valor y especifique la ruta de acceso en la configuración del origen de actividad. | No |
fileName | Nombre de archivo en la propiedad folderPath especificada. Si quiere usar un carácter comodín para filtrar archivos, omita este valor y especifique el nombre de archivo en la configuración del origen de actividad. | No |
Ejemplo:
{
"name": "DelimitedTextDataset",
"properties": {
"type": "DelimitedText",
"linkedServiceName": {
"referenceName": "<SFTP linked service name>",
"type": "LinkedServiceReference"
},
"schema": [ < physical schema, optional, auto retrieved during authoring > ],
"typeProperties": {
"location": {
"type": "SftpLocation",
"folderPath": "root/folder/subfolder"
},
"columnDelimiter": ",",
"quoteChar": "\"",
"firstRowAsHeader": true,
"compressionCodec": "gzip"
}
}
}
Propiedades de la actividad de copia
Para obtener una lista completa de las secciones y propiedades disponibles para definir actividades, consulte el artículo Canalizaciones. En esta sección se proporciona una lista de las propiedades que el origen SFTP admite.
SFTP como origen
Azure Data Factory admite los siguientes formatos de archivo. Consulte los artículos para conocer la configuración basada en el formato.
- Formato Avro
- Formato binario
- Formato de texto delimitado
- Formato Excel
- Formato JSON
- Formato ORC
- Formato Parquet
- Formato XML
Se admiten las siguientes propiedades para SFTP en el valor storeSettings
del origen de copia basado en formato:
Propiedad | Descripción | Obligatorio |
---|---|---|
type | La propiedad type en storeSettings debe establecerse como SftpReadSettings. |
Sí |
Búsqueda de los archivos que se van a copiar | ||
OPCIÓN 1: ruta de acceso estática |
Copia de la ruta de acceso de archivo o carpeta especificada en el conjunto de datos. Si quiere copiar todos los archivos de una carpeta, especifique también wildcardFileName como * . |
|
OPCIÓN 2: carácter comodín - wildcardFolderPath |
Ruta de acceso de carpeta con caracteres comodín para filtrar las carpetas de origen. Los caracteres comodín permitidos son * (coincide con cero o varios caracteres) y ? (coincide con cero o con un carácter individual); use ^ para el escape si el nombre real de la carpeta contiene un carácter comodín o este carácter de escape dentro. Para ver más ejemplos, consulte Ejemplos de filtros de carpetas y archivos. |
No |
OPCIÓN 2: carácter comodín - wildcardFileName |
Nombre de archivo con caracteres comodín en la propiedad folderPath o wildcardFolderPath especificada para filtrar los archivos de origen. Los caracteres comodín permitidos son: * (coincide con cero o más caracteres) y ? (coincide con cero o carácter individual); use ^ para el escape si el nombre real del archivo tiene un carácter comodín o este carácter de escape dentro. Para ver más ejemplos, consulte Ejemplos de filtros de carpetas y archivos. |
Sí |
OPCIÓN 3: una lista de archivos - fileListPath |
Indica que se copie un conjunto de archivos especificado. Apunte a un archivo de texto que incluya una lista de archivos que desee copiar (un archivo por línea, con la ruta de acceso relativa a la ruta de acceso configurada en el conjunto de datos). Al usar esta opción, no especifique un nombre de archivo en el conjunto de datos. Para ver más ejemplos, consulte Ejemplos de lista de archivos. |
No |
Configuración adicional | ||
recursive | Indica si los datos se leen de forma recursiva de las subcarpetas o solo de la carpeta especificada. Cuando recursive se establece en true y el receptor es un almacén basado en archivos, no se crea una carpeta o una subcarpeta vacía en el receptor. Los valores permitidos son: True (valor predeterminado) y False. Esta propiedad no se aplica al configurar fileListPath . |
No |
deleteFilesAfterCompletion | Indica si los archivos binarios se eliminarán del almacén de origen después de moverse correctamente al almacén de destino. Cada archivo se elimina individualmente, de modo que cuando se produzca un error en la actividad de copia, algunos archivos ya se habrán copiado al destino y se habrán eliminado del origen, mientras que otros seguirán aún en el almacén de origen. Esta propiedad solo es válida en el escenario de copia de archivos binarios. El valor predeterminado es false. |
No |
modifiedDatetimeStart | Los archivos se filtran en función del atributo Last Modified. Los archivos se seleccionarán si la hora de la última modificación es mayor o igual que modifiedDatetimeStart , y menor que modifiedDatetimeEnd . La hora se aplica a la zona horaria UTC en el formato 2018-12-01T05:00:00Z. Las propiedades pueden ser NULL, lo que significa que no se aplica ningún filtro de atributo de archivo al conjunto de datos. Cuando modifiedDatetimeStart tiene un valor de fecha y hora, pero modifiedDatetimeEnd es NULL, significa que se seleccionarán los archivos cuyo último atributo modificado sea mayor o igual que el valor de fecha y hora. Cuando modifiedDatetimeEnd tiene el valor de fecha y hora, pero modifiedDatetimeStart es NULL, significa que se seleccionarán los archivos cuyo último atributo modificado sea inferior al valor de fecha y hora.Esta propiedad no se aplica al configurar fileListPath . |
No |
modifiedDatetimeEnd | Igual que el anterior. | No |
enablePartitionDiscovery | En el caso de archivos con particiones, especifique si quiere analizar las particiones de la ruta de acceso del archivo y agregarlas como columnas de origen adicionales. Los valores permitidos son false (valor predeterminado) y true. |
No |
partitionRootPath | Cuando esté habilitada la detección de particiones, especifique la ruta de acceso raíz absoluta para poder leer las carpetas con particiones como columnas de datos. Si no se especifica, de forma predeterminada, - Cuando se usa la ruta de acceso de archivo en un conjunto de datos o una lista de archivos del origen, la ruta de acceso raíz de la partición es la ruta de acceso configurada en el conjunto de datos. - Cuando se usa el filtro de carpeta con caracteres comodín, la ruta de acceso raíz de la partición es la subruta antes del primer carácter comodín. Por ejemplo, supongamos que configura la ruta de acceso en el conjunto de datos como "root/folder/year=2020/month=08/day=27": - Si especifica la ruta de acceso raíz de la partición como "root/folder/year=2020", la actividad de copia generará dos columnas más, month y day , con el valor "08" y "27", respectivamente, además de las columnas de los archivos.- Si no se especifica la ruta de acceso raíz de la partición, no se generará ninguna columna adicional. |
No |
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 |
disableChunking | Al copiar datos desde SFTP, el servicio intenta obtener primero la longitud del archivo y, después, divide el archivo en varias partes y los lee en paralelo. Especifique si el servidor SFTP admite la obtención de la longitud del archivo o la búsqueda de lectura desde un desplazamiento determinado. Los valores permitidos son false (valor predeterminado) y true. |
No |
Ejemplo:
"activities":[
{
"name": "CopyFromSFTP",
"type": "Copy",
"inputs": [
{
"referenceName": "<Delimited text input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "DelimitedTextSource",
"formatSettings":{
"type": "DelimitedTextReadSettings",
"skipLineCount": 10
},
"storeSettings":{
"type": "SftpReadSettings",
"recursive": true,
"wildcardFolderPath": "myfolder*A",
"wildcardFileName": "*.csv",
"disableChunking": false
}
},
"sink": {
"type": "<sink type>"
}
}
}
]
SFTP como un receptor
Azure Data Factory admite los siguientes formatos de archivo. Consulte los artículos para conocer la configuración basada en el formato.
Las propiedades siguientes se admiten para SFTP en el valor storeSettings
del receptor de la copia con formato:
Propiedad | Descripción | Obligatorio |
---|---|---|
type | La propiedad type en storeSettings se debe establecer en SftpWriteSettings. |
Sí |
copyBehavior | Define el comportamiento de copia cuando el origen son archivos de un almacén de datos basados en archivos. Los valores permitidos son: - PreserveHierarchy (valor predeterminado): conserva la jerarquía de archivos en la carpeta de destino. La ruta de acceso relativa del archivo de origen a la carpeta de origen es idéntica que la ruta de acceso relativa del archivo de destino a la carpeta de destino. - FlattenHierarchy: todos los archivos de la carpeta de origen están en el primer nivel de la carpeta de destino. Los archivos de destino tienen nombres generados automáticamente. - MergeFiles: combina todos los archivos de la carpeta de origen en un archivo. Si se especifica el nombre del archivo, el nombre de archivo combinado es el nombre especificado. De lo contrario, es un nombre de archivo generado automáticamente. |
No |
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 |
useTempFileRename | Indique si desea cargar en archivos temporales y cambiarles el nombre, o bien escribir directamente en la ubicación de la carpeta o archivo de destino. De forma predeterminada, el servicio primero escribe en archivos temporales y, a continuación, los cambia de nombre cuando finaliza la carga. Esta secuencia ayuda a (1) evitar conflictos que podrían dañar el archivo si tiene otros procesos que escriben en el mismo archivo y (2) asegurarse de que la versión original del archivo existe durante la transferencia. Si el servidor SFTP no admite la operación de cambio de nombre, deshabilite esta opción y asegúrese de que no tiene una escritura simultánea en el archivo de destino. Para más información, consulte la sugerencia de solución de problemas al final de esta tabla. | No. El valor predeterminado es true. |
operationTimeout | Tiempo de espera máximo de las solicitudes de escritura en el servidor SFTP. El valor predeterminado es 60 min (01:00:00). | No |
Sugerencia
Si recibe el error "UserErrorSftpPathNotFound", "UserErrorSftpPermissionDenied" o "SftpOperationFail" cuando escribe datos en SFTP, y el usuario de SFTP que usa tiene los permisos adecuados, compruebe si funciona la operación de cambio de nombre del archivo de compatibilidad del servidor SFTP. Si no es así, deshabilite la opción Cargar con archivo temporal (useTempFileRename
) e inténtelo de nuevo. Para más información sobre esta propiedad, consulte la tabla anterior. Si usa una instancia de entorno de ejecución de integración autohospedado para la actividad de copia, asegúrese de usar la versión 4.6 o posterior.
Ejemplo:
"activities":[
{
"name": "CopyToSFTP",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "BinarySink",
"storeSettings":{
"type": "SftpWriteSettings",
"copyBehavior": "PreserveHierarchy"
}
}
}
}
]
Ejemplos de filtros de carpetas y archivos
En esta sección se describe el comportamiento resultante del uso de filtros comodín con rutas de acceso a carpetas y nombres de archivo.
folderPath | fileName | recursive | Resultado de estructura de carpeta de origen y filtro (se recuperan los archivos en negrita) |
---|---|---|---|
Folder* |
(vacío, usar el valor predeterminado) | false | FolderA File1.csv File2.json Subfolder1 File3.csv File4.json File5.csv AnotherFolderB File6.csv |
Folder* |
(vacío, usar el valor predeterminado) | true | FolderA File1.csv File2.json Subfolder1 File3.csv File4.json File5.csv AnotherFolderB File6.csv |
Folder* |
*.csv |
false | FolderA File1.csv File2.json Subfolder1 File3.csv File4.json File5.csv AnotherFolderB File6.csv |
Folder* |
*.csv |
true | FolderA File1.csv File2.json Subfolder1 File3.csv File4.json File5.csv AnotherFolderB File6.csv |
Ejemplos de lista de archivos
En esta tabla se describe el comportamiento resultante de usar una ruta de acceso de la lista de archivos en el origen de la actividad de copia. Se supone que tiene la siguiente estructura de carpetas de origen y quiere copiar los archivos que están en negrita:
Estructura de origen de ejemplo | Contenido de FileListToCopy.txt | Configuración de Azure Data Factory |
---|---|---|
root FolderA File1.csv File2.json Subfolder1 File3.csv File4.json File5.csv Metadatos FileListToCopy.txt |
File1.csv Subfolder1/File3.csv Subfolder1/File5.csv |
El conjunto de datos: - Ruta de acceso de la carpeta: root/FolderA En el origen de la actividad de copia: - Ruta de acceso de la lista de archivos: root/Metadata/FileListToCopy.txt La ruta de acceso de la lista de archivos apunta a un archivo de texto en el mismo almacén de datos que incluye una lista de archivos que se quiere copiar (un archivo por línea, con la ruta de acceso relativa a la ruta de acceso configurada en el conjunto de datos). |
Propiedades de Asignación de instancias de Data Flow
Al transformar datos en los flujos de datos de asignación, podrá leer y escribir archivos de SFTP en los siguientes formatos:
La configuración específica de formato se encuentra en la documentación de ese formato. Para obtener más información, consulte los artículos sobre la transformación de origen en un flujo de datos de asignación y la transformación de receptor en un flujo de datos de asignación.
Nota
Por ahora, el flujo de datos de asignación no admite la validación de claves de host SSH.
Nota
Para acceder a la instancia local del servidor de FTP, deberá usar la red virtual administrada o un área de trabajo de Synapse o Azure Data Factory mediante un punto de conexión privado. Consulte este tutorial para ver los pasos detallados.
Transformación de origen
En la siguiente tabla se enumeran las propiedades que admite un origen SFTP. Puede editar estas propiedades en la pestaña Source options (Opciones de origen). Si usa un conjunto de datos alineado, verá configuraciones adicionales que equivalen a las propiedades descritas en la sección Propiedades del conjunto de datos.
Nombre | Descripción | Obligatorio | Valores permitidos | Propiedad de script de flujo de datos |
---|---|---|---|---|
Ruta de acceso de comodín | El uso de un patrón de caracteres comodín indicará a ADF que recorra todos los archivos y carpetas que coincidan con este mientras realiza una única transformación del origen. Se trata de una manera eficaz de procesar varios archivos en un único flujo. | No | String[] | wildcardPaths |
Ruta de acceso raíz de la partición | Si tiene carpetas con particiones en el origen de archivo con un formato key=value (por ejemplo, year=2019 ), podrá asignar el nivel superior del árbol de carpetas de la partición con un nombre de columna del flujo de datos. |
No | String | partitionRootPath |
No permitir que se encuentren archivos | Si el valor es "true", no se devolverá un error si no se encuentra ningún archivo. | No | true o false |
ignoreNoFilesFound |
Lista de archivos | Se trata de un conjunto de archivos. Cree un archivo de texto que incluya una lista de archivos de ruta de acceso relativa para procesar. Apunte a este archivo de texto. | No | true o false |
fileList |
Columna para almacenar el nombre de archivo | Almacene el nombre del archivo de origen en una columna de los datos. Escriba aquí el nombre de una nueva columna para almacenar la cadena de nombre de archivo. | No | String | rowUrlColumn |
Después de finalizar | Elija no hacer nada con el archivo de origen después de que se ejecute el flujo de datos o bien elimine o mueva el archivo de origen. Las rutas de acceso para mover los archivos de origen son relativas. | No | Borrar: true o false Mover: ['<from>', '<to>'] |
purgeFiles moveFiles |
Filtrar por última modificación | Puede filtrar los archivos que desea procesar especificando un intervalo de fechas de la última vez que se modificaron. Todas las horas están en formato UTC. | No | Timestamp | modifiedAfter modifiedBefore |
Ejemplo de script de origen SFTP
Si se usa un conjunto de datos SFTP como tipo de origen, el script del flujo de datos asociado será:
source(allowSchemaDrift: true,
validateSchema: false,
ignoreNoFilesFound: true,
purgeFiles: true,
fileList: true,
modifiedAfter: (toTimestamp(1647388800000L)),
modifiedBefore: (toTimestamp(1647561600000L)),
partitionRootPath: 'partdata',
wildcardPaths:['partdata/**/*.csv']) ~> SFTPSource
Transformación de receptor
En la siguiente tabla se enumeran las propiedades que admite un receptor SFTP. Puede editar estas propiedades en la pestaña Configuración. Al usar un conjunto de datos en línea, se ven opciones adicionales, que son las mismas que las propiedades descritas en la sección Propiedades del conjunto de datos.
Nombre | Descripción | Obligatorio | Valores permitidos | Propiedad de script de flujo de datos |
---|---|---|---|---|
Borrar la carpeta | determina si se borra o no la carpeta de destino antes de escribir los datos. | No | true o false |
truncate |
Opción de nombre de archivo | El formato de nombre de los datos escritos. De forma predeterminada, se usa un archivo por partición en formato part-#####-tid-<guid> . |
No | Patrón: Cadena Por partición: Cadena[] Asignar nombre al archivo como datos de columna: cadena Asignar nombre a la carpeta como datos de columna: cadena Salida en un solo archivo: ['<fileName>'] |
filePattern partitionFileNames rowUrlColumn rowFolderUrlColumn partitionFileNames |
Entrecomillar todo | Esta configuración determina si se deben entrecomillar todos los valores. | No | true o false |
quoteAll |
Ejemplo de script de receptor SFTP
Si se usa un conjunto de datos SFTP como tipo de receptor, el script de flujo de datos asociado será:
IncomingStream sink(allowSchemaDrift: true,
validateSchema: false,
filePattern:'loans[n].csv',
truncate: true,
skipDuplicateMapInputs: true,
skipDuplicateMapOutputs: true) ~> SFTPSink
Propiedades de la actividad de búsqueda
Para obtener más información sobre las propiedades de la actividad de búsqueda, consulte Actividad de búsqueda.
Propiedades de la actividad GetMetadata
Para obtener más información sobre las propiedades de la actividad GetMetadata, consulte Actividad GetMetadata.
Propiedades de la actividad de eliminación
Para obtener más información sobre las propiedades de la actividad de eliminación, consulte Actividad de eliminación.
Modelos heredados
Nota
Estos modelos siguen siendo compatibles con versiones anteriores. Se recomienda usar el nuevo modelo descrito anteriormente, ya que la UI de creación ha cambiado para generar el nuevo modelo.
Modelo de conjunto de datos heredado
Propiedad | Descripción | Obligatorio |
---|---|---|
type | La propiedad type del conjunto de datos debe establecerse en FileShare. | Sí |
folderPath | Ruta de acceso a la carpeta. Se admite un filtro con caracteres comodín. Los caracteres comodín permitidos son * (equivale a cero o a varios caracteres) y ? (equivale a cero o a un único carácter); use ^ como carácter de escape si el nombre de archivo real tiene un carácter comodín o este carácter de escape dentro. Ejemplos: rootfolder/subfolder/ver más en Ejemplos de filtros de carpetas y archivos. |
Sí |
fileName | Filtro de nombre o de carácter comodín para los archivos de la ruta "folderPath" especificada. Si no especifica ningún valor para esta propiedad, el conjunto de datos apunta a todos los archivos de la carpeta. Para filtrar, los caracteres comodín permitidos son * (equivale a cero o a varios caracteres) y ? (equivale a cero o a un único carácter).- Ejemplo 1: "fileName": "*.csv" - Ejemplo 2: "fileName": "???20180427.txt" Use ^ como escape si el nombre real de la carpeta contiene un carácter comodín o este carácter de escape. |
No |
modifiedDatetimeStart | Los archivos se filtran en función del atributo Last Modified. Los archivos se seleccionarán si la hora de la última modificación es mayor o igual que modifiedDatetimeStart , y menor que modifiedDatetimeEnd . La hora se aplica a la zona horaria UTC en el formato 2018-12-01T05:00:00Z. El rendimiento general del movimiento de datos se verá afectado si habilita este valor cuando desee filtrar grandes cantidades de archivos. Las propiedades pueden ser NULL, lo que significa que no se aplica ningún filtro de atributo de archivo al conjunto de datos. Cuando modifiedDatetimeStart tiene un valor de fecha y hora, pero modifiedDatetimeEnd es NULL, significa que se seleccionarán los archivos cuyo último atributo modificado sea mayor o igual que el valor de fecha y hora. Cuando modifiedDatetimeEnd tiene el valor de fecha y hora, pero modifiedDatetimeStart es NULL, significa que se seleccionarán los archivos cuyo último atributo modificado sea inferior al valor de fecha y hora. |
No |
modifiedDatetimeEnd | Los archivos se filtran en función del atributo Last Modified. Los archivos se seleccionarán si la hora de la última modificación es mayor o igual que modifiedDatetimeStart , y menor que modifiedDatetimeEnd . La hora se aplica a la zona horaria UTC en el formato 2018-12-01T05:00:00Z. El rendimiento general del movimiento de datos se verá afectado si habilita este valor cuando desee filtrar grandes cantidades de archivos. Las propiedades pueden ser NULL, lo que significa que no se aplica ningún filtro de atributo de archivo al conjunto de datos. Cuando modifiedDatetimeStart tiene un valor de fecha y hora, pero modifiedDatetimeEnd es NULL, significa que se seleccionarán los archivos cuyo último atributo modificado sea mayor o igual que el valor de fecha y hora. Cuando modifiedDatetimeEnd tiene el valor de fecha y hora, pero modifiedDatetimeStart es NULL, significa que se seleccionarán los archivos cuyo último atributo modificado sea inferior al valor de fecha y hora. |
No |
format | Si quiere copiar los archivos tal cual entre los almacenes basados en archivos (copia binaria), omita la sección de formato en las definiciones de los conjuntos de datos de entrada y salida. Si quiere analizar archivos con un formato concreto, se admiten los siguientes tipos de formato de archivo: TextFormat, JsonFormat, AvroFormat, OrcFormat y ParquetFormat. Establezca la propiedad type de formato en uno de los siguientes valores. Para más información, consulte las secciones Formato de texto, Formato Json, Formato Avro, Formato Orc y Formato Parquet. |
No (solo para el escenario de copia binaria) |
compression | Especifique el tipo y el nivel de compresión de los datos. Para más información, consulte el artículo sobre códecs de compresión y formatos de archivo compatibles. Los tipos admitidos son GZip, Deflate, BZip2 y ZipDeflate. Niveles admitidos son Optimal y Fastest. |
No |
Sugerencia
Para copiar todos los archivos en una carpeta, especifique solo folderPath.
Para copiar un único archivo con un nombre determinado, especifique folderPath con el elemento de carpeta y fileName con el nombre de archivo.
Para copiar un subconjunto de archivos en una carpeta, especifique folderPath con el elemento de carpeta y fileName con el filtro de comodín.
Nota
Si estaba usando la propiedad fileFilter para el filtro de archivos, todavía se admite tal cual, aunque se recomienda usar la nueva funcionalidad de filtro agregada a fileName de ahora en adelante.
Ejemplo:
{
"name": "SFTPDataset",
"type": "Datasets",
"properties": {
"type": "FileShare",
"linkedServiceName":{
"referenceName": "<SFTP linked service name>",
"type": "LinkedServiceReference"
},
"typeProperties": {
"folderPath": "folder/subfolder/",
"fileName": "*",
"modifiedDatetimeStart": "2018-12-01T05:00:00Z",
"modifiedDatetimeEnd": "2018-12-01T06:00:00Z",
"format": {
"type": "TextFormat",
"columnDelimiter": ",",
"rowDelimiter": "\n"
},
"compression": {
"type": "GZip",
"level": "Optimal"
}
}
}
}
Modelo de origen de actividad de copia heredada
Propiedad | Descripción | Obligatorio |
---|---|---|
type | La propiedad type del origen de la actividad de copia debe establecerse en FileSystemSource. | Sí |
recursive | Indica si los datos se leen de forma recursiva de las subcarpetas o solo de la carpeta especificada. Si recursive se establece en true y el receptor es un almacén basado en archivos, no se copiará ni creará una subcarpeta o carpeta vacía en el receptor. Los valores permitidos son true (valor predeterminado) y false. |
No |
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": "CopyFromSFTP",
"type": "Copy",
"inputs": [
{
"referenceName": "<SFTP input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "FileSystemSource",
"recursive": true
},
"sink": {
"type": "<sink type>"
}
}
}
]
Contenido relacionado
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 y receptores.