def __init__(self, join_expr): assert isinstance(join_expr.op(), Join) self.join = join_expr TableNode.__init__(self, [join_expr]) schema = self.join.op()._get_schema() HasSchema.__init__(self, schema)
def __init__(self, left, right, distinct=False): self.left = left self.right = right self.distinct = distinct TableNode.__init__(self, [left, right, distinct]) self._validate() HasSchema.__init__(self, self.left.schema())
def __init__(self, table, agg_exprs, by=None, having=None): # For tables, like joins, that are not materialized self.table = table self.agg_exprs = self._rewrite_exprs(agg_exprs) by = by or [] self.by = self.table._resolve(by) self.by = self._rewrite_exprs(self.by) self.having = having or [] self.having = self._rewrite_exprs(self.having) self._validate() TableNode.__init__(self, [table, self.agg_exprs, self.by, self.having]) schema = self._result_schema() HasSchema.__init__(self, schema)
def __init__(self, table_expr, proj_exprs): from ibis.expr.analysis import ExprValidator # Need to validate that the column expressions are compatible with the # input table; this means they must either be scalar expressions or # array expressions originating from the same root table expression validator = ExprValidator([table_expr]) # Resolve schema and initialize types = [] names = [] clean_exprs = [] for expr in proj_exprs: if isinstance(expr, py_string): expr = table_expr[expr] validator.assert_valid(expr) if isinstance(expr, ValueExpr): name = expr.get_name() names.append(name) types.append(expr.type()) elif rules.is_table(expr): schema = expr.schema() names.extend(schema.names) types.extend(schema.types) else: raise NotImplementedError clean_exprs.append(expr) # validate uniqueness schema = Schema(names, types) HasSchema.__init__(self, schema) Node.__init__(self, [table_expr] + [clean_exprs]) self.table = table_expr self.selections = clean_exprs
def __init__(self, table): self.table = table ir.BlockingTableNode.__init__(self, [table]) schema = self.table.schema() HasSchema.__init__(self, schema)
def __init__(self, query, schema, source): self.query = query TableNode.__init__(self, [query, schema, source]) HasSchema.__init__(self, schema)
def __init__(self, name, schema, source): self.source = source TableNode.__init__(self, [name, schema, source]) HasSchema.__init__(self, schema, name=name)
def __init__(self, schema, name=None): TableNode.__init__(self, [schema, name]) HasSchema.__init__(self, schema, name=name)
def __init__(self, table_expr): self.table = table_expr TableNode.__init__(self, [table_expr]) HasSchema.__init__(self, table_expr.schema())