【问题标题】:Excel Power Query - Sorting/Filtering TableExcel Power Query - 排序/过滤表
【发布时间】:2019-01-16 01:31:56
【问题描述】:

我正在使用 Power Query 将数据从 SQL 数据库提取到 Excel 中作为一个简单的表格。

这样做的目的是在手动列(不是 SQL 数据库的一部分)中记录拉入表中的各种记录的 cmets,然后每周刷新表以获取每条记录的更新数据,但维护前几周的 cmets。

我能够成功编写查询并检索数据,但是每当我对数据进行排序然后刷新查询时,我手动添加的 cmets 就会错位。

我已经检查了查询的外部数据属性窗口上的“保留列排序/过滤/布局”选项,并且 过滤 似乎工作正常(如果我只过滤和添加手动 cmets,刷新数据集不会改变 cmets 的位置),但 排序 不起作用。

运行 SQL 查询时,记录按键列排序(其中每条记录的值是唯一的),但我在 Power Query 编辑器中找不到强制刷新的数据与该字段对齐的方法.

每个 Wedge 的响应示例:

步骤 1. 执行 SQL 查询

第 2 步。添加手动注释

第 3 步。与原始查询不同的排序方式(与 ORDER BY 不同)

步骤 4. 刷新原始 SQL 查询

正如您在示例中看到的,在我刷新 SQL 查询后,“Test”注释与不同的 PurchaseOrderLineID 对齐。

我试图创建一个“From Table”查询(来自我的 SQL 输出表)并将其与我的原始 SQL 查询合并,如下所示,但我仍然遇到同样的问题。

【问题讨论】:

    标签: sql excel sorting filtering powerquery


    【解决方案1】:

    如果您要导入的所有行都有唯一标识它们的方法(我认为是从 SQL 表中得出的),那么您可以使用它来保持您的 cmets 对齐。转到 Excel 中的输出表,使用 PQ 菜单上的“从表”,并将其设为仅连接查询。

    然后转到从 SQL 数据库中提取的原始查询,并针对您刚刚加载的表添加“合并查询”步骤(其中将包含您的评论列)。根据唯一标识行的任何内容合并它们,并仅扩展合并中的注释列。

    这样,每当您刷新表格时,它都会匹配并保留任何现有的 cmets,然后再更新 Excel 中的输出表格。

    【讨论】:

    • 感谢您的回答!我理解您的回复背后的逻辑,但我仍然遇到一些问题 - 如果我向原始输出表的第一行(来自 SQL 数据库查询)添加评论并刷新我的“来自表”查询,则会出现评论在辅助表中与正确的唯一标识符对齐。一旦我对原始输出表进行排序(即注释现在位于底部),然后刷新 SQL 数据库查询,注释就会跳回到表的顶部(与错误的唯一标识符对齐)。这可以通过刷新顺序来解决吗?
    • 从表查询不应加载回工作簿。如果是,只需删除它所在的工作表,它会让您将其保留为“仅连接”查询。
    • 感谢您的步骤,我想我明白了。关键是“欺骗”合并步骤,用“From Table”查询(然后合并)中的字段覆盖原始 SQL Query 表中的“Comments”字段。在排序方面它仍然在做一些奇怪的事情(唯一标识符在排序然后刷新后移动到不同的顺序),但没有什么有害的,并且 cmets 保持与正确的唯一标识符对齐。
    • 哦,是的,我假设没有来自 SQL 查询的 cmets 字段,因为它是您在 Excel 中手动输入的内容。 PQ 中的合并操作可能会与来自 SQL 语句的默认排序顺序相混淆,因此如果您希望在刷新时以特定方式对其进行排序,我只需在 PQ 中的合并后添加一个排序操作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多