练习 - 生成使用 SQL 的流

已完成

本单元介绍如何创建以下流,即可监视新项或更改项的源,然后将这些更改复制到目标的流。 如果用户在某个位置输入数据,但团队需要使用不同位置或格式的数据,则可以创建此类型的流。

在本单元,您从源列表 Microsoft Lists 中将数据复制到目标表 Microsoft Azure SQL 数据库

请注意,您可以复制超过 275 个服务的数据,需由 Power Automate 支持。

重要提示

由于不支持双向同步,因此在目标中所做的更改不会复制回源。 如果尝试设置双向同步,则将创建无限循环,该循环在源和目标之间无限地发送更改。

先决条件

  • 对数据源和目标的访问。 本单元不包括创建源和目标的步骤。

  • Power Automate 的访问权限。

  • 基本了解数据的存储方式。

  • 熟悉创建流的基础知识。 对于本单元,假设您了解如何执行这些操作。

提示

源和目标中的列名称不需要匹配(除非列的数据类型是选项),但在插入或更新项时必须提供所有必需列的数据。 Power Automate 标识所需的字段。

简要步骤概述

如果熟悉 Power Automate,请使用这些简要步骤将数据从一个数据源复制到另一个数据源。

  1. 确定要监视的源,以及要将更改的数据复制到其中的目标。 请确保有权访问源和目标。

  2. 标识至少一个可唯一标识源和目标中的项的列。 以下示例使用标题列,但您可以使用任意列。

  3. 设置触发器,用于监视源中的更改。

  4. 搜索目标以检查是否存在更改的项。

  5. 使用如下条件:

    • 如果目标中不存在新的或更改的项,请进行创建。

    • 如果目标中存在新的或更改的项,请对其进行更新。

  6. 触发流,并确认正在将新的或更改的项从源复制到目标。

注意

如果以前尚未创建与 SharePoint 或 SQL 数据库的连接,请在系统提示登录时按照说明进行操作。

以下是创建流的详细步骤。

监视源的更改

首先,Copilot 可帮助我们构建流的结构。

  1. 启动 Power Automate 并使用您的组织帐户登录。

  2. 在主页的中间键入在 SharePoint 中创建或修改项时,添加获取行的 SQL 操作。添加条件,如果该项存在,则在 SQL 中更新该项,否则在 SQL 中创建一个新项。然后按生成

    Power Automate 主页屏幕截图,以及输入 Copilot 的说明。

  3. Copilot 致力于根据说明构建包含操作的流,并提供机会检查生成的操作。 在这个示例中,您可以看到:

    1. 我们输入提示的说明框。 您可以在此处继续优化流中的操作。

    2. Copilot 添加了项目创建或修改的时间触发器 (SharePoint)。

    3. Copilot 添加了获取行 (SQL) 操作、条件,在条件的 True 分支中的更新行 (SQL) 操作和在条件的 False 分支中的插入行 (SQL) 操作。

    4. 单击下一步按钮可进入流设计器。

    检查生成的自动化 Copilot 的屏幕截图。

  4. 对流感到满意后,选择下一步配置操作。

  5. 如果您之前未创建与 SQL 数据库或 SharePoint 的连接,Copilot 会指示您创建连接。 如果已创建,您会在每个连接旁看到一个绿色复选标记。

    显示此流已连接服务的 Copilot 屏幕截图。

  6. 建立连接后,选择创建流

  7. 选择项目创建或修改的时间触发器,以打开左侧的操作属性面板。

    触发器及其参数的屏幕截图。

  8. 输入站点地址,然后选择流监视的新项或更新项的 Microsoft Lists 中的列表的名称。

    “项目创建或修改的时间”的屏幕截图,站点地址设置为 SharePoint 团队地址,列表名设置为 Customers List。

搜索现有项的目标

