def execute(query,condition=None,limit=None,debug=False,just_debug=False): qpe_dict_list=[] qpe_dl=dict() qpe_dl['table']=[] try: query = query.lower() [head,body] = query.split('->') except : print ("Unexpected format. Please stick to this format \nans(x,y)->viewname(x,_,y_)") sys.exit(1) #qpe_dl 'qpe_datalog' is a dictionary as expected by qpe team qpe_dl['result']=head head_cols = get_cols(head) while True: #ptrn = '^(\S*?)\((\S*?)\)' #pattern to find the view in body #match = re.search(ptrn,body) strt = body.find('(') stp = body.find(')') if strt!=-1 and stp !=-1: gv = body[:strt] c_body = gv+'('+body[strt+1:stp]+')' gv_cols = get_cols(c_body) l = find_needed_cols(gv_cols,head_cols,condition) dl = gsm[gv].get_child_dl(needed_cols=l) #dl = gsm[gv].unwrap() #print dl qpe_dl['table'] += dl else : #print("Unable to find body view.Please stick to this format. \nans(x,y)->viewname(x,_,y_)") #sys.exit(1) break body=body[stp+2:] qpe_dl['condition'] =condition qpe_dl['limit']=limit qpe_dl['table']=refine_query(qpe_dl['table']) qpe_dict_list=[qpe_dl] if debug==True: print_qpe_dict_list(qpe_dict_list) if just_debug==True: return " " engine = HybridEngine( postgres={'server': '132.249.238.27', 'port': 5432, 'database': 'bookstore_pr', 'user': '******', 'password': '******'}, asterix={'server': '132.249.238.32', 'port': 19002, 'dataverse': 'bookstore_pr'}, solr={'server': '132.249.238.28', 'port': 8983, 'core': 'bookstore_pr'}) qpe_dict_list=[qpe_dl] print(qpe_dl['table']) return(engine.queryDatalog(qpe_dict_list))
}] datalog = [{ 'result': 'Ans(nodeid, category)', 'table': ['asterix.categoryflat(nodeid, category)'], 'condition': ["category = 'Education;Children & Teens'"], 'limit': '10', }] #engine = HybridEngine() engine = HybridEngine(postgres={ 'server': 'localhost', 'port': 5432, 'database': 'SQLBook', 'user': '******', 'password': '******' }, asterix={ 'server': 'localhost', 'port': 19002, 'dataverse': 'TinySocial' }, solr={ 'server': 'localhost', 'port': 8983, 'core': 'bookstore' }) #result = engine.queryDatalog(datalog, debug=True) result = engine.queryDatalog(datalog, loglevel=logging.DEBUG) print(result)
'limit': '10' } ] # multi source aggregation datalog = [ { 'result': 'Ans(lvl1, total_orders, total_value)', 'table': ['postgres.orders(oid, _, _, _, _, _, _, _, _, _, _)', 'postgres.orderlines(olid, oid, pid, _, date, _, nunits, price)', 'postgres.products(pid, _, _, _, _, _, asin, nodeid)', 'asterix.CategoryLevel(nodeid, lvl1, _, _, _, _)', ], 'condition': ['pid > 1000', "date > '2015-01-01'"], 'groupby': { 'key': 'lvl1', 'aggregation': ['count(oid, total_orders)', 'sum(price, total_value)']}, 'limit': '10' } ] # union # view engine = HybridEngine() #engine = HybridEngine( # postgres= {'server': 'localhost', 'port': 5432, 'database': 'SQLBook'}, # asterix= {'server': 'localhost', 'port': 19002}, # solr= {'server': 'localhost', 'port': 8983}) #result = engine.queryDatalog(datalog, debug=True) result = engine.queryDatalog(datalog) print(result)
from hybrid_engine import HybridEngine engine = HybridEngine() engine.execute('drop table RecommendationColaborative')
gsm[head_view].join_col_dict = join_cols_matcher(body_cols_list) #print gsm[head_view].mapped_to #print "DONE." engine = HybridEngine(postgres={ 'server': 'localhost', 'port': 5432, 'database': 'SQLBook', 'user': '******', 'password': '******' }, asterix={ 'server': 'localhost', 'port': 19002, 'dataverse': 'TinySocial' }, solr={ 'server': 'localhost', 'port': 8983, 'core': 'bookstore' }) def define_virtual_view_in_source(query): engine.execute(query) #print("##define virtual view ")