使用 Azure 数据工厂从/向 Azure 文件存储复制数据
适用于:Azure 数据工厂
Azure Synapse Analytics
本文概述了如何向/从 Azure 文件存储复制数据。 若要了解 Azure 数据工厂,请阅读介绍性文章。
此 Azure 文件存储连接器支持以下功能:
支持的功能 | IR | 托管专用终结点 |
---|---|---|
复制活动(源/接收器) | ① ② | ✓ 排除存储帐户 V1 |
Lookup 活动 | ① ② | ✓ 排除存储帐户 V1 |
GetMetadata 活动 | ① ② | ✓ 排除存储帐户 V1 |
Delete 活动 | ① ② | ✓ 排除存储帐户 V1 |
① Azure 集成运行时 ② 自承载集成运行时
可将数据从 Azure 文件存储复制到任一支持的接收器数据存储,或将数据从任一支持的源数据存储复制到 Azure 文件存储。 有关复制活动支持作为源和接收器的数据存储的列表,请参阅支持的数据存储和格式。
具体而言,此 Azure 文件存储连接器支持:
- 使用帐户密钥或服务共享访问签名 (SAS) 身份验证复制文件。
- 按原样复制文件,或者使用支持的文件格式和压缩编解码器分析/生成文件。
若要使用管道执行复制活动,可以使用以下工具或 SDK 之一:
使用以下步骤在 Azure 门户 UI 中创建一个到 Azure 文件存储的链接服务。
浏览到 Azure 数据工厂或 Synapse 工作区中的“管理”选项卡并选择“链接服务”,然后单击“新建”:
搜索文件并选择标记为 Azure 文件存储的 Azure 文件存储的连接器。
配置服务详细信息、测试连接并创建新的链接服务。
以下部分提供了有关各属性的详细信息,这些属性用于定义特定于 Azure 文件存储的实体。
Azure 文件存储连接器支持以下身份验证类型。 有关详细信息,请参阅相应部分。
备注
如果使用具有旧模型的 Azure 文件存储链接服务,其中在 ADF 创作 UI 上显示为“基本身份验证”,则它仍按原样受支持,但建议今后使用新模型。 旧模型通过服务器消息块 (SMB) 与存储相互传输数据,而新模型利用具有更高吞吐量的存储 SDK。 若要升级,可以编辑链接服务以将身份验证方法切换为“帐户密钥”或“SAS URI”,无需更改数据集或复制活动。
数据工厂支持使用以下属性进行 Azure 文件存储帐户密钥身份验证:
属性 | 描述 | 必需 |
---|---|---|
type | type 属性必须设置为:AzureFileStorage。 | 是 |
connectionString | 指定连接到 Azure 文件存储所需的信息。 还可以将帐户密钥放在 Azure Key Vault 中,从连接字符串中拉取 accountKey 配置。 有关详细信息,请参阅以下示例和在 Azure Key Vault 中存储凭据一文。 |
是 |
fileShare | 指定文件共享。 | 是 |
快照 | 如果要从快照复制,请指定文件共享快照的日期。 | 否 |
connectVia | 用于连接到数据存储的集成运行时。 如果数据存储位于专用网络,则可以使用 Azure Integration Runtime 或自承载集成运行时。 如果未指定,则使用默认 Azure Integration Runtime。 | 否 |
示例:
{
"name": "AzureFileStorageLinkedService",
"properties": {
"type": "AzureFileStorage",
"typeProperties": {
"connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountName>;AccountKey=<accountKey>;EndpointSuffix=core.chinacloudapi.cn;",
"fileShare": "<file share name>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
示例:在 Azure Key Vault 中存储帐户密钥
{
"name": "AzureFileStorageLinkedService",
"properties": {
"type": "AzureFileStorage",
"typeProperties": {
"connectionString": "DefaultEndpointsProtocol=https;AccountName=<accountname>;EndpointSuffix=core.chinacloudapi.cn;",
"fileShare": "<file share name>",
"accountKey": {
"type": "AzureKeyVaultSecret",
"store": {
"referenceName": "<Azure Key Vault linked service name>",
"type": "LinkedServiceReference"
},
"secretName": "<secretName>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
共享访问签名对存储帐户中的资源提供委托访问。 使用共享访问签名可以在指定的时间内授予客户端对存储帐户中对象的有限访问权限。 有关共享访问签名的详细信息,请参阅共享访问签名:了解共享访问签名模型。
该服务支持通过以下属性来使用共享访问签名身份验证:
属性 | 描述 | 必需 |
---|---|---|
type | type 属性必须设置为:AzureFileStorage。 | 是 |
sasUri | 指定资源的共享访问签名 URI。 将此字段标记为 SecureString 以安全存储它。 还可以将 SAS 令牌放在 Azure Key Vault 中,以使用自动轮换和删除令牌部分。 有关详细信息,请参阅以下示例和在 Azure Key Vault 中存储凭据。 |
是 |
fileShare | 指定文件共享。 | 是 |
快照 | 如果要从快照复制,请指定文件共享快照的日期。 | 否 |
connectVia | 用于连接到数据存储的集成运行时。 如果数据存储位于专用网络,则可以使用 Azure Integration Runtime 或自承载集成运行时。 如果未指定,则使用默认 Azure Integration Runtime。 | 否 |
示例:
{
"name": "AzureFileStorageLinkedService",
"properties": {
"type": "AzureFileStorage",
"typeProperties": {
"sasUri": {
"type": "SecureString",
"value": "<SAS URI of the resource e.g. https://<accountname>.file.core.chinacloudapi.cn/?sv=<storage version>&st=<start time>&se=<expire time>&sr=<resource>&sp=<permissions>&sip=<ip range>&spr=<protocol>&sig=<signature>>"
},
"fileShare": "<file share name>",
"snapshot": "<snapshot version>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
示例:将 SAS 令牌存储在 Azure Key Vault 中
{
"name": "AzureFileStorageLinkedService",
"properties": {
"type": "AzureFileStorage",
"typeProperties": {
"sasUri": {
"type": "SecureString",
"value": "<SAS URI of the Azure Storage resource without token e.g. https://<accountname>.file.core.chinacloudapi.cn/>"
},
"sasToken": {
"type": "AzureKeyVaultSecret",
"store": {
"referenceName": "<Azure Key Vault linked service name>",
"type": "LinkedServiceReference"
},
"secretName": "<secretName with value of SAS token e.g. ?sv=<storage version>&st=<start time>&se=<expire time>&sr=<resource>&sp=<permissions>&sip=<ip range>&spr=<protocol>&sig=<signature>>"
},
"fileShare": "<file share name>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
数据工厂或 Synapse 管道可以与系统分配的 Azure 资源的托管标识相关联,这表示该资源用于对其他 Azure 服务进行身份验证。 可以将此系统分配的托管标识用于 Azure 文件存储身份验证。 若要详细了解 Azure 资源托管标识,请参阅 Azure 资源托管标识。
若要使用系统分配的托管标识身份验证,请执行以下步骤:
通过复制随工厂或 Synapse 工作区一起生成的系统分配的托管标识对象 ID 的值,检索系统分配的托管标识信息。
在 Azure 文件存储中授予托管标识权限。 有关角色的详细信息,请查看此文章。
- 作为源,在“访问控制(IAM)”中,至少授予“存储文件数据特权读取者”角色。
- 作为接收器,在“访问控制(IAM)”中,至少授予“存储文件数据特权参与者”角色。
Azure 文件存储链接服务支持以下属性:
properties | 描述 | 必需 |
---|---|---|
type | type 属性必须设置为 AzureFileStorage。 | 是 |
serviceEndpoint | 使用模式 https://<accountName>.file.core.chinacloudapi.cn/ 指定 Azure 文件存储服务终结点。 |
是 |
fileShare | 指定文件共享。 | 是 |
快照 | 如果要从快照复制,请指定文件共享快照的日期。 | 否 |
connectVia | 用于连接到数据存储的集成运行时。 可以使用 Azure 集成运行时。 如果未指定,则使用默认 Azure Integration Runtime。 | 否 |
备注
只有 Azure Integration Runtime 支持系统分配的托管标识身份验证。
示例:
{
"name": "AzureFileStorageLinkedService",
"properties": {
"type": "AzureFileStorage",
"typeProperties": {
"serviceEndpoint": "https://<accountName>.file.core.chinacloudapi.cn/",
"fileShare": "<file share name>",
"snapshot": "<snapshot version>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
可以为数据工厂分配一个或多个用户分配的托管标识。 可以将此用户分配的托管标识用于 Azure 文件存储身份验证,该身份验证允许访问和复制 Azure 文件存储中的数据或将数据复制到其中。 若要详细了解 Azure 资源托管标识,请参阅 Azure 资源托管标识。
若要使用用户分配的托管标识身份验证,请执行以下步骤:
创建一个或多个用户分配的托管标识,并在 Azure 文件存储中授予权限。 有关角色的详细信息,请查看此文章。
- 作为源,在“访问控制(IAM)”中,至少授予“存储文件数据特权读取者”角色。
- 作为接收器,在“访问控制(IAM)”中,至少授予“存储文件数据特权参与者”角色。
为数据工厂分配一个或多个用户分配的托管标识,并为每个用户分配的托管标识创建凭据。
Azure 文件存储链接服务支持以下属性:
properties | 描述 | 必需 |
---|---|---|
type | type 属性必须设置为 AzureFileStorage。 | 是 |
serviceEndpoint | 使用模式 https://<accountName>.file.core.chinacloudapi.cn/ 指定 Azure 文件存储服务终结点。 |
是 |
凭据 | 将用户分配的托管标识指定为凭据对象。 | 是 |
fileShare | 指定文件共享。 | 是 |
快照 | 如果要从快照复制,请指定文件共享快照的日期。 | 否 |
connectVia | 用于连接到数据存储的集成运行时。 如果数据存储位于专用网络,则可以使用 Azure Integration Runtime 或自承载集成运行时。 如果未指定,则使用默认 Azure Integration Runtime。 | 否 |
示例:
{
"name": "AzureFileStorageLinkedService",
"properties": {
"type": "AzureFileStorage",
"typeProperties": {
"serviceEndpoint": "https://<accountName>.file.core.chinacloudapi.cn/",
"credential": {
"referenceName": "credential1",
"type": "CredentialReference"
},
"fileShare": "<file share name>",
"snapshot": "<snapshot version>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Property | 描述 | 必需 |
---|---|---|
type | type 属性必须设置为:AzureFileStorage。 | 是 |
host | 将 Azure 文件存储终结点指定为: -使用 UI:指定 \\<storage name>.file.core.chinacloudapi.cn\<file service name> -使用 JSON: "host": "\\\\<storage name>.file.core.chinacloudapi.cn\\<file service name>" 。 |
是 |
userid | 将要访问 Azure 文件存储的用户指定为: -使用 UI:指定 AZURE\<storage name> -使用 JSON: "userid": "AZURE\\<storage name>" 。 |
是 |
password | 指定存储访问密钥。 将此字段标记为 SecureString 以安全地将其存储在数据工厂中或引用存储在 Azure Key Vault 中的机密。 | 是 |
connectVia | 用于连接到数据存储的集成运行时。 如果数据存储位于专用网络,则可以使用 Azure Integration Runtime 或自承载集成运行时。 如果未指定,则使用默认 Azure Integration Runtime。 | 对于源为“No”,对于接收器为“Yes” |
示例:
{
"name": "AzureFileStorageLinkedService",
"properties": {
"type": "AzureFileStorage",
"typeProperties": {
"host": "\\\\<storage name>.file.core.chinacloudapi.cn\\<file service name>",
"userid": "AZURE\\<storage name>",
"password": {
"type": "SecureString",
"value": "<storage access key>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
有关可用于定义数据集的各部分和属性的完整列表,请参阅数据集一文。
Azure 数据工厂支持以下文件格式。 请参阅每一篇介绍基于格式的设置的文章。
在基于格式的数据集中的 location
设置下,Azure 文件存储支持以下属性:
属性 | 描述 | 必需 |
---|---|---|
type | 数据集中 location 下的 type 属性必须设置为 AzureFileStorageLocation。 |
是 |
folderPath | 文件夹的路径。 如果要使用通配符筛选文件夹,请跳过此设置并在活动源设置中指定。 | 否 |
fileName | 给定 folderPath 下的文件名。 如果要使用通配符筛选文件,请跳过此设置并在活动源设置中指定。 | 否 |
示例:
{
"name": "DelimitedTextDataset",
"properties": {
"type": "DelimitedText",
"linkedServiceName": {
"referenceName": "<Azure File Storage linked service name>",
"type": "LinkedServiceReference"
},
"schema": [ < physical schema, optional, auto retrieved during authoring > ],
"typeProperties": {
"location": {
"type": "AzureFileStorageLocation",
"folderPath": "root/folder/subfolder"
},
"columnDelimiter": ",",
"quoteChar": "\"",
"firstRowAsHeader": true,
"compressionCodec": "gzip"
}
}
}
有关可用于定义活动的各部分和属性的完整列表,请参阅管道一文。 本部分提供 Azure 文件存储源和接收器支持的属性列表。
Azure 数据工厂支持以下文件格式。 请参阅每一篇介绍基于格式的设置的文章。
在基于格式的复制源中的 storeSettings
设置下,Azure 文件存储支持以下属性:
属性 | 描述 | 必需 |
---|---|---|
type | storeSettings 下的 type 属性必须设置为 AzureFileStorageReadSettings。 |
是 |
找到要复制的文件: | ||
选项 1:静态路径 |
从数据集中指定的给定文件夹/文件路径复制。 若要复制文件夹中的所有文件,请另外将 wildcardFileName 指定为 * 。 |
|
选项 2:文件前缀 - prefix |
数据集中配置的给定文件共享下的文件名的前缀,用于筛选源文件。 选择了名称以 fileshare_in_linked_service/this_prefix 开头的文件。 它利用 Azure 文件存储的服务端筛选器,与通配符筛选器相比,该筛选器可提供更好的性能。 使用旧链接服务模型时不支持此功能。 |
否 |
选项 3:通配符 - wildcardFolderPath |
带有通配符的文件夹路径,用于筛选源文件夹。 允许的通配符为: * (匹配零个或更多个字符)和 ? (匹配零个或单个字符);如果实际文件夹名称中包含通配符或此转义字符,请使用 ^ 进行转义。 请参阅文件夹和文件筛选器示例中的更多示例。 |
否 |
选项 3:通配符 - wildcardFileName |
给定 folderPath/wildcardFolderPath 下带有通配符的文件名,用于筛选源文件。 允许的通配符为: * (匹配零个或更多个字符)和 ? (匹配零个或单个字符);如果实际文件名中包含通配符或此转义字符,请使用 ^ 进行转义。 请参阅文件夹和文件筛选器示例中的更多示例。 |
是 |
选项 4:文件列表 - fileListPath |
指明复制给定文件集。 指向包含要复制的文件列表的文本文件,每行一个文件(即数据集中所配置路径的相对路径)。 使用此选项时,请不要在数据集中指定文件名。 请参阅文件列表示例中的更多示例。 |
否 |
其他设置: | ||
recursive | 指示是要从子文件夹中以递归方式读取数据,还是只从指定的文件夹中读取数据。 当 recursive 设置为 true 且接收器是基于文件的存储时,将不会在接收器上复制或创建空的文件夹或子文件夹。 允许的值为 true(默认值)和 false。 如果配置 fileListPath ,则此属性不适用。 |
否 |
deleteFilesAfterCompletion | 指示是否会在二进制文件成功移到目标存储后将其从源存储中删除。 文件删除按文件进行。因此,当复制活动失败时,你会看到一些文件已经复制到目标并从源中删除,而另一些文件仍保留在源存储中。 此属性仅在二进制文件复制方案中有效。 默认值:false。 |
否 |
modifiedDatetimeStart | 基于属性“上次修改时间”的文件筛选器。 如果文件的上次修改时间大于或等于 modifiedDatetimeStart 并且小于 modifiedDatetimeEnd ,将选择这些文件。 该时间应用于 UTC 时区,格式为“2018-12-01T05:00:00Z”。 属性可以为 NULL,这意味着不向数据集应用任何文件属性筛选器。 如果 modifiedDatetimeStart 具有日期/时间值,但 modifiedDatetimeEnd 为 NULL,则意味着将选中“上次修改时间”属性大于或等于该日期/时间值的文件。 如果 modifiedDatetimeEnd 具有日期/时间值,但 modifiedDatetimeStart 为 NULL,则意味着将选中“上次修改时间”属性小于该日期/时间值的文件。如果配置 fileListPath ,则此属性不适用。 |
否 |
modifiedDatetimeEnd | 同上。 | 否 |
enablePartitionDiscovery | 对于已分区的文件,请指定是否从文件路径分析分区,并将它们添加为附加的源列。 允许的值为 false(默认)和 true 。 |
否 |
partitionRootPath | 启用分区发现时,请指定绝对根路径,以便将已分区文件夹读取为数据列。 如果未指定,默认情况下, - 在数据集或源的文件列表中使用文件路径时,分区根路径是在数据集中配置的路径。 - 使用通配符文件夹筛选器时,分区根路径是第一个通配符前的子路径。 例如,假设你将数据集中的路径配置为“root/folder/year=2020/month=08/day=27”: - 如果将分区根路径指定为“root/folder/year=2020”,则除了文件内的列外,复制活动还将生成另外两个列 month 和 day ,其值分别为“08”和“27”。- 如果未指定分区根路径,则不会生成额外的列。 |
否 |
maxConcurrentConnections | 活动运行期间与数据存储建立的并发连接的上限。 仅在要限制并发连接时指定一个值。 | 否 |
示例:
"activities":[
{
"name": "CopyFromAzureFileStorage",
"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": "AzureFileStorageReadSettings",
"recursive": true,
"wildcardFolderPath": "myfolder*A",
"wildcardFileName": "*.csv"
}
},
"sink": {
"type": "<sink type>"
}
}
}
]
Azure 数据工厂支持以下文件格式。 请参阅每一篇介绍基于格式的设置的文章。
在基于格式的复制接收器中的 storeSettings
设置下,Azure 文件存储支持以下属性:
属性 | 描述 | 必需 |
---|---|---|
type | storeSettings 下的 type 属性必须设置为 AzureFileStorageWriteSettings。 |
是 |
copyBehavior | 定义以基于文件的数据存储中的文件为源时的复制行为。 允许值包括: - PreserveHierarchy(默认):将文件层次结构保留到目标文件夹中。 从源文件到源文件夹的相对路径与从目标文件到目标文件夹的相对路径相同。 - FlattenHierarchy:源文件夹中的所有文件都位于目标文件夹的第一级中。 目标文件具有自动生成的名称。 - MergeFiles:将源文件夹中的所有文件合并到一个文件中。 如果指定了文件名,则合并文件的名称为指定名称。 否则,它是自动生成的文件名。 |
否 |
maxConcurrentConnections | 活动运行期间与数据存储建立的并发连接的上限。 仅在要限制并发连接时指定一个值。 | 否 |
示例:
"activities":[
{
"name": "CopyToAzureFileStorage",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<Parquet output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "ParquetSink",
"storeSettings":{
"type": "AzureFileStorageWriteSettings",
"copyBehavior": "PreserveHierarchy"
}
}
}
}
]
备注
使用系统分配的托管标识或用户分配的托管标识作为身份验证类型时,最多可以将 4 MB 的数据复制到接收器。
本部分介绍使用通配符筛选器生成文件夹路径和文件名的行为。
folderPath | fileName | recursive | 源文件夹结构和筛选器结果(用粗体表示的文件已检索) |
---|---|---|---|
Folder* |
(为空,使用默认值) | false | FolderA File1.csv File2.json Subfolder1 File3.csv File4.json File5.csv AnotherFolderB File6.csv |
Folder* |
(为空,使用默认值) | 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 |
是 | FolderA File1.csv File2.json Subfolder1 File3.csv File4.json File5.csv AnotherFolderB File6.csv |
本部分介绍了在复制活动源中使用文件列表路径时的结果行为。
假设有以下源文件夹结构,并且要复制加粗显示的文件:
示例源结构 | FileListToCopy.txt 中的内容 | 配置 |
---|---|---|
root FolderA File1.csv File2.json Subfolder1 File3.csv File4.json File5.csv 元数据 FileListToCopy.txt |
File1.csv Subfolder1/File3.csv Subfolder1/File5.csv |
在数据集中: - 文件夹路径: root/FolderA 在复制活动源中: - 文件列表路径: root/Metadata/FileListToCopy.txt 文件列表路径指向同一数据存储中的文本文件,其中包含要复制的文件列表,每行一个文件,以及在数据集中配置的路径的相对路径。 |
本节介绍了将 recursive 和 copyBehavior 值进行不同组合所产生的复制操作行为。
recursive | copyBehavior | 源文件夹结构 | 生成目标 |
---|---|---|---|
true | preserveHierarchy | Folder1 文件 1 文件 2 Subfolder1 File3 File4 File5 |
使用与源相同的结构创建目标文件夹 Folder1: Folder1 文件 1 文件 2 Subfolder1 File3 File4 File5。 |
是 | flattenHierarchy | Folder1 文件 1 文件 2 Subfolder1 File3 File4 File5 |
使用以下结构创建目标 Folder1: Folder1 File1 的自动生成的名称 File2 的自动生成的名称 File3 的自动生成的名称 File4 的自动生成的名称 File5 的自动生成的名称 |
是 | mergeFiles | Folder1 文件 1 文件 2 Subfolder1 File3 File4 File5 |
使用以下结构创建目标 Folder1: Folder1 File1 + File2 + File3 + File4 + File 5 的内容将合并到一个文件中,且自动生成文件名 |
false | preserveHierarchy | Folder1 文件 1 文件 2 Subfolder1 File3 File4 File5 |
使用以下结构创建目标文件夹 Folder1 Folder1 文件 1 文件 2 不会选取包含 File3、File4 和 File5 的 Subfolder1。 |
false | flattenHierarchy | Folder1 文件 1 文件 2 Subfolder1 File3 File4 File5 |
使用以下结构创建目标文件夹 Folder1 Folder1 File1 的自动生成的名称 File2 的自动生成的名称 不会选取包含 File3、File4 和 File5 的 Subfolder1。 |
false | mergeFiles | Folder1 文件 1 文件 2 Subfolder1 File3 File4 File5 |
使用以下结构创建目标文件夹 Folder1 Folder1 File1 + File2 的内容将合并到一个文件中,且自动生成文件名。 File1 的自动生成的名称 不会选取包含 File3、File4 和 File5 的 Subfolder1。 |
若要了解有关属性的详细信息,请查看 Lookup 活动。
若要了解有关属性的详细信息,请查看 GetMetadata 活动
若要详细了解这些属性,请查看 Delete 活动
备注
仍按原样支持以下模型,以实现向后兼容性。 建议使用上面几个部分中提到的新模型,并且创作 UI 已切换为生成新模型。
属性 | 描述 | 必需 |
---|---|---|
type | 数据集的 type 属性必须设置为:FileShare | 是 |
folderPath | 文件夹路径。 支持通配符筛选器,允许的通配符为: * (匹配零个或更多个字符)和 ? (匹配零个或单个字符);如果实际文件夹名中包含通配符或此转义字符,请使用 ^ 进行转义。 示例:“rootfolder/subfolder/”,请参阅文件夹和文件筛选器示例中的更多示例。 |
是 |
fileName | 指定“folderPath”下的文件的“名称或通配符筛选器”。 如果没有为此属性指定任何值,则数据集会指向文件夹中的所有文件。 对于筛选器,允许的通配符为: * (匹配零个或更多字符)和 ? (匹配零个或单个字符)。- 示例 1: "fileName": "*.csv" - 示例 2: "fileName": "???20180427.txt" 如果实际文件名内具有通配符或此转义符,请使用 ^ 进行转义。如果没有为输出数据集指定 fileName,并且没有在活动接收器中指定 preserveHierarchy,则复制活动会自动生成采用以下模式的文件名称:“Data.[活动运行 ID GUID].[GUID (如果为 FlattenHierarchy)].[格式(如果已配置)].[压缩(如果已配置)]”,例如“Data.0a405f8a-93ff-4c6f-b3be-f69616f1df7a.txt.gz”;如果使用表名(而不是查询)从表格源进行复制,则名称模式为“[表名].[格式].[压缩(如果已配置)]”,例如“MyTable.csv”。 |
否 |
modifiedDatetimeStart | 基于属性“上次修改时间”的文件筛选器。 如果文件的上次修改时间大于或等于 modifiedDatetimeStart 并且小于 modifiedDatetimeEnd ,将选择这些文件。 该时间应用于 UTC 时区,格式为“2018-12-01T05:00:00Z”。 请注意,若要从大量文件中筛选文件,启用此设置会影响数据移动的总体性能。 属性可以为 NULL,这意味着不向数据集应用任何文件属性筛选器。 如果 modifiedDatetimeStart 具有日期/时间值,但 modifiedDatetimeEnd 为 NULL,则意味着将选中“上次修改时间”属性大于或等于该日期/时间值的文件。 如果 modifiedDatetimeEnd 具有日期/时间值,但 modifiedDatetimeStart 为 NULL,则意味着将选中“上次修改时间”属性小于该日期/时间值的文件。 |
否 |
modifiedDatetimeEnd | 基于属性“上次修改时间”的文件筛选器。 如果文件的上次修改时间大于或等于 modifiedDatetimeStart 并且小于 modifiedDatetimeEnd ,将选择这些文件。 该时间应用于 UTC 时区,格式为“2018-12-01T05:00:00Z”。 请注意,若要从大量文件中筛选文件,启用此设置会影响数据移动的总体性能。 属性可以为 NULL,这意味着不向数据集应用任何文件属性筛选器。 如果 modifiedDatetimeStart 具有日期/时间值,但 modifiedDatetimeEnd 为 NULL,则意味着将选中“上次修改时间”属性大于或等于该日期/时间值的文件。 如果 modifiedDatetimeEnd 具有日期/时间值,但 modifiedDatetimeStart 为 NULL,则意味着将选中“上次修改时间”属性小于该日期/时间值的文件。 |
否 |
format | 如果想要在基于文件的存储之间按原样复制文件(二进制副本),可以在输入和输出数据集定义中跳过格式节。 若要分析或生成具有特定格式的文件,以下是受支持的文件格式类型:TextFormat、JsonFormat、AvroFormat、OrcFormat、ParquetFormat 。 请将格式中的“type”属性设置为上述值之一。 有关详细信息,请参阅文本格式、Json 格式、Avro 格式、Orc 格式和 Parquet 格式部分。 |
否(仅适用于二进制复制方案) |
compression | 指定数据的压缩类型和级别。 有关详细信息,请参阅受支持的文件格式和压缩编解码器。 支持的类型包括:GZip、Deflate、BZip2 和 ZipDeflate。 支持的级别为:“最佳”和“最快” 。 |
否 |
提示
如需复制文件夹下的所有文件,请仅指定 folderPath。
如需复制具有给定名称的单个文件,请使用文件夹部分指定 folderPath 并使用文件名指定 fileName。
如需复制文件夹下的文件子集,请指定文件夹部分的 folderPath 和通配符筛选器部分的 fileName。
备注
如果文件筛选器使用“fileFilter”属性,则在建议你今后使用添加到“fileName”的新筛选器功能时,仍按原样支持该属性。
示例:
{
"name": "AzureFileStorageDataset",
"properties": {
"type": "FileShare",
"linkedServiceName":{
"referenceName": "<Azure File Storage 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"
}
}
}
}
属性 | 描述 | 必需 |
---|---|---|
type | 复制活动 source 的 type 属性必须设置为:FileSystemSource | 是 |
recursive | 指示是要从子文件夹中以递归方式读取数据,还是只从指定的文件夹中读取数据。 当 recursive 设置为 true 且接收器是基于文件的存储时,将不会在接收器上复制/创建空的文件夹/子文件夹。 允许的值为:true(默认)、false |
否 |
maxConcurrentConnections | 活动运行期间与数据存储建立的并发连接的上限。 仅在要限制并发连接时指定一个值。 | 否 |
示例:
"activities":[
{
"name": "CopyFromAzureFileStorage",
"type": "Copy",
"inputs": [
{
"referenceName": "<Azure File Storage input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "FileSystemSource",
"recursive": true
},
"sink": {
"type": "<sink type>"
}
}
}
]
属性 | 描述 | 必需 |
---|---|---|
type | 复制活动接收器的 type 属性必须设置为:FileSystemSink | 是 |
copyBehavior | 定义以基于文件的数据存储中的文件为源时的复制行为。 允许值包括: - PreserveHierarchy(默认值):保留目标文件夹中的文件层次结构。 从源文件到源文件夹的相对路径与从目标文件到目标文件夹的相对路径相同。 - FlattenHierarchy:源文件夹中的所有文件都位于目标文件夹的第一级。 目标文件具有自动生成的名称。 - MergeFiles:将源文件夹中的所有文件合并到一个文件中。 如果指定文件名,则合并的文件名将为指定的名称;否则,会自动生成文件名。 |
否 |
maxConcurrentConnections | 活动运行期间与数据存储建立的并发连接的上限。 仅在要限制并发连接时指定一个值。 | 否 |
示例:
"activities":[
{
"name": "CopyToAzureFileStorage",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<Azure File Storage output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "FileSystemSink",
"copyBehavior": "PreserveHierarchy"
}
}
}
]
有关复制活动支持作为源和接收器的数据存储的列表,请参阅支持的数据存储。