다음을 통해 공유

使用 Azure 数据工厂或 Azure Synapse Analytics 从 QuickBooks Online 复制数据

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

本文概述了如何使用 Azure 数据工厂或 Azure Synapse Analytics 管道中的复制活动从 QuickBooks Online 复制数据。 它基于 有关复制活动的概述文章

本文还介绍如何将 QuickBooks 连接器从版本 1.0 升级到 2.0。 版本 2.0 提供了改进的本机 QuickBooks 支持。

支持的功能

以下功能由 QuickBooks 连接器支持:

支持的功能 IR
复制活动(源/-) (1) (2)
查找活动 (1) (2)

① Azure 集成运行时 ② 自承载集成运行时

有关作为源或接收器支持的数据存储的列表,请参阅 支持的数据存储

连接器支持 QuickBooks OAuth 2.0 身份验证。

入门指南

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

使用 UI 创建到 QuickBooks 的链接服务

  1. Azure 门户中,转到 Azure 数据工厂或 Azure Synapse 工作区。

  2. 转到“ 管理 ”选项卡,选择 “链接服务”,然后选择“ 新建”。

  3. 搜索 QuickBooks,然后选择 QuickBooks 连接器。

    QuickBooks 连接器搜索结果的屏幕截图。

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

    QuickBooks 链接服务配置的窗格的屏幕截图。

连接器配置详细信息

利用属性来定义 QuickBooks 连接器中数据工厂的实体。

链接服务属性

QuickBooks 连接器现在支持版本 2.0。 若要将 QuickBooks 连接器从版本 1.0 升级到版本 2.0,请参阅 本文后面的过程。 以下部分介绍这两个版本的属性详细信息。

版本 2.0

QuickBooks 链接服务支持连接器版本 2.0 的以下属性:

Property Description Required
type 链接服务的类型。 它必须设置为 QuickBooks Yes
version 指定的版本。 该值为 2.0 Yes
endpoint QuickBooks Online 服务器的终结点。 该值为 quickbooks.api.intuit.com Yes
companyId QuickBooks 公司授权的公司 ID。 有关如何查找公司 ID 的信息,请参阅 QuickBooks Online 帮助主题 Yes
consumerKey 用于 OAuth 2.0 身份验证的 QuickBooks Online 应用程序的客户端 ID。 了解详细信息 Yes
consumerSecret 用于 OAuth 2.0 身份验证的 QuickBooks Online 应用程序的客户端密码。 将此字段 SecureString 标记为安全存储,或 引用存储在 Azure Key Vault 中的机密 Yes
refreshToken 与 QuickBooks 应用程序关联的 OAuth 2.0 刷新令牌。 了解详细信息。 将此字段 SecureString 标记为安全存储,或 引用存储在 Azure Key Vault 中的机密

刷新令牌会在 180 天后过期,因此客户需要定期更新它。
Yes

下面是一个示例:

{
    "name": "QuickBooksLinkedService",
    "properties": {
        "type": "QuickBooks",
        "version": "2.0",
        "typeProperties": {
            "endpoint": "quickbooks.api.intuit.com",
            "companyId": "<company id>",
            "consumerKey": "<consumer key>", 
            "consumerSecret": {
                 "type": "SecureString",
                 "value": "<clientSecret>"
            },
            "refreshToken": {
                "type": "SecureString",
                "value": "<refresh token>"
            }
        }
    }
}

版本 1.0

QuickBooks 链接服务支持连接器版本 1.0 的以下属性:

Property Description Required
type 链接服务的类型。 它必须设置为 QuickBooks Yes
connectionProperties 定义如何连接到 QuickBooks 的一组属性。 Yes
connectionProperties
endpoint QuickBooks Online 服务器的终结点。 该值为 quickbooks.api.intuit.com Yes
companyId QuickBooks 公司授权的公司 ID。 有关如何查找公司 ID 的信息,请参阅 QuickBooks Online 帮助主题 Yes
consumerKey 用于 OAuth 2.0 身份验证的 QuickBooks Online 应用程序的客户端 ID。 了解详细信息 Yes
consumerSecret 用于 OAuth 2.0 身份验证的 QuickBooks Online 应用程序的客户端密码。 将此字段 SecureString 标记为安全存储,或 引用存储在 Azure Key Vault 中的机密 Yes
refreshToken 与 QuickBooks 应用程序关联的 OAuth 2.0 刷新令牌。 了解详细信息。 将此字段 SecureString 标记为安全存储,或 引用存储在 Azure Key Vault 中的机密

刷新令牌会在 180 天后过期,因此客户需要定期更新它。
Yes
useEncryptedEndpoints 指定是否通过 HTTPS 加密数据源终结点。 默认值为 true No

下面是一个示例:

{
    "name": "QuickBooksLinkedService",
    "properties": {
        "type": "QuickBooks",
        "typeProperties": {
            "connectionProperties": {
                "endpoint": "quickbooks.api.intuit.com",
                "companyId": "<company id>",
                "consumerKey": "<consumer key>", 
                "consumerSecret": {
                     "type": "SecureString",
                     "value": "<clientSecret>"
              },
                "refreshToken": {
                     "type": "SecureString",
                     "value": "<refresh token>"
              },
                "useEncryptedEndpoints": true
            }
        }
    }
}

处理链接服务的刷新令牌

