使用 Azure 数据工厂 或 Synapse Analytics 向/从Azure 数据资源管理器复制数据

适用于: Azure 数据工厂 Azure Synapse Analytics

本文介绍如何使用 Azure 数据工厂 和 Synapse Analytics 管道中的复制活动将数据复制到 Azure 数据资源管理器。 本文是在总体概述复制活动的复制活动概述一文的基础之上编写的。

提示

若要详细了解Azure 数据资源管理器与服务的集成,通常请阅读 Integrate Azure 数据资源管理器。

支持的功能

以下功能支持此Azure 数据资源管理器连接器:

支持的功能 IR
复制活动 (源/接收器) (1) (2)
映射数据流(源/汇) ①
查询活动 (1) (2)

(1) Azure集成运行时 (2) 自承载集成运行时

可以将数据从任何受支持的源数据存储复制到Azure 数据资源管理器。 还可以将数据从Azure 数据资源管理器复制到任何支持的接收器数据存储。 有关复制活动支持作为源或接收器的数据存储的列表,请参阅支持的数据存储表。

注意

在版本 3.14 及更高版本中,支持使用自托管集成运行时通过本地数据存储来复制数据到或从 Azure 数据资源管理器。

使用Azure 数据资源管理器连接器,可以执行以下操作:

  • 使用Microsoft Entra应用程序令牌身份验证和 服务主体复制数据。
  • 作为数据源,请使用 KQL (Kusto) 查询来检索数据。
  • 作为接收器时,将数据追加到指定的目标表。

入门

提示

有关 Azure 数据资源管理器 连接器的演练,请参阅 将数据复制到/从 Azure 数据资源管理器 和 批量从数据库复制到 Azure 数据资源管理器。

若要使用管道执行复制活动,可以使用以下工具或 SDK 之一:

使用用户界面创建到 Azure 数据资源管理器 的链接服务

使用以下步骤在 Azure 门户 UI 中创建到 Azure 数据资源管理器 的链接的服务。

  1. 浏览到 Azure 数据工厂或 Synapse 工作区中的“管理”选项卡,并选择“链接服务”,然后单击“新建”:

  2. 搜索“Explorer”并选择 Azure 数据探索器(Kusto)连接器。

    Azure 数据资源管理器(Kusto)连接器的屏幕截图。

  3. 配置服务详细信息、测试连接并创建新的链接服务。

    Azure 数据资源管理器 的链接服务配置的截图。

连接器配置详细信息

以下部分提供有关用于定义特定于Azure 数据资源管理器连接器的实体的属性的详细信息。

连接的服务属性

Azure 数据资源管理器连接器支持以下身份验证类型。 请参阅相应部分的了解详细信息:

服务主体身份验证

若要使用服务主体身份验证,请按照以下步骤获取服务主体并授予权限:

  1. 将应用程序注册到Microsoft 标识平台。 若要了解如何操作,请参阅 Quickstart:向 Microsoft 标识平台 注册应用程序。 记下以下值,这些值用于定义链接服务:

    • 应用程序 ID
    • 应用程序密钥
    • 租户 ID
  2. 在 Azure 数据资源管理器 中向服务主体授予正确的权限。 有关角色和权限的详细信息以及权限管理,请参阅 Manage Azure 数据资源管理器 数据库权限。 一般情况下,您必须:

    • 作为源:至少向数据库授予“数据库查看者”角色
    • 作为接收器:至少向数据库授予“数据库用户”角色

注意

使用 UI 进行创作时,登录用户帐户默认用于列出Azure 数据资源管理器群集、数据库和表。 您可以通过选择刷新按钮旁边的下拉列表来使用服务主体列出对象;如果您没有执行这些操作的权限,也可以手动输入名称。

Azure 数据资源管理器链接服务支持以下属性:

