Beispiel #1
0
    def setUp(self):
        super(StarSQLTestCase, self).setUp()

        self.engine = sqlalchemy.create_engine('sqlite://')
        metadata = sqlalchemy.MetaData(bind=self.engine)

        table = Table('sales', metadata, Column('id',
                                                Integer,
                                                primary_key=True),
                      Column('amount', Float), Column('discount', Float),
                      Column('fact_detail1', String),
                      Column('fact_detail2', String), Column('flag', String),
                      Column('date_id', Integer),
                      Column('product_id', Integer),
                      Column('category_id', Integer))

        table = Table('dim_date', metadata,
                      Column('id', Integer, primary_key=True),
                      Column('day', Integer), Column('month', Integer),
                      Column('month_name', String),
                      Column('month_sname', String), Column('year', Integer))

        table = Table(
            'dim_product',
            metadata,
            Column('id', Integer, primary_key=True),
            Column('category_id', Integer),
            Column('product_name', String),
        )

        table = Table('dim_category', metadata,
                      Column('id', Integer, primary_key=True),
                      Column('category_name_en', String),
                      Column('category_name_sk', String),
                      Column('subcategory_id', Integer),
                      Column('subcategory_name_en', String),
                      Column('subcategory_name_sk', String))

        self.metadata = metadata
        self.metadata.create_all(self.engine)

        self.workspace = self.create_workspace({"engine": self.engine},
                                               "sql_star_test.json")
        # self.workspace = Workspace()
        # self.workspace.register_default_store("sql", engine=self.engine)
        # self.workspace.import_model()
        self.cube = self.workspace.cube("sales")
        store = self.workspace.get_store("default")

        self.browser = SnowflakeBrowser(self.cube,
                                        store=store,
                                        dimension_prefix="dim_")
        self.browser.debug = True
        self.mapper = self.browser.mapper
Beispiel #2
0
    def setUp(self):
        super(HierarchyTestCase, self).setUp()

        engine = create_engine("sqlite:///")
        metadata = MetaData(bind=engine)
        d_table = Table("dim_date", metadata,
                        Column('id', Integer, primary_key=True),
                        Column('year', Integer), Column('quarter', Integer),
                        Column('month', Integer), Column('week', Integer),
                        Column('day', Integer))

        f_table = Table("ft_cube", metadata,
                        Column('id', Integer, primary_key=True),
                        Column('date_id', Integer))
        metadata.create_all()

        start_date = datetime.date(2000, 1, 1)
        end_date = datetime.date(2001, 1, 1)
        delta = datetime.timedelta(1)
        date = start_date

        d_insert = d_table.insert()
        f_insert = f_table.insert()

        i = 1
        while date < end_date:
            record = {
                "id": int(date.strftime('%Y%m%d')),
                "year": date.year,
                "quarter": (date.month - 1) // 3 + 1,
                "month": date.month,
                "week": int(date.strftime("%U")),
                "day": date.day
            }

            engine.execute(d_insert.values(record))

            # For each date insert one fact record
            record = {"id": i, "date_id": record["id"]}
            engine.execute(f_insert.values(record))
            date = date + delta
            i += 1

        workspace = self.create_workspace({"engine": engine}, "hierarchy.json")
        self.cube = workspace.cube("cube")
        self.browser = SnowflakeBrowser(self.cube,
                                        store=workspace.get_store("default"),
                                        dimension_prefix="dim_",
                                        fact_prefix="ft_")
        self.browser.debug = True