内容

有时会出现预先不知道需要从源数据导入多少行和哪些行的情况。 假设我们必须将文本文件中的数据加载到 Power Query 中,乍一看,这并没有什么大问题。 困难在于文件定期更新,明天它可能有不同的数据行数,标题为三,而不是两行等:

在 Power Query 中导入浮动片段

也就是说,我们不能提前确定,从哪一行开始,具体需要导入多少行。 这是一个问题,因为这些参数是硬编码在请求的 M 代码中的。 如果您对第一个文件提出请求(从第 5 个文件开始导入 4 行),那么它将不再与第二个文件一起正常工作。

如果我们的查询本身可以确定要导入的“浮动”文本块的开始和结束,那就太好了。

我要提出的解决方案是基于我们的数据包含一些关键字或值可以作为我们需要的数据块的开始和结束的标记(特征)的想法。 在我们的示例中,开头将以单词开头的行 SKU, 结尾是一行字 合计. 此行验证很容易在 Power Query 中使用条件列实现 - 类似于函数 IF (如果) ? 微软 Excel。

让我们来看看如何做。

首先,让我们以标准方式将文本文件的内容加载到 Power Query 中——通过命令 数据 – 获取数据 – 从文件 – 从文本/CSV 文件 (数据 - 获取数据 - 从文件 - 从文本/CSV 文件). 如果您将 Power Query 作为单独的加载项安装,则相应的命令将显示在选项卡上 电源查询:

在 Power Query 中导入浮动片段

和往常一样,导入时可以选择列分隔符(在我们的例子中,这是一个制表符),导入后可以去掉自动添加的步骤 修改型 (更改类型),因为现在给列分配数据类型还为时过早:

在 Power Query 中导入浮动片段

现在使用命令 添加列 - 条件列 (添加列 - 条件列)让我们添加一列,检查两个条件——在块的开头和结尾——并在每种情况下显示任何不同的值(例如,数字 1 и 2)。 如果不满足任何条件,则输出 :

在 Power Query 中导入浮动片段

点击后 OK 我们得到以下图片:

在 Power Query 中导入浮动片段

现在让我们转到选项卡。 转型 并选择一个团队 填充 - 向下 (变换-填充-向下) – 我们的一二一二将沿着柱子延伸:

在 Power Query 中导入浮动片段

那么,正如您可能猜到的那样,您可以简单地过滤条件列中的单位——这是我们梦寐以求的数据:

在 Power Query 中导入浮动片段

剩下的就是使用命令将第一行提升到标题 使用第一行作为标题 标签 主页 (首页 - 使用第一行作为标题) 并通过右键单击其标题并选择命令来删除不必要的更多条件列 删除列 (删除列):

问题解决了。 现在,当更改源文本文件中的数据时,查询现在将独立确定我们需要的数据“浮动”片段的开头和结尾,并每次导入正确的行数。 当然,这种方法也适用于导入 XLSX 而不是 TXT 文件的情况,以及使用命令一次从文件夹中导入所有文件的情况 数据 - 获取数据 - 从文件 - 从文件夹 (数据 - 获取数据 - 从文件 - 从文件夹).

  • 使用 Power Query 组合来自不同文件的表
  • 使用宏和 Power Query 将交叉表重新设计为平面
  • 在 Power Query 中构建项目甘特图

发表评论