def test_expect_compound_columns_to_be_unique(sa):
    engine = sa.create_engine("sqlite://")

    data = pd.DataFrame({
        "col1": [1, 2, 3, 1, 2, 3, 4, 5, None],
        "col2": [1, 2, 2, 2, 2, 3, None, None, None],
        "col3": [1, 1, 2, 2, 3, 2, None, None, None],
        "col4": [1, None, 2, 2, None, None, None, None, None],
    })

    data.to_sql(name="test_sql_data", con=engine, index=False)
    dataset = SqlAlchemyDataset("test_sql_data", engine=engine)

    assert not dataset.expect_compound_columns_to_be_unique(["col1", "col2"
                                                             ]).success
    assert not dataset.expect_compound_columns_to_be_unique(["col2", "col3"
                                                             ]).success
    assert not dataset.expect_compound_columns_to_be_unique(["col1", "col3"
                                                             ]).success
    assert dataset.expect_compound_columns_to_be_unique(
        ["col1", "col2", "col3"]).success
    assert not dataset.expect_compound_columns_to_be_unique(
        ["col1", "col2", "col4"]).success
    assert dataset.expect_compound_columns_to_be_unique(
        ["col1", "col2", "col4"],
        ignore_row_if="any_value_is_missing",
    ).success
    assert not dataset.expect_compound_columns_to_be_unique(
        ["col1", "col2", "col4"],
        ignore_row_if="never",
    ).success
Exemple #2
0
def test_expect_compound_columns_to_be_unique_with_no_rows(sa):
    engine = sa.create_engine("sqlite://")

    data = pd.DataFrame({
        "col1": [],
        "col2": [],
        "col3": [],
        "col4": [],
    })

    data.to_sql(name="test_sql_data", con=engine, index=False)
    dataset = SqlAlchemyDataset("test_sql_data", engine=engine)

    assert dataset.expect_compound_columns_to_be_unique(["col1",
                                                         "col2"]).success