我正在使用PigLatin过滤一些记录.
User1 8 NYC
User1 9 NYC
User1 7 LA
User2 4 NYC
User2 3 DC
Run Code Online (Sandbox Code Playgroud)
该脚本应删除用户的副本,并保留其中一个记录.像linux中的唯一命令.
输出应该是:
User1 8 NYC
User2 4 NYC
Run Code Online (Sandbox Code Playgroud)
有什么建议?
ale*_*pab 20
对于您的特定示例,distinct将无法正常工作,因为您的输出包含所有输入列($0, $1, $2),您可以仅对具有列($0, $2)或($0)丢失的投影执行不同操作$1.
为了选择每个用户一个记录(任何记录),你可以使用GROUP BY和嵌套FOREACH使用LIMIT.例如:
inpt = load '......' ......;
user_grp = GROUP inpt BY $0;
filtered = FOREACH user_grp {
top_rec = LIMIT inpt 1;
GENERATE FLATTEN(top_rec);
};
Run Code Online (Sandbox Code Playgroud)
此方法将帮助您获取字段子集上唯一的记录,并限制每个用户可以控制的输出记录数.