0

私は 3 つのテーブルに参加しており、foreach 内で ReadStagingData バッグが null であるかどうかを確認する必要があります。 以下はコードです

ReadStagingData = Load 'Staging_data.csv' Using PigStorage(',') As     (PL_Posn_id:int,Brok_org_dly:double,Brok_org_ptd:double);

ReadPriorData = Load 'ptd.csv' Using PigStorage(',') As (PL_Posn_id:int,Brok_org_ptd:double);

ReadPriorFunctional = Load 'Functional.csv' Using PigStorage(',') AS (PL_Posn_id:int,Brok_fun_ptd:double,Brok_fun_ltd:double);

JoinDS1 = JOIN ReadPriorData BY PL_Posn_id,ReadPriorFunctional BY PL_Posn_id;

JoinDS2 = JOIN ReadStagingData by PL_Posn_id Left OUTER,JoinDS1 BY      ReadPriorData::PL_Posn_id;

X = Foreach JoinDS2 {
    **test = (NOT(IsEmpty(ReadStagingData))); //Error on this line**
    GENERATE test,ReadStagingData::PL_Posn_id,
    ReadStagingData::Brok_org_dly,
   (ReadStagingData::Brok_org_ptd is not null ? ReadStagingData::Brok_org_ptd:ReadPriorData::Brok_org_ptd+ReadStagingData::Brok_org_dly);
};

Dump X;

上記のコードを実行すると、エラー INVALID PROJECTION ReadStagingData が表示されます。助けてください

4

1 に答える 1

0

あなたの関係Xで、ReadStagingDataはバッグではありません。表記ReadStagingData::Brok_org_dlyはバッグからの突出を示すものではありません。JOINこれは、各フィールドに一意の名前が付けられるようにするために、 にちなんで名付けられた最上位フィールドです。ReadStagingData単なるプレフィックスも同様です。

さらに、なぜそれを確認しようとしているのかわかりません。結合を行っているため、 に対応するレコードLEFT OUTERがなければ にレコードはありません。結合を行っていた場合、それは異なります。XReadStagingDataRIGHT OUTER

結合を行うつもりで、からのフィールドがでRIGHT OUTERあるかどうかを確認したい場合は、次のようにします。ReadStagingDataNULL

rsdIsNull = ReadStagingData::PL_Posn_id IS NULL;
于 2013-10-14T15:47:44.170 に答える