以下のような入力ファイルがあり、商品ID単位で最新日付とそれに対応する在庫数のみをLOADしたい場合どのようなScriptになるでしょうか。
不要なレコードをLoadすることなく必要レコードのみを抽出してLoadしたいと思います。
商品ID | 日付 | 在庫数 |
A | 2015/1/1 | 1 |
A | 2015/2/1 | 2 |
A | 2015/3/1 | 3 |
A | 2016/3/1 | 4 |
B | 2015/3/1 | 1 |
B | 2016/3/1 | 2 |
B | 2016/4/1 | 1 |
C | 2015/1/1 | 1 |
C | 2015/2/1 | 3 |
C | 2015/3/1 | 2 |
D | 2016/4/1 | 1 |
D | 2016/4/2 | 2 |
E | 2016/5/3 | 1 |
他にもいい方法があるかもしれませんが、これで実現可能です。
temptable:
LOAD * INLINE [
商品ID, 日付, 在庫数
A, 2015/1/1, 1
A, 2015/2/1, 2
A, 2015/3/1, 3
A, 2016/3/1, 4
B, 2015/3/1, 1
B, 2016/3/1, 2
B, 2016/4/1, 1
C, 2015/1/1, 1
C, 2015/2/1, 3
C, 2015/3/1, 2
D, 2016/4/1, 1
D, 2016/4/2, 2
E, 2016/5/3, 1
];
table:
LOAD Distinct
商品ID,
max(日付) as 日付
Resident temptable
group by 商品ID ;
left join
LOAD *
Resident temptable;
drop Table temptable;
他にもいい方法があるかもしれませんが、これで実現可能です。
temptable:
LOAD * INLINE [
商品ID, 日付, 在庫数
A, 2015/1/1, 1
A, 2015/2/1, 2
A, 2015/3/1, 3
A, 2016/3/1, 4
B, 2015/3/1, 1
B, 2016/3/1, 2
B, 2016/4/1, 1
C, 2015/1/1, 1
C, 2015/2/1, 3
C, 2015/3/1, 2
D, 2016/4/1, 1
D, 2016/4/2, 2
E, 2016/5/3, 1
];
table:
LOAD Distinct
商品ID,
max(日付) as 日付
Resident temptable
group by 商品ID ;
left join
LOAD *
Resident temptable;
drop Table temptable;
早々の回答、どうもありがとうございます。
期待通りのテーブルができました。