USQL,将foldername提取到输出中

时间:2017-10-12 21:00:43

标签: azure-data-factory azure-data-lake u-sql

我正在尝试从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();

See pic here.

1 个答案:

答案 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;

但是,请注意,通过在路径中使用虚拟列,您还可以获得通配符功能(如果您有多个文件夹,您将获取所有文件夹)...