属性 描述 必需
类型 type 属性必须设置为 AzureDataExplorer。 是
终结点 Azure 数据资源管理器群集的终结点 URL,格式为 https://<clusterName>.<regionName>.kusto.chinacloudapi.cn。 是
数据库 数据库的名称。 是
租户 请指定您的应用程序所归属的租户信息(域名或租户 ID)。 这在 Kusto 连接字符串 中称为“授权 ID”。 通过将鼠标指针悬停在Azure门户右上角来检索它。 是
servicePrincipalId 指定应用程序的客户端 ID。 这是在Kusto 连接字符串中称为“Microsoft Entra 应用程序客户端 ID”。 是
servicePrincipalKey 指定应用程序的密钥。 这在 Kusto 连接字符串 中称为“Microsoft Entra 应用程序密钥”。 将此字段标记为 SecureString 以安全地存储它,或引用存储在 Azure 密钥保管库 中的数据。 是
connectVia 用于连接到数据存储的集成运行时。 如果数据存储位于专用网络中,则可以使用Azure集成运行时或自承载集成运行时。 如果未指定,则使用默认Azure集成运行时。 否

示例:使用服务主体密钥身份验证

{
    "name": "AzureDataExplorerLinkedService",
    "properties": {
        "type": "AzureDataExplorer",
        "typeProperties": {
            "endpoint": "https://<clusterName>.<regionName>.kusto.chinacloudapi.cn",
            "database": "<database name>",
            "tenant": "<tenant name/id e.g. microsoft.partner.onmschina.cn>",
            "servicePrincipalId": "<service principal id>",
            "servicePrincipalKey": {
                "type": "SecureString",
                "value": "<service principal key>"
            }
        }
    }
}

系统分配的托管身份验证

若要了解有关Azure资源的托管标识的详细信息,请参阅 Azure 资源的托管标识。

若要使用系统分配的托管标识身份验证,请按照以下步骤授予权限:

  1. 检索托管标识信息,方法是复制与您的工厂或 Synapse 工作区一起生成的 托管标识对象 ID 值。

  2. 在 Azure 数据资源管理器 中向托管标识授予正确的权限。 有关角色和权限的详细信息以及权限管理,请参阅 Manage Azure 数据资源管理器 数据库权限。 一般情况下,您必须:

    • 作为源:授予对数据库的“数据库查看者”角色。
    • 作为接收器,向您的数据库授予“数据库引入者”和“数据库查看者”角色。

注意

使用 UI 进行创作时,将使用您的登录用户帐户来列出 Azure 数据资源管理器 群集、数据库和表。 如果你没有权限执行这些操作,请手动输入名称。

Azure 数据资源管理器链接服务支持以下属性:

属性 描述 必需
类型 type 属性必须设置为 AzureDataExplorer。 是
终结点 Azure 数据资源管理器群集的终结点 URL,格式为 https://<clusterName>.<regionName>.kusto.chinacloudapi.cn。 是
数据库 数据库的名称。 是
connectVia 用于连接到数据存储的集成运行时。 如果数据存储位于专用网络中,则可以使用Azure集成运行时或自承载集成运行时。 如果未指定,则使用默认Azure集成运行时。 否

示例:使用系统分配的托管标识进行身份验证

{
    "name": "AzureDataExplorerLinkedService",
    "properties": {
        "type": "AzureDataExplorer",
        "typeProperties": {
            "endpoint": "https://<clusterName>.<regionName>.kusto.chinacloudapi.cn",
            "database": "<database name>",
        }
    }
}

用户分配的托管标识身份验证

若要了解有关Azure资源的托管标识的详细信息,请参阅 Azure 资源的托管标识

若要使用用户分配的托管标识身份验证,请执行以下步骤:

  1. 创建一个或多个用户分配的托管标识并在Azure 数据资源管理器中授予权限。 有关角色和权限的详细信息以及权限管理,请参阅 Manage Azure 数据资源管理器 数据库权限。 一般情况下,您必须:

    • 作为源:至少向数据库授予“数据库查看者”角色
    • 作为接收器:至少向数据库授予“数据库引入者”角色
  2. 为数据工厂或 Synapse 工作区分配一个或多个用户分配的托管标识,并为每个用户分配的托管标识创建凭据。

