Ejemplo n.º 1
0
 ops.RegexSearch:
 _regex_search,
 ops.RegexExtract:
 _regex_extract,
 ops.RegexReplace:
 _regex_replace,
 ops.GroupConcat:
 _reduction('STRING_AGG'),
 ops.IfNull:
 fixed_arity('IFNULL', 2),
 ops.Cast:
 _cast,
 ops.StructField:
 _struct_field,
 ops.ArrayCollect:
 unary('ARRAY_AGG'),
 ops.ArrayConcat:
 _array_concat,
 ops.ArrayIndex:
 _array_index,
 ops.ArrayLength:
 unary('ARRAY_LENGTH'),
 ops.HLLCardinality:
 _reduction('APPROX_COUNT_DISTINCT'),
 ops.Log:
 _log,
 ops.Sign:
 unary('SIGN'),
 ops.Modulus:
 fixed_arity('MOD', 2),
 ops.Date:
Ejemplo n.º 2
0
    ops.StringAscii: _string_ascii,
    ops.StringFind: _string_find,
    ops.StrRight: _string_right,
    ops.Repeat: fixed_arity('REPEAT', 2),
    ops.RegexSearch: _regex_search,
    ops.RegexExtract: _regex_extract,
    ops.RegexReplace: _regex_replace,

    ops.GroupConcat: fixed_arity('STRING_AGG', 2),

    ops.IfNull: fixed_arity('IFNULL', 2),
    ops.Cast: _cast,

    ops.StructField: _struct_field,

    ops.ArrayCollect: unary('ARRAY_AGG'),
    ops.ArrayConcat: _array_concat,
    ops.ArrayIndex: _array_index,
    ops.ArrayLength: unary('ARRAY_LENGTH'),

    # BigQuery doesn't have these operations built in.
    # ops.ArrayRepeat: _array_repeat,
    # ops.ArraySlice: _array_slice,
    ir.Literal: _literal,
})

_invalid_operations = {
    ops.Translate,
    ops.FindInSet,
    ops.Capitalize,
    ops.IsNan,
Ejemplo n.º 3
0
    ops.StringAscii: _string_ascii,
    ops.StringFind: _string_find,
    ops.StrRight: _string_right,
    ops.Repeat: fixed_arity('REPEAT', 2),
    ops.RegexSearch: _regex_search,
    ops.RegexExtract: _regex_extract,
    ops.RegexReplace: _regex_replace,

    ops.GroupConcat: fixed_arity('STRING_AGG', 2),

    ops.IfNull: fixed_arity('IFNULL', 2),
    ops.Cast: _cast,

    ops.StructField: _struct_field,

    ops.ArrayCollect: unary('ARRAY_AGG'),
    ops.ArrayConcat: _array_concat,
    ops.ArrayIndex: _array_index,
    ops.ArrayLength: unary('ARRAY_LENGTH'),

    ops.HLLCardinality: _reduction('APPROX_COUNT_DISTINCT'),
    ops.Log: _log,
    ops.Sign: unary('SIGN'),
    ops.Modulus: fixed_arity('MOD', 2),

    ops.Date: unary('DATE'),

    # BigQuery doesn't have these operations built in.
    # ops.ArrayRepeat: _array_repeat,
    # ops.ArraySlice: _array_slice,
    ops.Literal: _literal,
Ejemplo n.º 4
0
def _round(translator, expr):
    op = expr.op()
    arg, digits = op.args

    arg_formatted = translator.translate(arg)

    if digits is not None:
        digits_formatted = translator.translate(digits)
        return 'bround({}, {})'.format(arg_formatted, digits_formatted)
    return 'bround({})'.format(arg_formatted)


_operation_registry = impala_compiler._operation_registry.copy()
_operation_registry.update({
    ops.IsNan:
    unary('isnan'),
    ops.IfNull:
    fixed_arity('ifnull', 2),
    ops.StructField:
    _struct_field,
    ops.MapValueForKey:
    _map_value_for_key,
    ops.ArrayLength:
    unary('size'),
    ops.Round:
    _round,
    ops.HLLCardinality:
    _reduction('approx_count_distinct'),
    ops.StrRight:
    fixed_arity('right', 2),
    ops.StringSplit:
Ejemplo n.º 5
0
    ops.RegexSearch:
    _regex_search,
    ops.RegexExtract:
    _regex_extract,
    ops.RegexReplace:
    _regex_replace,
    ops.GroupConcat:
    fixed_arity('STRING_AGG', 2),
    ops.IfNull:
    fixed_arity('IFNULL', 2),
    ops.Cast:
    _cast,
    ops.StructField:
    _struct_field,
    ops.ArrayCollect:
    unary('ARRAY_AGG'),
    ops.ArrayConcat:
    _array_concat,
    ops.ArrayIndex:
    _array_index,
    ops.ArrayLength:
    unary('ARRAY_LENGTH'),
    ops.Log:
    _log,
    ops.Modulus:
    fixed_arity('MOD', 2),
    ops.Date:
    unary('DATE'),

    # BigQuery doesn't have these operations built in.
    # ops.ArrayRepeat: _array_repeat,
Ejemplo n.º 6
0
def _extract_epoch_seconds(translator, expr):
    return 'CAST({} AS BIGINT)'.format(
        unary('unix_timestamp')(translator, expr))
Ejemplo n.º 7
0
 ops.StringReplace: fixed_arity('REPLACE', 3),
 ops.StringSplit: fixed_arity('SPLIT', 2),
 ops.StringConcat: _string_concat,
 ops.StringJoin: _string_join,
 ops.StringAscii: _string_ascii,
 ops.StringFind: _string_find,
 ops.StrRight: _string_right,
 ops.Repeat: fixed_arity('REPEAT', 2),
 ops.RegexSearch: _regex_search,
 ops.RegexExtract: _regex_extract,
 ops.RegexReplace: _regex_replace,
 ops.GroupConcat: fixed_arity('STRING_AGG', 2),
 ops.IfNull: fixed_arity('IFNULL', 2),
 ops.Cast: _cast,
 ops.StructField: _struct_field,
 ops.ArrayCollect: unary('ARRAY_AGG'),
 ops.ArrayConcat: _array_concat,
 ops.ArrayIndex: _array_index,
 ops.ArrayLength: unary('ARRAY_LENGTH'),
 ops.HLLCardinality: _reduction('APPROX_COUNT_DISTINCT'),
 ops.Log: _log,
 ops.Sign: unary('SIGN'),
 ops.Modulus: fixed_arity('MOD', 2),
 ops.Date: unary('DATE'),
 # BigQuery doesn't have these operations built in.
 # ops.ArrayRepeat: _array_repeat,
 # ops.ArraySlice: _array_slice,
 ops.Literal: _literal,
 ops.Arbitrary: _arbitrary,
 ops.TimestampTruncate: _truncate('TIMESTAMP', _timestamp_units),
 ops.DateTruncate: _truncate('DATE', _date_units),