私は2つのテーブルを結合しようとしており、あるテーブルの数値を別のテーブルの数値で割ります。私はオリジナルでそれを行い、同じ値を持つ新しいテーブルを生成しようとしましたが、同じエラーが両方の時間で発生し、それは余分な混乱です。ブタの異なるテーブルから数値を分割する方法
--get the data
lines = LOAD '/historicaldata.csv' USING PigStorage(' ') AS (ticker:chararray, date:long, open:long, high:long, low:long, close:long, volume:long);
--limit it between the dates we want
specDates = FILTER lines BY (date<=20000103 and date>=19900101);
--sort by ticker symbol
companies = GROUP specDates BY ticker;
--sort DESC and get the top to get the ending date
sorted_end = FOREACH companies {
sorted1 = ORDER specDates BY date DESC;
endDate = LIMIT sorted1 1;
GENERATE endDate.ticker AS ticker, endDate.open AS open, endDate.close AS close;
}
--sort ASC and get the top to get the starting date
sorted_begin = FOREACH companies {
sorted2 = ORDER specDates BY date ASC;
startDate = LIMIT sorted2 1;
GENERATE startDate.ticker AS ticker, startDate.open AS open, startDate.close AS close;
}
joined = JOIN sorted_end BY ticker, sorted_begin BY ticker;
final = FOREACH joined GENERATE sorted_end::ticker as ticker, sorted_begin::open as open, sorted_end::close as close;
final2 = FOREACH final GENERATE ticker as ticker, (float)(close/open) as growth_factor;
私は入れませんエラーは、次のとおりです。
(Name: Divide Type: null Uid: null)incompatible types in Divide Operator left hand side:bag :tuple(close:float) right hand side:bag :tuple(open:float)
は、彼らが別の袋から来ていること以外に、「互換性のない型」である理由を私は確認していない浮動小数点数ですが、「に追加する両最終的な "とそこからそれをやろうとすると動作しません。
データの形式は次のとおりです。
AA,20140131,11.60,11.80,11.45,11.48,33014100
AA,20140130,12.05,12.07,11.83,11.92,23223500
AA,20140129,11.64,12.23,11.58,11.96,44433000
すべてのエントリがあなたのクエリに基づいてすべての列とうまくフォーマットされ、非ゼロの数字
あなたの完全なコードといくつかのサンプル入力を投稿してください –
参加する両方のデータセットのサンプルデータをそれらのためのスキーマとともに投稿してください。 – CodeReaper