Example #1
0
 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
Example #2
0
 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)
Example #3
0
 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)
Example #4
0
 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()
Example #5
0
 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))
Example #6
0
 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'
Example #7
0
 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)
Example #8
0
 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)
Example #9
0
 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)
Example #10
0
 def setUp(self):
     super(ParserTestCase, self).setUp()
     model = load_json_fixture('models/simple_model.json')
     self.cube = Cube(self.engine, 'simple', model)
Example #11
0
 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)
Example #12
0
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)
Example #14
0
 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()
Example #15
0
def cube(sqla_engine, cra_model, load_fixtures):
    return Cube(sqla_engine, 'cra', cra_model)