AzureDataLakeAnalytics:使用U-SQL合并重叠持续时间我想使用U-SQL将CSV数据从AzureDataLakeStore中删除重叠持续时间并将行组合在一起。数据集包含开始时间和结束时间,每条记录包含其他几个属性。这是一个示例:开始时间-结束时间-Usar名称5:00AM-6:00AM-ABC5:00AM-6:00AM-XYZ8:00AM-9:00AM-ABC8:00AM-上午10:00-ABC上午10:00-下午2:00-ABC上午7:00-上午11:00-ABC上午9:00-上午11:00-ABC上午11:00-上午11:30-ABC删除重叠后,输出数据集将如下所示:开始时间-结束时间-UsarName5:00AM-6:00AM-ABC5:00AM-6:00AM-XYZ7:00AM-2:00PM-ABC请注意,CSV包含大量数据,大小为几千兆字节。我试图解决这个问题,但没有运气。我想避免使用U-SQL用户定义的Azure数据湖分析作业运算符并在U-SQL中寻找一些有效的解决方案。看起来您想聚合提供重叠时间范围的行的所有数据?或者您想对其他列中的数据做什么?乍一看,我建议您使用用户定义的REDUCER或用户定义的聚合器,具体取决于您希望使用其他数据实现的目标。但是,我看到的一个问题是您可能需要一个定点递归来创建公共重叠范围。不幸的是,U-SQL(或Hive)中没有定点递归,因为无法有效地完成递归缩进处理。澄清后更新:我认为这更容易。您只需使用键值获取结束最小值和结束最大值并进行分组:@r=EXTRACTbeginDateTime,endDateTime,datastringFROM"/temp/ranges.txt"USINGExtractors.Text(delimiter:'-');@r=SELECTMIN(begin)ASbegin,MAX(end)ASend,dataFROM@rGROUPBYdata;使用Outputters.Csv()将@r输出到“/temp/result.csv”;请注意,仅当您的范围在同一天且不晚于午夜时才有效。为用户处理不同范围的更新解决方案您可以使用用户定义的减速器解决它。以下博客文章解释了解决方案的详细信息并提供了指向GitHub代码的链接:https://blogs.msdn.microsoft.com/mrys/2016/06/08/how-do-i-combine-overlapping-ranges-使用-U-SQL介绍-U-SQLreducerudos/以上是C#学习教程:AzureDataLakeAnalytics:UsingU-SQLtocombinoverlappingdurationstosareallthecontent,如果对大家有用需要了解更多关于C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
