在我的数据处理中,一种常见的模式是按一组列进行分组,应用过滤器,然后再次展平。例如:
my_data_grouped = group my_data by some_column;
my_data_grouped = filter my_data_grouped by <some expression>;
my_data = foreach my_data_grouped flatten(my_data);
问题是如果 my_data
以类似(c1,c2,c3)的模式开始此操作之后,它将具有类似(mydata::c1,mydata::c2,mydata::c3)的模式。如果列是唯一的,有没有办法轻松去掉“mydata::”前缀?
我知道我可以这样做:
my_data = foreach my_data generate c1 as c1, c2 as c2, c3 as c3;
然而,对于具有大量列的数据集来说,这变得很难维护,对于具有可变列的数据集来说,这是不可能的。
2条答案
按热度按时间zengzsys1#
如果架构中的所有字段都有相同的前缀集(例如group1::id、group1::amount等),则在引用特定字段时可以忽略前缀(仅将它们引用为id、amount等)
或者,如果您仍然希望去掉一个前缀级别的模式,您可以使用如下自定义项:
hmtdttj42#
您可以将'as'语句与'foreach'放在同一行。
即
但是,这与在两行上执行相同,并不能缓解“具有可变列的数据集”的问题。