我正在尝试从data lake
商店中提取文件夹名称,并将其作为列输出到csv
文件中。有没有办法通过USQL
提取整个文件夹名称或文件夹名称的一部分?例如/input/Testing
- 我想要Testing
。
我知道您可以提取文件名并将其放入虚拟列中,如下所示:
// Filesets, file set with virtual column
@q =
EXTRACT rowId int,
filename string,
extension string
FROM "/input/filesets example/{filename}.{extension}"
USING Extractors.Tsv();
@output =
SELECT filename,
extension,
COUNT( * ) AS records
FROM @q
GROUP BY filename,
extension;
OUTPUT @output TO "/output/output.csv"
USING Outputters.Csv();
答案 0 :(得分:2)
您可以在路径中的任何位置使用{virtual_column}
功能(不仅仅是文件名和扩展名),稍后再进行投影。这将有效:
@q = EXTRACT
rowId int,
folder string,
filename string,
extension string
FROM "/input/{folder}/{filename}.{extension}"
USING Extractors.Tsv();
@output =
SELECT folder,
filename,
extension,
COUNT( * ) AS records
FROM @q
GROUP BY folder,
filename,
extension;
但是,请注意,通过在路径中使用虚拟列,您还可以获得通配符功能(如果您有多个文件夹,您将获取所有文件夹)...