Exemplo n.º 1
0
def broadcast_collect(expr,
                      broadcastable=Broadcastable,
                      want_to_broadcast=WantToBroadcast,
                      no_recurse=None):
    """ Collapse expression down using Broadcast - Tabular cases only

    Expressions of type Broadcastables are swallowed into Broadcast
    operations

    >>> t = symbol('t', 'var * {x: int, y: int, z: int, when: datetime}')
    >>> expr = (t.x + 2*t.y).distinct()

    >>> broadcast_collect(expr)
    distinct(Broadcast(_children=(t,), _scalars=(t,), _scalar_expr=t.x + (2 * t.y)))

    >>> from blaze import exp
    >>> expr = t.x + 2 * exp(-(t.x - 1.3) ** 2)
    >>> broadcast_collect(expr)
    Broadcast(_children=(t,), _scalars=(t,), _scalar_expr=t.x + (2 * (exp(-((t.x - 1.3) ** 2)))))
    """
    if (isinstance(expr, want_to_broadcast) and
            iscollection(expr.dshape)):
        leaves = leaves_of_type(broadcastable, expr)
        expr = broadcast(expr, sorted(leaves, key=str))

    if no_recurse is not None and isinstance(expr, no_recurse):
        return expr

    # Recurse down
    children = (
        broadcast_collect(i, broadcastable, want_to_broadcast, no_recurse)
        for i in expr._inputs
    )
    return expr._subs({e: c for e, c in zip(expr._inputs, children)})
Exemplo n.º 2
0
def post_compute(expr, query, scope=None):
    result = query.context.sql(sql_string(query.query))
    if iscollection(expr.dshape) and isscalar(expr.dshape.measure):
        result = result.map(lambda x: x[0])
    return result.collect()
Exemplo n.º 3
0
def post_compute(expr, query, scope=None):
    result = query.context.sql(sql_string(query.query))
    if iscollection(expr.dshape) and isscalar(expr.dshape.measure):
        result = result.map(lambda x: x[0])
    return result.collect()