如何使用PQ获取目录下所有文件夹的名(不含文件和子目录)

2020-05-08 15:21:37 浏览数 (3)

今天想把之前发布的Power BI的示例文件文件夹做一个表出来,只获取该目录下的所有文件夹的名,并不包含其中各种文件和子目录。

因为每个文件夹中都包含多个文件,甚至还有子文件夹:

所以如果直接用“从文件夹获取数据”的方式,PowerQuery会使用Folder.Files函数:

Folder.Files会将所选目录下所有文件的路径罗列出来:

当然,其实可以通过一系列pq操作将文件夹的名都筛选出来,实现我的目的。

不过,这样其实有个小问题,如果有一些文件夹我还没有在里面保存文件,也就是空文件夹,那么它就不会出现在列表中:

而且,其实用字符串多步骤切割的方法,一是很繁琐, 二是容易后续出问题。

我觉得应该会有个稍微简单点的操作。

查了一下PowerQuery的document发现,针对Folder的操作,除了Folder.Files,还有一个Folder.Contents:

以下是Folder.Contents的说明:

这个就比较好了。它只返回所选的目录下的文件夹名和文件名,并不会返回子文件夹下的文件。

所以,我们将Folder.Files替换成Folder.Contents:

这样我们就得到了根目录下的所有文件夹名,和文件名。尤其是,空文件夹这里也出现了。

接下来就是从列表中只返回文件夹的名。

有同学会说,文件夹没有拓展名,而文件都是有拓展名的,所以只要筛选extension这里为空就可以:

不过,这种说法显然漏掉了一种情况:

如果根目录下还有一个无拓展名的文件,那么,仅仅筛选extension为空的话,就会多余一行数据:

所以需要其他办法,展开attribute选择directory:

点击确定后:

再筛选TRUE的行:

意思是查看属性,然后筛选那些是“目录”的行。

这样,就将该目录下的所有文件夹的名获取到了。

0 人点赞