Azure 数据资源管理器链接服务支持以下属性:

属性 描述 必需
类型 type 属性必须设置为 AzureDataExplorer。 是
终结点 Azure 数据资源管理器群集的终结点 URL,格式为 https://<clusterName>.<regionName>.kusto.chinacloudapi.cn。 是
数据库 数据库的名称。 是
凭据 将用户分配的托管标识指定为凭据对象。 是
connectVia 用于连接到数据存储的集成运行时。 如果数据存储位于专用网络中,则可以使用Azure集成运行时或自承载集成运行时。 如果未指定,则使用默认Azure集成运行时。 否

示例:使用用户分配的托管标识身份验证

{
    "name": "AzureDataExplorerLinkedService",
    "properties": {
        "type": "AzureDataExplorer",
        "typeProperties": {
            "endpoint": "https://<clusterName>.<regionName>.kusto.chinacloudapi.cn",
            "database": "<database name>",
            "credential": {
                "referenceName": "credential1",
                "type": "CredentialReference"
            }
        }
    }
}

数据集属性

有关可用于定义数据集的各个部分和属性的完整列表,请参阅数据集。 本部分列出了Azure 数据资源管理器数据集支持的属性。

若要将数据复制到 Azure 数据资源管理器,请将数据集的 type 属性设置为 AzureDataExplorerTable。

支持以下属性:

属性 描述 必需
类型 type 属性必须设置为 AzureDataExplorerTable。 是
表 链接服务引用的表的名称。 对于接收器为必需的,对于源不是必需的

数据集属性示例:

{
   "name": "AzureDataExplorerDataset",
    "properties": {
        "type": "AzureDataExplorerTable",
        "typeProperties": {
            "table": "<table name>"
        },
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<Azure Data Explorer linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

复制活动 属性

有关可用于定义活动的各个部分和属性的完整列表,请参阅管道和活动。 本部分提供Azure 数据资源管理器源和接收器支持的属性列表。

Azure 数据资源管理器 作为源

若要从 Azure 数据资源管理器 复制数据,请将复制活动源中的 type 属性设置为 AzureDataExplorerSource。 复制活动source部分支持以下属性:

属性 描述 必需
类型 复制活动源的 type 属性必须设置为:AzureDataExplorerSource 是
查询 以 KQL 格式指定的只读请求。 使用自定义 KQL 查询作为参考。 是
queryTimeout 查询请求超时前的等待时间。默认值是 10 分钟 (00:10:00);允许的最大值是 1 小时 (01:00:00)。 否
无截断 指示是否截断返回的结果集。 默认情况下,结果在出现 500,000 条记录或达到 64 MB 之后将被截断。 强烈建议将其截断,以确保活动的正确行为。 否

注意

默认情况下,Azure 数据资源管理器源的大小限制为 500,000 条记录或 64 MB。 若要检索所有记录而不截断,可以在查询的开头指定 set notruncation;。 有关详细信息,请参阅查询限制。

示例:

"activities":[
    {
        "name": "CopyFromAzureDataExplorer",
        "type": "Copy",
        "typeProperties": {
            "source": {
                "type": "AzureDataExplorerSource",
                "query": "TestTable1 | take 10",
                "queryTimeout": "00:10:00"
            },
            "sink": {
                "type": "<sink type>"
            }
        },
        "inputs": [
            {
                "referenceName": "<Azure Data Explorer input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ]
    }
]

Azure 数据资源管理器 作为“接收器”

若要将数据复制到 Azure 数据资源管理器,请将复制活动接收器中的 type 属性设置为 AzureDataExplorerSink。 在复制活动的汇部分中支持以下属性:

属性 描述 必需
类型 复制活动接收器的 type 属性必须设置为:AzureDataExplorerSink。 是
摄取映射名称 基于 Kusto 表预先创建的映射的名称。 若要将列从源映射到 Azure 数据资源管理器(这适用于所有支持的源存储和格式,包括 CSV/JSON/Avro 格式),可以使用复制活动的列映射(按名称隐式或配置显式)和/或 Azure 数据资源管理器 映射。 否
附加属性 一种属性包,可用于指定任何尚未由 Azure 数据资源管理器 接收点设置的引入属性。 具体来说,它可用于指定引入标记。 有关详细信息,请参阅 Azure Data Explore 数据引入文档。 否

示例:

"activities":[
    {
        "name": "CopyToAzureDataExplorer",
        "type": "Copy",
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "AzureDataExplorerSink",
                "ingestionMappingName": "<optional Azure Data Explorer mapping name>",
                "additionalProperties": {<additional settings for data ingestion>}
            }
        },
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<Azure Data Explorer output dataset name>",
                "type": "DatasetReference"
            }
        ]
    }
]

