我想对列的子集执行DISTINCT操作.该文件说,这是可能的一个嵌套的foreach:
您不能在字段子集上使用DISTINCT; 要执行此操作,请使用FOREACH和嵌套块首先选择字段,然后应用DISTINCT(请参阅示例:嵌套块).
在所有列上执行DISTINCT操作很简单:
A = LOAD 'data' AS (a1,a2,a3,a4);
A_unique = DISTINCT A;
Run Code Online (Sandbox Code Playgroud)
让我们说我有兴趣在a1,a2和a3中执行不同的操作.任何人都可以提供一个示例,说明如何使用文档中建议的嵌套foreach执行此操作吗?
以下是输入和预期输出的示例:
A = LOAD 'data' AS(a1,a2,a3,a4);
DUMP A;
(1 2 3 4)
(1 2 3 4)
(1 2 3 5)
(1 2 4 4)
-- insert DISTINCT operation on a1,a2,a3 here:
-- ...
DUMP A_unique;
(1 2 3 4)
(1 2 4 4)
Run Code Online (Sandbox Code Playgroud)
reo*_*toa 20
在所有其他列上进行分组,将感兴趣的列投影到一个包中,然后使用FLATTEN再次展开它们:
A_unique =
FOREACH (GROUP A BY a4) {
b = A.(a1,a2,a3);
s = DISTINCT b;
GENERATE FLATTEN(s), group AS a4;
};
Run Code Online (Sandbox Code Playgroud)