def test_cross_join_multiple(table): a = table['a', 'b', 'c'] b = table['d', 'e'] c = table['f', 'h'] joined = ibis.cross_join(a, b, c) expected = a.cross_join(b.cross_join(c)) assert joined.equals(expected)
def test_cross_join_multiple(self): a = self.table['a', 'b', 'c'] b = self.table['d', 'e'] c = self.table['f', 'h'] joined = ibis.cross_join(a, b, c) expected = a.cross_join(b.cross_join(c)) assert joined.equals(expected)
def handle_join( self, join: JoinBase, columns: List[Value], internal_transformer: InternalTransformer, ) -> TableExpr: """ Return the table expr resulting from the join :param join: :param columns: List of all column values :return: """ result: TableExpr = None all_columns: List[Value] = [] left_table = join.left_table right_table = join.right_table if self._columns_have_select_star(columns): all_columns = self._get_all_join_columns_handle_duplicates( left_table, right_table, join) left_ibis_table = left_table.get_table_expr() right_ibis_table = right_table.get_table_expr() if isinstance(join, Join): compiled_condition: Value = internal_transformer.transform( join.join_condition) result = left_ibis_table.join( right_ibis_table, predicates=compiled_condition.get_value(), how=join.join_type, ) if isinstance(join, CrossJoin): result = ibis.cross_join(left_ibis_table, right_ibis_table) if all_columns: return result[all_columns] return result