示例#1
0
文件: etl.py 项目: sunxy1988/etlpy
 def process(self, generator):
     if generator is None:
         return self.generate(None);
     else:
         if self.MergeType == 'Append':
             return extends.Append(generator, self.process(None));
         elif self.MergeType == 'Merge':
             return extends.Merge(generator, self.process(None));
         else:
             return extends.Cross(generator, self.generate)
示例#2
0
def EtlGE(etl, data):
    subetl = modules[etl.ETLSelector];
    index = etl.Tool.AllETLTools.index(etl)

    def checkname(item, name):
        if hasattr(item, "Name") and item.Name == name:
            return True;
        return False;

    tools = extends.Append((r for r in etl.Tool.AllETLTools[:index] if checkname(r, etl.Insert)),
                           (r for r in subetl.AllETLTools if not checkname(r, etl.Insert)))
    for r in subetl.__generate__(tools):
        yield r;
示例#3
0
    def __generate__(self, tools, generator=None, execute=False):
        for tool in tools:
            if tool.Group == 'Generator':
                if generator is None:
                    generator = tool.Func(tool, None);
                else:
                    if tool.MergeType == 'Append':
                        generator = extends.Append(generator, tool.Func(tool, None));
                    elif tool.MergeType == 'Merge':
                        generator = extends.MergeAll(generator, tool.Func(tool, None));
                    elif tool.MergeType == 'Cross':
                        generator = extends.Cross(generator, tool.Func, tool)
            elif tool.Group == 'Transformer':
                generator = transform(tool, generator);
            elif tool.Group == 'Filter':
                generator = filter(tool, generator);
            elif tool.Group == 'Executor' and execute:
                generator = tool.Func(tool, generator);

        return generator;