def cube(self): if not hasattr(self, '_cube') or self._cube is None: self._cube = Cube(self.engine, 'cube', self.model, fact_table=self.table) return self._cube
def test_dimension_column_qualified(self, sqla_engine, cra_model, cra_table): model = cra_model.copy() name = 'cra.cofog1_name' model['dimensions']['cofog1']['attributes']['name']['column'] = name cube = Cube(sqla_engine, 'cra', model) cube.model['cofog1.name'].bind(cube)
def test_dimension_column_nonexist(self, sqla_engine, cra_model): with pytest.raises(BindingException): model = cra_model.copy() model['dimensions']['cofog1']['attributes']['name'][ 'column'] = 'lala' cube = Cube(sqla_engine, 'cra', model) cube.model['cofog1.name'].bind(cube)
def test_attr_table_different_from_dimension_key(self, sqla_engine, cra_model): with pytest.raises(BindingException): model = cra_model.copy() model['dimensions']['cap_or_cur']['attributes']['code'][ 'column'] = 'cap_or_cur' cube = Cube(sqla_engine, 'cra', model) cube.facts()
def get_cube(self, name): """ Given a cube name, construct that cube and return it. Do not overwrite this method unless you need to. """ return Cube(self.get_engine(), name, self.get_cube_model(name))
def test_get_cube_correct_values(self): cm = model_registry.ModelRegistry() model = cm.get_model(MODEL_NAME) cube = Cube(config.get_engine(), model['fact_table'], model) facts = cube.facts(fields=['year'], page_size=5) assert facts['total_fact_count'] == NUM_RECORDS, 'wrong number of records'
def setUp(self): super(CubeTestCase, self).setUp() self.cra_model = load_json_fixture('models/cra.json') self.cra_table = load_csv('cra.csv') self.cube = Cube(self.engine, 'cra', self.cra_model)
def test_dimension_column_qualified(self): model = self.cra_model.copy() name = 'cra.cofog1_name' model['dimensions']['cofog1']['attributes']['name']['column'] = name self.cube = Cube(self.engine, 'cra', model) self.cube.model['cofog1.name'].bind(self.cube)
def test_dimension_column_nonexist(self): model = self.cra_model.copy() model['dimensions']['cofog1']['attributes']['name']['column'] = 'lala' self.cube = Cube(self.engine, 'cra', model) self.cube.model['cofog1.name'].bind(self.cube)
def setUp(self): super(ParserTestCase, self).setUp() model = load_json_fixture('models/simple_model.json') self.cube = Cube(self.engine, 'simple', model)
def cube(self): """ Babbage query cube for the given dataset. """ if self.model is not None: return Cube(db.engine, self.name, self.model, fact_table=self.fact_table.table)
def cube(sqla_engine, simple_model): return Cube(sqla_engine, 'simple', simple_model)
import json import os import sqlalchemy import logging from babbage.cube import Cube from babbage.model import Measure logging.root.setLevel(logging.INFO) base = os.path.dirname(__file__) engine = sqlalchemy.create_engine(os.environ.get( 'DPP_DB_ENGINE', 'postgresql://*****:*****@localhost/os'), echo=False) model = json.load(open(os.path.join( base, 'normalized/final/datapackage.json')))['babbageModel'] # model['fact_table'] = 'normalized' cube = Cube(engine, 'normalized', model) logging.info('Getting 20 facts') facts = cube.facts(page_size=20) logging.info('total_fact_count=%s', facts['total_fact_count']) logging.info('keys=%s', list(facts.keys())) members = cube.members('ID_CLAVE_CARTERA', cuts='CICLO:2017', page_size=500) logging.info('members #=%s', len(members['data'])) logging.info('total_member_count=%s', members['total_member_count']) logging.info('members sample=\n%r', members['data'][:10]) # print(facts)
def test_star_column_nonexist(self, sqla_engine, cra_model): with pytest.raises(BindingException): model = cra_model.copy() model['dimensions']['cap_or_cur']['join_column'] = 'lala' cube = Cube(sqla_engine, 'cra', model) cube.facts()
def cube(sqla_engine, cra_model, load_fixtures): return Cube(sqla_engine, 'cra', cra_model)