コード例 #1
0
ファイル: test_table.py プロジェクト: sanjc/ibis
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)
コード例 #2
0
ファイル: test_table.py プロジェクト: zuxfoucault/ibis
    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)
コード例 #3
0
    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