今天想把之前发布的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的行:
意思是查看属性,然后筛选那些是“目录”的行。
这样,就将该目录下的所有文件夹的名获取到了。