保存 Power Query 查询更新历史记录

在几乎每次 Power Query 培训中,当我们谈到如何更新创建的查询时,当人们看到更新时新数据如何替换旧数据时,一位听众问我:“是否有可能确保在更新时,旧数据是某个地方也被保存了,整个更新历史都是可见的?

这个想法并不新鲜,标准答案是“否”——Power Query 默认配置为用新数据替换旧数据(在绝大多数情况下都是必需的)。 但是,如果你真的想要,你可以绕过这个限制。 正如您稍后将看到的,该方法非常简单。

考虑以下示例。

假设我们有一个来自客户端的文件作为输入数据(我们称它为,比方说, 来源) 以一个名为“智能”的动态表的形式列出他想购买的产品 应用领域:

保存 Power Query 查询更新历史记录

在另一个文件中(我们以此类推 接收器) 我们创建一个简单的查询来导入一个包含来自 Source 的产品的表 数据 - 获取数据 - 从文件 - 从 Excel 工作簿 (数据 - 获取数据 - 从文件 - 从 Excel 工作簿) 并将结果表上传到工作表:

保存 Power Query 查询更新历史记录

如果将来客户决定更改其文件中的订单 来源,然后在更新我们的请求后(通过右键单击或通过 数据 – 全部刷新) 我们将在文件中看到新数据 接收器 — 所有标准。

现在让我们确保在更新时,旧数据不会被新数据替换,而是将新数据附加到旧数据上——并添加日期时间,以便可以看到这些特定更改何时发生制成。

步骤 1. 向原始查询添加日期时间

让我们打开一个请求 应用领域导入我们的数据 来源,并添加一列,其中包含更新的日期时间。 为此,您可以使用按钮 自定义列 标签 添加列 (添加列 - 自定义列), 然后进入函数 日期时间.LocalNow – 函数的模拟 TDATA (现在) Ø 微软 Excel:

保存 Power Query 查询更新历史记录

点击后 OK 你应该得到一个像这样漂亮的列(不要忘记使用列标题中的图标为其设置日期时间格式):

保存 Power Query 查询更新历史记录

如果需要,对于上传到此列的工作表的板,您可以使用秒设置日期时间格式以获得更高的准确性(您必须在标准格式中添加冒号和“ss”):

保存 Power Query 查询更新历史记录

第二步:查询旧数据

现在让我们创建另一个查询,它将充当缓冲区,在更新之前保存旧数据。 选择文件中结果表的任何单元格 接收器, 在选项卡上选择 时间 命令 从表/范围 (数据——来自表格/范围) or 有叶子 (来自工作表):

保存 Power Query 查询更新历史记录

我们对 Power Query 中加载的表不做任何事情,我们调用查询,例如, 旧数据 并按下 Home — 关闭并加载 — 关闭并加载到... — 仅创建连接 (Home — Close&Load — Close&Load to... — 仅创建连接).

步骤 3. 加入新旧数据

现在回到我们原来的查询 应用领域 并使用命令从上一个缓冲区请求的旧数据下方添加到它 主页 — 添加请求 (首页 - 追加查询):

保存 Power Query 查询更新历史记录

就这样!

它仍然通过返回 Excel 主页 — 关闭并下载 (首页 - 关闭&加载) 并尝试几次使用按钮更新我们的整个结构 全部更新 标签 时间 (数据——全部刷新). 每次更新时,新数据不会替换旧数据,而是将其推送到下方,保留整个更新历史记录:

保存 Power Query 查询更新历史记录

从任何外部来源(互联网站点、数据库、外部文件等)导入时,可以使用类似的技巧来保留历史记录的旧值(如果需要)。

  • 跨多个数据范围的数据透视表
  • 使用 Power Query 组合来自不同文件的表
  • 将书中所有工作表中的数据收集到一个表中

发表评论