接下来,我们要配置获取行 (SQL) 操作,来检查 SQL 数据库中是否已存在某个项。

  1. 选择获取行操作,打开左侧的操作属性面板。

  2. 为要监视的 SQL 表选择服务器名称数据库名称表名

    为 SQL 获取行操作设置服务器名称、数据库名称和表名称的屏幕截图。

  3. 选择高级参数,再选择筛选器查询

    为 SQL 获取行操作设置高级筛选器查询参数的屏幕截图。

  4. 筛选器查询框中,输入 CustomerID eq。 然后在动态内容列表中选择 CustomerID 令牌。

    为 SQL 客户 ID 设置高级筛选器查询参数的屏幕截图。

    注意

    此步骤假设 Microsoft Lists 和 SQL 表将匹配 CustomerID 列。

检查创建新项还更新现有项

接下来,我们要配置条件来检查某个项是否存在。 如果该项存在,则更新该项,否则创建一个新行。

  1. 选择条件,打开左侧的操作属性面板。 选择插入表达式

    “插入表达式”按钮的屏幕截图。

  2. 搜索长度并选择 length(collection)

    “表达式”选项卡上具有动态内容的条件的屏幕截图,其中突出显示了“length(collection)”。

  3. 在打开的表达式窗格内,选择动态内容选项卡。

  4. 获取行类别下,选择 body/value,然后选择添加

    突出显示 SQL 获取行正文值的条件的屏幕截图。

    提示

    请确保在获取行类别中已选中。 请勿在项目创建或修改的时间类别中选择

  5. 在中间的字段中,选择等于

  6. 在右侧字段中,输入 1(一)。

    条件卡现在应类似于本图所示。

    突出显示长度等于 0 的“条件”的屏幕截图。

    提示

    添加 length() 函数可让流检查列表。 Length 可返回列表中的项目数。 如果值列表中有 1 项,我们就知道该项存在于 SQL 中并且需要更新。

流从目标中获取项时,有两种可能的结果。

结果 下一步
存在该项。 更新该项。
不存在该项。 创建一个新项。

在目标中创建项

条件用于检查 SQL 目标中是否存在 Microsoft Lists 项,但我们需要告知 Power Automate 检查条件之后该怎么做。 如果 SQL 中不存在 Microsoft Lists 项,则创建一个新行,否则更新现有项。

  1. 选择条件 False 一侧的插入行 (SQL) 操作,打开左侧的操作属性面板。

  2. 为要插入新项的表设置服务器名称数据库名称表名(与您在上面输入的信息相同)。

    选择插入行 SQL 操作和关联属性的屏幕截图。

    注意

    插入行卡将展开并显示表中的所有字段。 标有星号 (*) 的字段是必填字段,必须填写才能使该行有效。

  3. 选择要填写的每个字段,然后输入数据。

    可以手动输入数据,在动态内容窗格中选择一个或多个令牌,或在字段中输入文本和令牌的任意组合。

注意

插入行更新行卡显示 SQL 数据库表中正在流中使用的列的名称。 因此,本过程中图像中显示的卡可能与看到的卡不同。

在目标中更新项

接下来,我们要配置更新 SQL 项的操作。

  1. 选择条件 True 一侧的更新行 (SQL) 操作,打开左侧的操作属性面板。

    选择更新行操作和设置属性的屏幕截图。

  2. 设置服务器名称数据库名称表名

  3. 对于行 ID 字段,我们必须从 SQL 数据库获取主键。 在这个例子中,它是获取行 (SQL) 操作输出的 CustomerID 字段。

    通常,如果我们使用获取行操作,然后想要在后续操作中访问输出的属性,Power Automate 会自动创建一个 For Each 循环来处理列表中的每个项。 然而,在这个特定案例中,我们知道 Power Automate 如果找到一个 CustomerID,则始终会返回一条记录,因为 CustomerID 是 SQL 表中的主键。 这就意味着我们可以使用以下表达式访问列表中第一项的 CustomerID 属性:

    outputs('Get_Rows')?['body/value'][0]?['customerid']

  4. 选择 Row Id 参数,然后键入 / 并选择“插入表达式”。 在表达式编辑栏中输入以上代码。

  5. 选择高级参数,并选择您要更新的字段。

  6. 保存并测试流!

    显示 SQL 中更新项的屏幕截图。

现在,只要列表中的项(源)发生更改,就会触发流。 要么插入新项,要么更新 SQL 数据库(目标)中的现有项。

注意

从源中删除项时,不会触发流。 如果本方案对您很重要,请考虑添加单独的列,指示何时不再需要项。