def test_nested_agg(self): imps = Table.from_tag(IMPS) results = select(imps.ad_id, imps.date, imps.cpm_millis, where=imps.date > '2014-01-22') sum_millis = {} for ad_id, dt, millis in results: key = str(ad_id) + dt if key not in sum_millis: sum_millis[key] = [0, 0] sum_millis[key][0] += millis sum_millis[key][1] += 1 results.purge() newtab = select(imps.ad_id, imps.date, h_sum(imps.cpm_millis), h_count(), where=imps.date > '2014-01-22', nest=True) results = select(*star(newtab), where=newtab) self.assertGreater(len(list(results)), 0) for ad_id, dt, millis, count in results: ad_tup = sum_millis[str(ad_id) + dt] self.assertEqual(millis, ad_tup[0]) self.assertEqual(count, ad_tup[1]) results.purge()
def test_overflow(self): from itertools import izip imps = Table.from_tag(IMPS) fly_results = select(imps.date, h_sum(imps.impression), where=imps, order_by=imps.date) nest_tab = select(imps.date, h_sum(imps.impression), where=imps, nest=True) nest_results = select(*star(nest_tab), where=nest_tab, order_by=0) for ((fdate, fimps), (ndate, nimps)) in izip(fly_results, nest_results): self.assertEqual(fdate, ndate) self.assertEqual(fimps, nimps)
def test_nested_agg(self): imps = Table.from_tag(IMPS) results = select(imps.ad_id, imps.date, imps.cpm_millis, where=imps.date > '2014-01-22') sum_millis = {} for ad_id, dt, millis in results: key = str(ad_id) + dt if key not in sum_millis: sum_millis[key] = [0, 0] sum_millis[key][0] += millis sum_millis[key][1] += 1 newtab = select(imps.ad_id, imps.date, h_sum(imps.cpm_millis), h_count(), where=imps.date > '2014-01-22', nest=True) results = select(*star(newtab), where=newtab) self.assertGreater(len(list(results)), 0) for ad_id, dt, millis, count in results: ad_tup = sum_millis[str(ad_id) + dt] self.assertEqual(millis, ad_tup[0]) self.assertEqual(count, ad_tup[1])