映射数据流属性

在映射数据流中转换数据时,可以在Azure 数据资源管理器中读取和写入表。 有关详细信息,请参阅映射数据流中的源转换和汇聚转换。 可以选择使用Azure 数据资源管理器数据集或内联数据集作为源和接收器类型。

源转换

下表列出了Azure 数据资源管理器源支持的属性。 你可以在“源选项”选项卡中编辑这些属性。

名称 描述 必需 允许的值 数据流脚本属性
表 如果选择“表”作为输入,数据流将在使用内联数据集时从Azure 数据资源管理器数据集中指定的表或源选项中提取所有数据。 否 字符串 (仅适用于内联数据集)
tableName
查询 以 KQL 格式指定的只读请求。 使用自定义 KQL 查询作为参考。 否 字符串 查询
超时 查询请求超时前的等待时间。默认值为“172000”(2 天) 否 整数 timeout

Azure 数据资源管理器源脚本示例

将Azure 数据资源管理器数据集用作源类型时,关联的数据流脚本为:

source(allowSchemaDrift: true,
	validateSchema: false,
	query: 'table | take 10',
	format: 'query') ~> AzureDataExplorerSource

如果使用内联数据集,则关联的数据流脚本为:

source(allowSchemaDrift: true,
    validateSchema: false,
    format: 'query',
    query: 'table | take 10',
    store: 'azuredataexplorer') ~> AzureDataExplorerSource

接收器转换

下表列出了Azure 数据资源管理器接收器支持的属性。 可以在“设置”选项卡中编辑这些属性。使用内联数据集时,你会看到其他设置,这些设置与数据集属性部分描述的属性相同。

名称 描述 必需 允许的值 数据流脚本属性
表操作 确定在写入之前是否从目标表重新创建或删除所有行。
- 无:不会对表进行任何操作。
- 重新创建:将删除表并重新创建表。 创建新表时,如果是动态创建,这是必需的。
- 截断:将删除目标表中的所有行。
否 true 或 false 重新创建
截断
预处理和后处理 SQL 脚本 指定多个 Kusto 控制命令脚本,在将数据写入汇聚数据库之前(预处理)和之后(后处理)执行。 否 字符串 preSQLs;postSQLs
超时 查询请求超时前的等待时间。默认值为“172000”(2 天) 否 整数 timeout

Azure 数据资源管理器接收器脚本示例

将Azure 数据资源管理器数据集用作接收器类型时,关联的数据流脚本为:

IncomingStream sink(allowSchemaDrift: true,
	validateSchema: false,
	format: 'table',
	preSQLs:['pre SQL scripts'],
	postSQLs:['post SQL script'],
	skipDuplicateMapInputs: true,
	skipDuplicateMapOutputs: true) ~> AzureDataExplorerSink

如果使用内联数据集,则关联的数据流脚本为:

IncomingStream sink(allowSchemaDrift: true,
    validateSchema: false,
    format: 'table',
    store: 'azuredataexplorer',
    skipDuplicateMapInputs: true,
    skipDuplicateMapOutputs: true) ~> AzureDataExplorerSink

查找活动属性

有关属性的详细信息,请参阅查找活动。