コード例 #1
0
def to_ruby(self, schema):
    term = FirstOp("first", self.term).partial_eval()
    value = term.to_ruby(schema)

    if isinstance(value.frum, CoalesceOp):
        return CoalesceOp(
            "coalesce",
            [StringOp("string", t).partial_eval()
             for t in value.frum.terms]).to_ruby(schema)

    if value.type == BOOLEAN:
        return Ruby(miss=self.term.missing().partial_eval(),
                    type=STRING,
                    expr=value.expr + ' ? "T" : "F"',
                    frum=self)
    elif value.type == INTEGER:
        return Ruby(miss=self.term.missing().partial_eval(),
                    type=STRING,
                    expr="String.valueOf(" + value.expr + ")",
                    frum=self)
    elif value.type == NUMBER:
        return Ruby(miss=self.term.missing().partial_eval(),
                    type=STRING,
                    expr=expand_template(TO_STRING, {"expr": value.expr}),
                    frum=self)
    elif value.type == STRING:
        return value
    else:
        return Ruby(miss=self.term.missing().partial_eval(),
                    type=STRING,
                    expr=expand_template(TO_STRING, {"expr": value.expr}),
                    frum=self)
コード例 #2
0
def to_ruby(self, schema):
    if self.var == ".":
        return "_source"
    else:
        if self.var == "_id":
            return Ruby(
                type=STRING,
                expr=
                'doc["_uid"].value.substring(doc["_uid"].value.indexOf(\'#\')+1)',
                frum=self)

        columns = schema.values(self.var)
        acc = []
        for c in columns:
            varname = c.es_column
            frum = Variable(c.es_column)
            q = quote(varname)
            acc.append(
                Ruby(miss=frum.missing(),
                     type=c.type,
                     expr="doc[" + q + "].values",
                     frum=frum,
                     many=True))

        if len(acc) == 0:
            return NULL.to_ruby(schema)
        elif len(acc) == 1:
            return acc[0]
        else:
            return CoalesceOp("coalesce", acc).to_ruby(schema)
コード例 #3
0
def to_ruby(self, schema):
    term = self.term.to_ruby(schema)

    if isinstance(term.frum, CoalesceOp):
        return CoalesceOp("coalesce",
                          [t.frum for t in term.frum.terms]).to_ruby(schema)

    if term.many:
        return Ruby(miss=term.miss,
                    type=term.type,
                    expr="(" + term.expr + ")[0]",
                    frum=term.frum).to_ruby(schema)
    else:
        return term
コード例 #4
0
ファイル: expressions.py プロジェクト: nknick99/MySQL-to-S3
def to_painless(self, schema):
    term = self.term.to_painless(schema)

    if isinstance(term.frum, CoalesceOp):
        return CoalesceOp("coalesce", [FirstOp("first", t.partial_eval().to_painless(schema)) for t in term.frum.terms]).to_painless(schema)

    if term.many:
        return Painless(
            miss=term.miss,
            type=term.type,
            expr="(" + term.expr + ")[0]",
            frum=term.frum
        ).to_painless(schema)
    else:
        return term
コード例 #5
0
def to_ruby(self, schema):
    term = FirstOp("first", self.term).partial_eval()
    value = term.to_ruby(schema)

    if isinstance(value.frum, CoalesceOp):
        return CoalesceOp("coalesce", [NumberOp("number", t).partial_eval().to_ruby(schema) for t in value.frum.terms]).to_ruby(schema)

    if value.type == BOOLEAN:
        return Ruby(
            miss=term.missing().partial_eval(),
            type=NUMBER,
            expr=value.expr + " ? 1 : 0",
            frum=self
        )
    elif value.type == INTEGER:
        return Ruby(
            miss=term.missing().partial_eval(),
            type=NUMBER,
            expr=value.expr,
            frum=self
        )
    elif value.type == NUMBER:
        return Ruby(
            miss=term.missing().partial_eval(),
            type=NUMBER,
            expr=value.expr,
            frum=self
        )
    elif value.type == STRING:
        return Ruby(
            miss=term.missing().partial_eval(),
            type=NUMBER,
            expr="Double.parseDouble(" + value.expr + ")",
            frum=self
        )
    elif value.type == OBJECT:
        return Ruby(
            miss=term.missing().partial_eval(),
            type=NUMBER,
            expr="((" + value.expr + ") instanceof String) ? Double.parseDouble(" + value.expr + ") : (" + value.expr + ")",
            frum=self
        )
コード例 #6
0
ファイル: expressions.py プロジェクト: yoyogias2011/TUID
def to_es_script(self, schema, many=True):
    if self.var == ".":
        return "_source"
    else:
        if self.var == "_id":
            return EsScript(
                type=STRING,
                expr=
                'doc["_uid"].value.substring(doc["_uid"].value.indexOf(\'#\')+1)',
                frum=self)

        columns = schema.values(self.var)
        acc = []
        for c in columns:
            varname = c.es_column
            frum = Variable(c.es_column)
            q = quote(varname)
            if many:
                acc.append(
                    EsScript(miss=frum.missing(),
                             type=c.jx_type,
                             expr="doc[" + q +
                             "].values" if c.jx_type != BOOLEAN else "doc[" +
                             q + "].value==\"T\"",
                             frum=frum,
                             many=True))
            else:
                acc.append(
                    EsScript(miss=frum.missing(),
                             type=c.jx_type,
                             expr="doc[" + q +
                             "].value" if c.jx_type != BOOLEAN else "doc[" +
                             q + "].value==\"T\"",
                             frum=frum,
                             many=True))

        if len(acc) == 0:
            return NULL.to_es_script(schema)
        elif len(acc) == 1:
            return acc[0]
        else:
            return CoalesceOp("coalesce", acc).to_es_script(schema)
コード例 #7
0
ファイル: expressions.py プロジェクト: yoyogias2011/TUID
def to_es_script(self, schema):
    if isinstance(self.term, Variable):
        columns = schema.values(self.term.var)
        if len(columns) == 1:
            return self.term.to_es_script(schema, many=False)

    term = self.term.to_es_script(schema)

    if isinstance(term.frum, CoalesceOp):
        return CoalesceOp("coalesce", [FirstOp("first", t.partial_eval().to_es_script(schema)) for t in term.frum.terms]).to_es_script(schema)

    if term.many:
        return EsScript(
            miss=term.miss,
            type=term.type,
            expr="(" + term.expr + ")[0]",
            frum=term.frum
        ).to_es_script(schema)
    else:
        return term