示例#1
0
 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)
示例#2
0
 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
示例#3
0
 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)))