데이터 세트의 얼마나 많은 값이 필터 조건과 일치하는지 계산하려고하는데 필터가 항목과 일치하지 않으면 문제가 발생합니다.돼지 FILTER는 내가 가질 수없는 빈 가방을 반환합니다. COUNT
내 data
구조의 열이 많이있다,하지만 셋이 예를 들어, 사용의있다 : key
- 세트 (고유하지 않은), value
에 대한 데이터 키 - 기록 된 float 값, nominal_value
은 - 공칭를 나타내는 부동 값.
우리의 유스 케이스는 현재 공칭 값보다 10 % 이상 낮은 값의 수를 찾는 것입니다.
나는 이런 식으로 뭔가를하고 있어요 :
filtered_data = FILTER data BY value <= (0.9 * nominal_value);
filtered_count = FOREACH (GROUP filtered_data BY key) GENERATE COUNT(filtered_data.value);
DUMP filtered_count;
대부분의 경우, 공칭 범위를 벗어나는 모든 값이없는, 그래서 filtered_data
는 빈 (또는 널 안되는 이야기하는 방법을 잘..). 결과적으로 filtered_count
도 비어 있음/null이되어 바람직하지 않습니다.
filtered_data
이 비어 있거나 null 인 경우 값 0을 반환하는 명령문은 어떻게 구성 할 수 있습니까?
-- Extra parens in COUNT required to avoid syntax error
filtered_count = FOREACH (GROUP filtered_data BY key) GENERATE COUNT((filtered_data.value is null ? {} : filtered_data.value));
결과 :
Two inputs of BinCond must have compatible schemas. left hand side: #1259:bag{} right hand side: #1261:bag{#1260:tuple(cf#1038:float)}
그리고를 : 나는 온라인으로 발견 한 몇 가지 옵션을 시도했습니다 빈/널 (null) 결과를 초래
filtered_count = FOREACH (GROUP filtered_data BY key) GENERATE (filtered_data.value is null ? 0 : COUNT(filtered_data.value));
.