def hashrightjoin(left, right, key=None, lkey=None, rkey=None, missing=None, cache=True, lprefix=None, rprefix=None): """ Alternative implementation of :func:`rightjoin`, where the join is executed by constructing an in-memory lookup for the left hand table, then iterating over rows from the right hand table. May be faster and/or more resource efficient where the left table is small and the right table is large. .. versionadded:: 0.5 .. versionchanged:: 0.16 Added support for caching data from left hand table (only available when `key` is given). .. versionchanged:: 0.24 Added support for left and right tables with different key fields via the `lkey` and `rkey` arguments. """ lkey, rkey = keys_from_args(left, right, key, lkey, rkey) return HashRightJoinView(left, right, lkey, rkey, missing=missing, cache=cache, lprefix=lprefix, rprefix=rprefix)
def hashlookupjoin(left, right, key=None, lkey=None, rkey=None, missing=None, lprefix=None, rprefix=None): """Alternative implementation of :func:`petl.transform.joins.lookupjoin`, where the join is executed by constructing an in-memory lookup for the right hand table, then iterating over rows from the left hand table. May be faster and/or more resource efficient where the right table is small and the left table is large. Left and right tables with different key fields can be handled via the `lkey` and `rkey` arguments. """ lkey, rkey = keys_from_args(left, right, key, lkey, rkey) return HashLookupJoinView(left, right, lkey, rkey, missing=missing, lprefix=lprefix, rprefix=rprefix)
def hashrightjoin(left, right, key=None, lkey=None, rkey=None, missing=None, cache=True, lprefix=None, rprefix=None): """Alternative implementation of :func:`petl.transform.joins.rightjoin`, where the join is executed by constructing an in-memory lookup for the left hand table, then iterating over rows from the right hand table. May be faster and/or more resource efficient where the left table is small and the right table is large. By default data from right hand table is cached to improve performance (only available when `key` is given). Left and right tables with different key fields can be handled via the `lkey` and `rkey` arguments. """ lkey, rkey = keys_from_args(left, right, key, lkey, rkey) return HashRightJoinView(left, right, lkey, rkey, missing=missing, cache=cache, lprefix=lprefix, rprefix=rprefix)
def hashantijoin(left, right, key=None, lkey=None, rkey=None): """Alternative implementation of :func:`petl.transform.joins.antijoin`, where the join is executed by constructing an in-memory set for all keys found in the right hand table, then iterating over rows from the left hand table. May be faster and/or more resource efficient where the right table is small and the left table is large. Left and right tables with different key fields can be handled via the `lkey` and `rkey` arguments. """ lkey, rkey = keys_from_args(left, right, key, lkey, rkey) return HashAntiJoinView(left, right, lkey, rkey)
def hashantijoin(left, right, key=None, lkey=None, rkey=None): """ Alternative implementation of :func:`antijoin`, where the join is executed by constructing an in-memory set for all keys found in the right hand table, then iterating over rows from the left hand table. May be faster and/or more resource efficient where the right table is small and the left table is large. .. versionadded:: 0.5 .. versionchanged:: 0.24 Added support for left and right tables with different key fields via the `lkey` and `rkey` arguments. """ lkey, rkey = keys_from_args(left, right, key, lkey, rkey) return HashAntiJoinView(left, right, lkey, rkey)