def _clean_join_predicates(left, right, predicates): import ibis.expr.analysis as L result = [] for pred in predicates: if isinstance(pred, tuple): if len(pred) != 2: raise com.ExpressionError('Join key tuple must be ' 'length 2') lk, rk = pred lk = left._ensure_expr(lk) rk = right._ensure_expr(rk) pred = lk == rk elif isinstance(pred, str): pred = left[pred] == right[pred] elif not isinstance(pred, ir.Expr): raise NotImplementedError if not isinstance(pred, ir.BooleanColumn): raise com.ExpressionError('Join predicate must be comparison') preds = L.flatten_predicate(pred) result.extend(preds) _validate_join_predicates(left, right, result) return tuple(result)
def to_array(self) -> ir.Column: """View a single column table as an array. Returns ------- Value A single column view of a table """ from ibis.expr import operations as ops schema = self.schema() if len(schema) != 1: raise com.ExpressionError( 'Table must have exactly one column when viewed as array' ) return ops.TableArrayView(self).to_expr()
def __len__(self): raise com.ExpressionError('Use .count() instead')