この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

null 演算子

null 演算子を使用すると、値が null の項目を含む (または、含まない) レコードを選択できます。

null 演算子は、true または false を返します。

演算子 説明
is null 値が null である場合は true。
is not null 値が null でない場合は true。

is nullis not null は射影および射影後の条件で使用します。射影前の条件では使用できません。

たとえば、営業担当が 1 回以上ミーティングしたすべての取引先を表示します。

1q = load "Meetings";
2q = group q by 'Company';
3q = foreach q generate 'Company' as 'Company', sum('MeetingDuration') as 'TotalMeetings';
4
5--filter out fields with no meetings
6q = filter q by 'TotalMeetings' is not null;

または、case を使用して null 値を必要な値に置き換えできます。

1q = load "dataset";
2q = foreach q generate (case when Name is null then "john doe" else Name end) as Name;

射影前では is not nullis null を使用できないため、次の例は有効ではありません

1a = load "dataset";
2a = filter a by Year is not null;
3a = foreach a generate Name as Name, Year as Year;

is nullcogroup を使用する

左外部共通グルーピングは、右データストリームを左データストリームと結合します。左側のレコードが右側と一致しない場合、欠落した右の値は、結果のデータストリームでは null になります。

たとえば、営業担当と各取引先のミーティングに関する情報を含む「Meeting (ミーティング)」データセットがあるとします。営業担当がミーティングを行っていない取引先をすべて確認する必要があります。Ops (運用) と Meetings (ミーティング) 間の左外部共通グルーピングを使用した後に、is null を使用して、結果を絞り込みます。

1ops = load "Ops";
2meetings = load "Meetings";
3q = cogroup ops by 'Account' left, meetings  by 'Company' ;
4q = foreach q generate ops.'Account' as 'Account', sum(ops.'Amount') as 'sum_Amount', sum(meetings.'MeetingDuration') as 'TimeSpent';
5
6--use is null to get records with no time time spent 
7q = filter q by 'TimeSpent' is null;