在链接服务中使用 QuickBooks Online 连接器时,必须正确管理 QuickBooks 中的 OAuth 2.0 刷新令牌。

链接服务使用刷新令牌来获取新的访问令牌。 但是,QuickBooks Online 会定期更新刷新令牌。 此操作使上一个令牌失效。

链接服务不会自动更新 Azure Key Vault 中的刷新令牌,因此需要管理更新刷新令牌以确保不间断的连接。 否则,刷新令牌过期后可能会遇到身份验证失败。

可以根据 QuickBooks Online 关于刷新令牌过期的策略,在 Azure Key Vault 中手动更新刷新令牌。 另一种方法是使用计划任务或 Azure 函数 自动执行更新,该函数检查新的刷新令牌并在 Azure Key Vault 中更新。

数据集属性

有关用于定义数据集的可用部分和属性的完整列表,请参阅 Azure 数据工厂和 Azure Synapse Analytics 中的数据集

若要从 QuickBooks Online 复制数据,请将 type 数据集的属性设置为 QuickBooksObject。 QuickBooks 数据集支持以下属性:

Property Description Required
type 数据集的类型。 它必须设置为 QuickBooksObject Yes
tableName 表的名称。 否(如果在活动源 query 中指定)

下面是一个示例:

{
    "name": "QuickBooksDataset",
    "properties": {
        "type": "QuickBooksObject",
        "typeProperties": {},
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<QuickBooks linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

复制活动属性

有关可用于定义活动的节和属性的完整列表,请参阅 Azure 数据工厂和 Azure Synapse Analytics 中的管道和活动。 本部分提供 QuickBooks 源支持的属性列表。

QuickBooks 作为源

若要从 QuickBooks Online 复制数据,请将复制活动中的源类型设置为 QuickBooksSource。 QuickBooks 数据集支持复制活动 source 部分中的以下属性:

Property Description Required
type 复制活动源的类型。 它必须设置为 QuickBooksSource Yes
query 使用自定义 SQL 查询读取数据。

对 QuickBooks 连接器 2.0 版本来说,您只能使用有限制的 QuickBooks 本机查询。 有关详细信息,请参阅 Intuit 开发人员网站上的 查询作和语法tableName查询中指定的值必须与数据集中的值匹配tableName

对于 QuickBooks 连接器版本 1.0,可以使用 SQL-92 查询。 例如:"SELECT * FROM "Bill" WHERE Id = '123'"
否(如果在数据集tableName中进行了指定)

下面是一个示例:

"activities":[
    {
        "name": "CopyFromQuickBooks",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<QuickBooks input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "QuickBooksSource",
                "query": "SELECT * FROM \"Bill\" WHERE Id = '123' "
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

有关用于定义活动的可用部分和属性的完整列表,请参阅 Azure 数据工厂和 Azure Synapse Analytics 中的管道和活动

从 QuickBooks Desktop 复制数据

服务中的复制活动无法直接从 QuickBooks Desktop 复制数据。 若要从 QuickBooks Desktop 复制数据,请将 QuickBooks 数据导出到逗号分隔值(CSV)文件,然后将该文件上传到 Azure Blob 存储。 从该存储中,可以使用服务将数据复制到所选的接收器。

对 QuickBooks 进行数据类型映射

从 QuickBooks 复制数据时,以下映射适用于从 QuickBooks 数据类型到服务使用的内部数据类型。 若要了解复制活动如何将源架构和数据类型映射到接收器,请参阅 复制活动中的架构和数据类型映射

QuickBooks 数据类型 临时服务数据类型(适用于版本 2.0) 临时服务数据类型(适用于版本 1.0)
String string string
Boolean bool bool
DateTime datetime datetime
Decimal decimal (15,2) decimal (15, 2)
Enum string string 
Date datetime datetime
BigDecimal  decimal (15,2) decimal (15, 2)
Integer int int

Lookup 活动属性

有关查找活动属性的详细信息,请参阅 Azure 数据工厂和 Azure Synapse Analytics 中的查找活动

Quickbooks 连接器生命周期和升级

下表汇总了有关 QuickBooks 连接器版本的信息:

Version 发布阶段 更改日志
1.0 宣布终止支持 不適用。
2.0 正式发布时间 支持 QuickBooks 本机查询,但存在限制。 GROUP BY子句、JOIN子句和聚合函数(AvgMaxSum)不支持。 有关详细信息,请参阅 Intuit 开发人员网站上的 查询作和语法

tableName查询中指定的值必须与数据集中的值匹配tableName

不支持 SQL-92 查询。

不支持该 useEncryptedEndpoints 属性。

将 Quickbooks 连接器从版本 1.0 升级到版本 2.0

  1. 在 Azure 门户中,转到 Azure 数据工厂或 Azure Synapse 工作区。

  2. 转到“ 管理 ”选项卡,选择 “链接服务”,然后选择“ 编辑 ”链接服务。

  3. “编辑链接服务 ”窗格中,为版本选择 2.0 。 有关详细信息,请参阅本文前面的 版本 2.0 的链接服务属性

  4. 如果在复制活动的源或查找活动中使用引用版本1.0的链接服务的SQL查询,则需要将其转换为QuickBooks原生查询。 从本文前面的 复制活动属性 以及 Intuit 开发人员网站上的 查询操作和语法 中了解有关本机查询的详细信息。