def __call__(self, expr: ir.TableExpr) -> ir.TableExpr: columns = [ column.resolve(expr, { X: expr }).name(name) for name, column in self.mutations.items() ] return expr.projection(columns)
def handle_selection(self, ibis_table: TableExpr, columns: List[Value]) -> TableExpr: column_mutation = [] for column in columns: if column.get_name() == "*": return ibis_table column_value = column.get_value().name(column.get_name()) column_mutation.append(column_value) if column_mutation: return ibis_table.projection(column_mutation) return ibis_table
def __call__(self, expr: ir.TableExpr) -> ir.TableExpr: op = expr.op() if isinstance(op, ops.Join): scope = {X: op.left, Y: op.right} else: scope = {X: expr} return expr.projection( list( itertools.chain.from_iterable( ibis.util.promote_list(column.resolve(expr, scope)) for column in self.columns)))