Example #1
0
def test_materialized_from_obj_maybe_materialize(db_engine_with_events_table):
    from_obj = FromObj(from_obj="events",
                       name="myquery",
                       knowledge_date_column='event_date')
    from_obj.should_materialize = lambda: True
    from_obj.maybe_materialize(db_engine_with_events_table)
    assert table_exists(from_obj.table, db_engine_with_events_table)
Example #2
0
def test_materialized_from_obj_should_materialize_subquery():
    from_obj = FromObj(
        from_obj=
        "(select entity_id, date from mytable1 join entities using(entity_id)) joined_events",
        name="events",
        knowledge_date_column="date")
    assert from_obj.should_materialize()
    assert from_obj.table == "events_from_obj"
Example #3
0
def test_materialized_from_obj_should_handle_leading_whitespace():
    q = """    (
      SELECT entity_id, date
      from mytable1
      join entities using (entity_id)
    ) AS joined_events"""
    from_obj = FromObj(from_obj=q, name="events", knowledge_date_column="date")
    assert from_obj.should_materialize()
    assert from_obj.table == "events_from_obj"
Example #4
0
def test_materialized_from_obj_validate_needs_knowledge_date(
        db_engine_with_events_table):
    from_obj = FromObj(
        from_obj=
        "(select entity_id from events where event_date < '2016-01-01') from_obj",
        name="myquery",
        knowledge_date_column='event_date')
    db_engine_with_events_table.execute(from_obj.create_materialized_table_sql)
    with pytest.raises(ValueError):
        from_obj.validate(db_engine_with_events_table)
Example #5
0
def test_materialized_from_obj_create():
    materialized_query = FromObj(
        from_obj='events where event_date < "2016-01-01"',
        name="myquery",
        knowledge_date_column='knowledge_date')
    assert materialized_query.create_materialized_table_sql == 'create table myquery_from_obj as ' +\
        '(select * from events where event_date < "2016-01-01")'
Example #6
0
    def preprocess_aggregation(self, aggregation):
        create_schema = aggregation.get_create_schema()

        if create_schema is not None:
            with self.db_engine.begin() as conn:
                conn.execute(create_schema)

        if self.materialize_subquery_fromobjs:
            # materialize from obj
            from_obj = FromObj(
                from_obj=aggregation.from_obj.text,
                name=f"{aggregation.schema}.{aggregation.prefix}",
                knowledge_date_column=aggregation.date_column)
            from_obj.maybe_materialize(self.db_engine)
            aggregation.from_obj = from_obj.table
        return aggregation
Example #7
0
def test_materialized_from_obj_should_not_materialize_tbl():
    from_obj = FromObj(from_obj="mytable1",
                       name="events",
                       knowledge_date_column="date")
    assert not from_obj.should_materialize()
    assert from_obj.table == "mytable1"
Example #8
0
def test_materialized_from_obj_validate_success(db_engine_with_events_table):
    from_obj = FromObj(from_obj="events where event_date < '2016-01-01'",
                       name="myquery",
                       knowledge_date_column='event_date')
    db_engine_with_events_table.execute(from_obj.create_materialized_table_sql)
    from_obj.validate(db_engine_with_events_table)
Example #9
0
def test_materialized_from_obj_drop():
    materialized_query = FromObj(
        from_obj='events where event_date < "2016-01-01"',
        name="myquery",
        knowledge_date_column='knowledge_date')
    assert materialized_query.drop_materialized_table_sql == 'drop table if exists myquery_from_obj'
Example #10
0
def test_materialized_from_obj_index():
    materialized_query = FromObj(
        from_obj='events where event_date < "2016-01-01"',
        name="myquery",
        knowledge_date_column='knowledge_date')
    assert materialized_query.index_materialized_table_sql == 'create index on myquery_from_obj (knowledge_date)'
Example #11
0
def test_materialized_from_obj_should_handle_keywords():
    from_obj = FromObj(from_obj="events",
                       name="events",
                       knowledge_date_column="date")
    assert not from_obj.should_materialize()
    assert from_obj.table == "events"
Example #12
0
def test_materialized_from_obj_should_not_materialize_join():
    from_obj = FromObj(from_obj="mytable1 join entities using(entity_id)",
                       name="events",
                       knowledge_date_column="date")
    assert not from_obj.should_materialize()
    assert from_obj.table == "mytable1 join entities using(entity_id)"