根据列值将数据移动到不同的输出文件夹

时间:2016-01-28 07:53:10

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

现在,我们在Azure Data Lake Store中拥有数据,现在正在使用带有U-SQL的Azure Data Analytic Job处理其中的数据。现在我们需要根据存在的列值将数据推送到不同的输出文件夹。

假设我们处理完数据后输出如下

ID |名称|公司

1 Midhun测试

2 Midhun2 test2

所以我想先将第一个记录到名为" test" \ result.tsv的输出文件夹,将第二个记录到输出文件夹中,然后输出到#34; test2" \ result.tsv

我可以在U-SQL中执行此操作吗?我没有找到任何关于U-SQL的好的参考文档。如果您知道,请与他人分享。

1 个答案:

答案 0 :(得分:2)

目前的参考文档是http://aka.ms/usql_reference的测试版。我计划在2月份进行更新,增加更多缺失部分并改进导航。稍后的修订将添加更多示例代码。

您基本上希望支持此功能:https://feedback.azure.com/forums/327234-data-lake/suggestions/10550388-support-dynamic-output-file-names-in-adla。如果您还没有这样做,请添加您的投票。

我们实际上正在考虑在“现在”和我们发布GA版本服务之间提供此功能。

在功能可用之前,您必须在一个脚本中基本获取文件的名称,以生成第二个脚本,以创建将数据输出到不同文件的脚本。

E.g。您只能从上面获取公司列,然后生成一个脚本(使用T4或Powershell或您喜欢使用的任何其他工具,包括U-SQL本身:)),通常具有以下格式:

... Your U-SQL processing to get the rowset you want to split, lets call it @data

OUTPUT (SELECT * FROM @data WHERE Company == "<insert value of directory name>") 
TO "/output/<insert value of directory name>/result.tsv"
USING Outputters.Tsv();

... Repeat the above statement for every directory name