zoom.sqltools module

zoom.sql

sql utilities

zoom.sqltools.setup_test()

setup test

zoom.sqltools.summarize(table, dimensions, metrics=None)

summarize data

>>> from zoom.records import Record, RecordStore
>>> from decimal import Decimal
>>> db = setup_test()
>>> class Person(Record): pass
>>> class People(RecordStore): pass
>>> people = People(db, Person)
>>> put = people.put
>>> id = put(Person(name='Sam', age=25, kids=1, salary=Decimal('40000')))
>>> id = put(Person(name='Sally', age=55, kids=4, salary=Decimal('80000')))
>>> id = put(Person(name='Bob', age=25, kids=2, salary=Decimal('70000')))
>>> id = put(Person(name='Jane', age=25, kids=2, salary=Decimal('50000')))
>>> id = put(Person(name='Alex', age=25, kids=3, salary=Decimal('50000')))
>>> print(people)
person
_id name  age kids salary
--- ----- --- ---- ------
  1 Sam    25    1 40,000
  2 Sally  55    4 80,000
  3 Bob    25    2 70,000
  4 Jane   25    2 50,000
  5 Alex   25    3 50,000
5 person records
>>> print(summarize('person', ['age']))
select "*" age, count(*) n from person group by 1
union select age age, count(*) n from person group by 1
>>> print(db(summarize('person', ['age'])))
age n
--- -
25  4
55  1
*   5
>>> print(db(summarize('person', ['age','kids'])))
age kids n
--- ---- -
25  1    1
25  2    2
25  3    1
25  *    4
55  4    1
55  *    1
*   1    1
*   2    2
*   3    1
*   4    1
*   *    5
>>> print(db(summarize('person', ['age','kids'], ['salary'])))
age kids n salary
--- ---- - -------
25  1    1  40,000
25  2    2 120,000
25  3    1  50,000
25  *    4 210,000
55  4    1  80,000
55  *    1  80,000
*   1    1  40,000
*   2    2 120,000
*   3    1  50,000
*   4    1  80,000
*   *    5 290,000
>>> people.zap()
>>> print(people)
Empty list