Azure 数据湖循环

Azure Data Lake Loop

Azure Data Lake Analytics 和 U-SQL 是否支持使用 While 或 For 循环并创建多个输出? 我想使用一次 USQL 执行输出到多个文件。

这就是我想要的:

Foreach @day in @days
    @dataToSave = 
        SELECT    day AS day,
                  company AS Company,      
        FROM @data
        WHERE @day = @day

    @out = @day + ".txt"

    OUTPUT @dataToSave
    TO @out
    USING Outputters.Text();
Next

我知道我可以使用 powershell,但我认为这会降低执行准备的性能。

U-SQL 不支持 While 或 For 循环。您可以使用 WHERE 语句过滤提取的数据,并使用虚拟列根据文件 paths/names () 进行过滤。

要输出到多个文件,如果文件数量合理,您可以为每个输出编写唯一的行集和 WHERE 子句。

如您所说,您也可以使用 Powershell 或 U-SQL (example) 编写脚本。

多个文件的动态输出目前处于有限的私人预览中。如果您对此功能感兴趣,请将您的场景发送到 usql at microsoft dot com,因为根据您的描述,它可能适用于您的场景。

希望这对您有所帮助,如果您对实施这些解决方案有更多疑问,请告诉我。

您可以尝试创建一个自定义输出器并忽略输出文件并在您自己的文件上写入! public 覆盖无效输出(IRow 行,IUnstructuredWriter 输出)

试试这个,也使用输出器:

public override void Output(IRow input, IUnstructuredWriter output)
    {
       using (System.IO.StreamWriter streamWriter = new StreamWriter(address + _file, true))
    //Save on file!
    }