def test_lean_by_with_summary(): assert lean_projection(by(t.x, total=t.y.sum()))._child.isidentical( t[['x', 'y']], ) tt = t[['x', 'y']] result = lean_projection(by(t.x, a=t.y.sum(), b=t.z.sum())[['x', 'a']]) expected = Projection( By(Field(tt, 'x'), summary(a=sum(Field(tt, 'y')))), ('x', 'a'), ) assert result.isidentical(expected)
def test_indexing(): t = symbol('t', 'var * {name: string, amount: int, id: int}') assert t[['amount', 'id']] == projection(t, ['amount', 'id']) assert t['amount'].isidentical(Field(t, 'amount'))