Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

In this article

Table of Contents
maxLevel2
excludeOlder Versions|Additional Resources|Related Links|Related Information

Overview

You can use this Snap to perform a file operation (move/copy/rename) for a file from a source to a target in the same server. The supported file protocols are: local file (file:///), FTP, SFTP, S3, WASB, and WASBS.

Info

ETL Transformations & Data Flow

The File Operation Snap performs extract and load operations on the input file or folder.

Snap Type

File Operation Snap is a WRITE-type Snap that writes files to the target.

Prerequisites

  • The provided account must have 'write' access to the specified directory and file in order to perform the file operation successfully.
  • IAM Roles for Amazon EC2 

Expand
titleMore information about IAM Role

Multiexcerpt include macro
nameEC2Prerequisite
pageFile Reader

Support for Ultra Pipelines

Works in Ultra Task Pipelines.

Limitations

  • The Snap can move, rename, or copy a file within the same file server, but not across file servers.
  • The Snap can move or copy S3 files across buckets within the same region, but not across regions.

Known Issues

  • This Snap does not support using the ABFS protocol with a Windows-based Snaplex.
  • When you use special characters, such asðø©¢¾A²½µ®÷¶þ~ for Source and Target directory and filenames, this Snap fails and results in the following error as the special characters are not supported.
    Error:
    Illegal character in fragment at index 71:abfs://bigdataqa@bigdataqassl.dfs.core.windows.net/simplechar/owner!@#$^&()_¢äâêîôûñç¡¿ÉÙËǨ°¸ðø©¢¾A²½µ®§÷¶þ~.json
  • The format: abfs(s)://filesystem@accountname.endpoint/<path> for file path for Source and Target fields does not work as this URL syntax is not supported. The file protocol must begin with abfs(s):///, else the container, account name, and endpoint are interpolated into the URL at runtime, which results in the following error. 
    Error: Unsupported protocol or URL syntax error in abfs(s)://filesystem@accountname.endpoint/<path>,
    Workaround: Use the supported file protocol and correct URL syntax.

Snap Views

TypeFormatNumber of ViewsExamples of Upstream and Downstream SnapsDescription
InputDocument
Min: 0
Max: 1

Mapper

File Writer

Any document with key-value pairs to evaluate expression properties in the File Operator Snap can be used, where each input document will cause one complete execution of the Snap.
OutputDocument
Min: 0
Max: 1

CSV Formatter

JSON Formatter

Mapper

A typical output from this Snap is a document with column headers, such as Source, Target, and Status (Moved or Copied).

Expand
titleSample output example


Paste code macro
languagejson
{
	"Source": "ftp://ftp.snaplogic.com/home/mrtest/new1/sample.csv",
	"Target":  "ftp://ftp.snaplogic.com/home/mrtest/new2/new.csv",
	"Status": "Moved"
}



Error

Error handling is a generic way to handle errors without losing data or failing the Snap execution. You can handle the errors that the Snap might encounter while running the Pipeline by choosing one of the following options from the When errors occur list under the Views tab. The available options are:

  • Stop Pipeline Execution: Stops the current pipeline execution when the Snap encounters an error.

  • Discard Error Data and Continue: Ignores the error, discards that record, and continues with the rest of the records.

  • Route Error Data to Error View: Routes the error data to an error view without stopping the Snap execution.

Learn more about Error handling in Pipelines.

Snap Settings

Info
  • Asterisk (*): Indicates a mandatory field.

  • Suggestion icon (): Indicates a list that is dynamically populated based on the configuration.

  • Expression icon ( ): Indicates whether the value is an expression (if enabled) or a static value (if disabled). Learn more about Using Expressions in SnapLogic.

  • Add icon ( ): Indicates that you can add fields in the fieldset.

  • Remove icon (): Indicates that you can remove fields from the fieldset.


Field NameField Type

Description

Label*


Default ValueFile Operation
Example
File Operation

String

Specify the name for the Snap. You can modify this to be more specific, especially if you have more than one of the same Snap in your Pipeline.

Source*


Default Value: [None]
Example
:


String/Expression

Specify the URL for the source, where the binary data is read from. This property can be an expression with the Expression Enabler "=" button pressedenabled.

For example, if this property is: "s3:///mybucket/out_" + Date.now() + ".csv"
then the evaluated filename can be: s3:///mybucket/out_2013-11-13T00:22:31.880Z.csv

This property should have the syntax: scheme://[hostname:port]/[path to source]

Note

When using expressions to build a file name, ensure that the resulting file name does not contain characters that are not supported by the target platform


Warning
titleAmazon AWS S3 SDK Limitation - File operations

When performing operations on S3 folders ensure that a trailing forward slash ( / ) is added; otherwise, the Snap considers it a file instead of a folder and an error message will be displayed.


Target*


Default Value: [None]
Example
:

String/Expression

This property specifies the URL of the destination where the selected file operation must be performed. This property can be an expression with the "=" button pressed.


Warning
titleAmazon AWS S3 SDK Limitation - File operations

When performing operations on S3 folders ensure that a trailing forward slash ( / ) is added; otherwise, the Snap considers it a file instead of a folder and an error message will be displayed.


File Operation


Default valueMove

Example:

  • Copy
  • _operation (A key/value pair with "operation" key should be defined as a Pipeline parameter.)
  • $operation(A key/value pair with "operation" key should be defined the input document.)


String/Expression

Enter or select the operation you want the Snap to perform on the file. Available options are: 

  • Move - Moves the source file to the target location.
  • Copy - Creates a copy of the source file in the target location.
  • Rename - Renames a file in the source location. Rename is handled the same as Move. The source URL and target URL are the same, with the exception of the file name. 
Info

This Snap supports Azure Data Lake Storage (ADLS) Gen 2 Storage and ADLS Gen 2 Storage (ABFS) protocol for moving and copying files in the Azure Blob File System (ABFS).


Note

Rename is handled the same as Move. The source URL and target URL are the same, with the exception of the file name. 


Error if exists


Default valueSelected
Example
: Deselected


Checkbox

If enabled, the Snap displays an error when the target exists. If disabled, the Snap replaces or overwrites the target with the source.


Advanced Properties

Use this field set to customize or control the Snap's validation and execution mechanism. 

Properties


Default Value: SAS URI
Example: 
Simple file operation


Dropdown list

The available options are:

  • SAS URI: 

    Multiexcerpt include macro
    nameSASURI_Description
    pageFile Reader

    Info

    If the SAS URI value is provided in the Snap settings, then the settings provided in the account (if any account is attached) are ignored.


  • Simple file operation: Select and set this property to true to allow the Snap carry out the move or copy operation without checking if the source and target are directory or regular file or does not exist. This feature is useful when the account does not have the permissions to list the source and/or target directories.
    Note: This feature is currently supported only for FTP file operations.
Info

If Simple file operation is set to true, 

  • The selection for Error if exists property is ignored.
  • None of the logic described in Snap Behavior for Key Operations applies.
  • The exact behavior of the Snap varies depending on the File Server implementation and its administration settings.
  • Az copy absolute pathSpecify the directory and wildcard for Azure blob storage for Copy, Move, and Rename operations. For example,  "\t" + blob_demo
    This field is applicable only if you are using Azure Storage account for this Snap.

    Info

    You must install the Azcopy utility in the Snaplex for fetching the path. If the path is null, native Azure Storage SDK is used for all operations. If you specify '/' in this field, the Snap searches for Azcopy in the path or in the specified path and runs the Azcopy command. You can use https as a valid URL, as Azcopy supports https file system. See Microsoft's documentation for more information about Az copy command.


    Note

    Azure storage SDK does not support file system for https. So, when you do not provide Az copy absolute path and Source/Target URL is https, the Snap displays an error. For this to work along with the container URL of the Azure blob, you must provide SAS URI under the Advanced properties field set for proper authentication.


Values

Default Value: [None]
Example:

String/ExpressionSpecify a value for the above property.

Snap Execution

Dropdown list

Multiexcerpt include macro
nameExecution_Detail_Write
pageSOAP Execute

Snap Behavior for Key Operations

Note
titleState Tables

Following is a collection of state tables to depict the Snap's behavior for different configurations of the Source, Target and Error if exists properties. These combinations are applied to move, and copy operations. Use the following legend to understand what the values mean:

SourceTargetError if exists
----xState does not affect outcomexState does not affect outcome
00Does not exist00Does not exist0Not selected
01Regular file01Regular file1Selected
10Directory10Empty directory----
----11Non-empty directory----


FTP, SFTP, and File Protocols

Expand
titleMove Operation

Move Operation

S. No.SourceTargetError if existsSnap's Behavior
StatusDescription
100xxErrorSource not found.
20100xMoved--
301010MovedTarget file is overwritten.
401011ErrorTarget already exists.
501100MovedEmpty target directory is replaced with a new file of the same name.
601101ErrorTarget already exists.
701110ErrorTarget directory not empty.
801111ErrorTarget already exists.
91000xMoved

--

Note

The source directory is renamed to the given target path if the target’s parent directory is not a subdirectory of the source.


1010010MovedTarget file is removed and source directory is moved to the target directory.
1110011ErrorTarget already exists.
1210100MovedEmpty target directory is replaced with source directory.
1310101ErrorTarget already exists.
1410110ErrorTarget directory not empty.
1510111ErrorTarget already exists.



Expand
titleCopy Operation

Copy Operation

S. No.SourceTargetError if existsSnap's Behavior
StatusDescription
100xxErrorSource not found.
20100xCopiedTarget file is created.
301010CopiedTarget file is overwritten.
401011ErrorTarget already exists.
501100Copied

Empty target directory is replaced with a new file of the same name.

Note

For some SFTP file servers, the Snap may produce an error with the following Reason: "Cannot open output stream for <target path>" if the Target property value ends with '/'.


601101ErrorTarget already exists.
701110ErrorTarget directory not empty.
801111ErrorTarget already exists.
91000xCopiedEmpty target directory created.
1010010CopiedTarget file replaced with an empty directory of the same name.
1110011ErrorTarget already exists.
1210100No operationEmpty target directory remains the same.
1310101ErrorTarget already exists.
1410110ErrorTarget directory not empty.
1510111ErrorTarget already exists.


S3, WASB, and WASBS Protocols

Expand
titleMove Operation

Move Operation

S. No.SourceTargetError if existsSnap's Behavior
StatusDescription
100xxErrorSource not found.
20100xMoved--
301010Moved Target file is overwritten.
401011ErrorTarget already exists.
50110xMovedSource file is moved to the target directory.
601110MovedSource file is moved to the target directory.
701111Moved or ErrorError if a file with the same name already exists in the target directory.
81000xMovedAll files in the source directory are moved to the target directory.
910010MovedA new target directory with a name same as the target file is created and all files in the source directory are moved to the target directory. As a result, a regular file and a directory with the same name will coexist in the target. 
10 10011ErrorTarget already exists.
111010xMovedAll files in the source directory are moved to the target directory.
1210110MovedAll files in the source directory are moved to the target directory.
1310111Moved or ErrorError if a file with the same name already exists in the target directory.



Expand
titleCopy Operation

Copy Operation

S. No.SourceTargetError if existsSnap's Behavior
StatusDescription
100xxErrorSource not found.
20100xCopiedTarget file is created.
301010CopiedTarget file is overwritten.
401011ErrorTarget already exists.
50110xCopiedSource file is copied to the target directory.
601110CopiedSource file is copied to the target directory.
701111Copied or ErrorError if the file of the same name exists in the target directory already.
81000xCopiedAll files in the source directory are copied to the target directory.
910010CopiedA new target directory with a name same as the target file is created and all files in the source directory are copied to the target directory. As a result, a regular file and a directory with the same name will coexist in the target.
1010011ErrorTarget already exists.
111010xCopiedAll files in the source directory are copied to the target directory.
1210110CopiedAll files in the source directory are copied to the target directory.
1310111Copied or ErrorError if the file of the same name exists in the target directory already.


Examples


Copying and Moving of File from One Folder to Another Folder

This example Pipeline demonstrates copying and moving of files with ABFS protocol from one folder to another folder.

First, we configure the JSON Generator Snap to pass the following sample data. After validation we see the following output.


Next, we format the data using the JSON Formatter Snap and then, use the HDFS Writer Snap to write the sample file (that uses ABFS protocol and ADLS Gen 2) to the target location.

Next, we configure two File Operation Snaps to copy and move files from one folder to another folder. We use the first File Operation Snap to copy the sample file from abfss:///bigdataqa/Samplefile/ to abfss:///bigdataqa/samplefile_diff/).

We add the second File Operation Snap to move the same sample file (uni_code.json) to another file (uni_code_move.json).

The target location of the copied and moved file can be viewed in the output preview of the Snap.

Finally, we connect the HDFS Reader Snap to read the target file.


Basic Use Case

The following Pipeline describes how the Snap functions as a standalone Snap in a Pipeline:

Download the Pipeline here or from the Downloads section below.

In the Pipeline shown above, a copy of the file Emp_Data_03032020.json is created in the specified target location. The Snap's configuration is as below:


A preview of the output from executing this Pipeline:

The exported Pipeline is available in the Downloads section below. More examples of operations are also available in the Downloads section - variousCasesOfFileOperations.pdf.

Typical Snap Configurations

Key configuration of the Snap lies in how the values are passed. The values can be passed:
  • Without Expressions: Values are passed in the Snap directly:

         

  • With Expressions:
    • Using Pipeline parameters: Values are passed as Pipeline parameters:

                      


Downloads

Multiexcerpt include macro
namedownload_instructions
pageOpenAPI

Attachments
patterns*.slp,*.zip,*.pdf

Insert excerpt
Binary Snap Pack
Binary Snap Pack
nopaneltrue