4
我试图计算一个数据集的多少值符合筛选条件我不能指望,但我运行到问题时,过滤器没有条目相匹配。猪过滤器返回的空袋子,
有我data
结构有很多栏目,但只有三个用在这个例子中:key
- 为组(不是唯一的),value
数据的关键 - 作为记录浮点值,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
也为空/空,这是不可取的。
我怎样才能构建将返回值为0时filtered_data
空/空的声明?我试了几个选项,我已经在网上找到:
-- 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)}
和:
filtered_count = FOREACH (GROUP filtered_data BY key) GENERATE (filtered_data.value is null ? 0 : COUNT(filtered_data.value));
这导致空/空结果。