0

Pig で「列」のラグや違いを生成する方法はありますか? Rから転写された、私がやろうとしていることの例を次に示します。

         Value           Value.Diff
1        0.209                NA
2        0.198            -0.011
3        0.187            -0.011
4        0.176            -0.011
5        0.168            -0.008
6        0.159            -0.009

Pig のデータ ストレージの (おそらく) 分散型の性質を考えると、これは注意が必要かもしれませんが、Pig 0.11 以降ではタプルをランク付けできるため、可能かもしれないと考えました。

4

1 に答える 1

1

このようなものが動作するはずです:

values = rank values by some_field;
values = foreach values generate $0 as this_rank, $0 - 1 as prev_rank, value;
copy   = foreach values generate *;
pairs  = join values by this_rank, copy by prev_rank;
diffs  = foreach pairs generate this_rank, values::value - copy::value as diff;
于 2013-11-12T19:32:06.933 に答える